第一个Javaweb应用程序
第一个Javaweb应用程序
一、Javaweb应用程序结构
一个 web 应用程序是由一组 Servlet,HTML 页面,类,以及其它的资源组成的运行在 web 服务器上的完整的应用程序,以一种结构化的有层次的目录形式存在
组成 web 应用程序的这些文件要部署在相应的目录层次中,根目录代表整个 web 应用程序的”根”
通常将 web 应用程序的目录放在 webapps 目录下,在 webapps 目录下的每一个子目录都是一个独立的 web 应用程序,子目录的名字就是 web 应用程序的名字,也就是 web 应用程序的“根”。用户通过 web 应用程序的”根”来访问 web 应用程序中的资源
Servlet 规范中定义了 web 应用程序的目录层次:
两点说明:
①WEB-INF目录下的classes和lib目录都可以存放Java的类文件,在Servlet容器运行时,Web应用程序的类加载器将首先加载classes目录下的,其次才是lib目录下的类。如果这两个目录下存在同名的类,起作用的将是classes目录下的类
②WEB-INF 是一个特殊的目录(所有字母都要大写)。这个目录并不属于Web应用程序可以访问的上下文路径的一部分,对客户端来说,这个目录是不可见的。但该目录下的内容对于Servlet代码是可见的
二、部署并启动 tomcat 服务器
1. 解压 apache-tomcat-6.0.16.zip 到一个非中文目录下
2. 配置一个环境变量. java_home(指向 JDK 安装的根目录) 或 jre_home
3. 通过双击 apache-tomcat-6.0.16\bin 目录下的 startup.bat, 启动服务器
4. 可以在浏览器中输入 localhost:8080 来检验 Tomcat 安装是否正确.
5. 若已经启动了一个 Tomcat 应用, 若再启动同一个 Tomcat 应用, 会抛出异常: java.net.BindException: Address already in use: JVM_Bind:8080,因为端口已经被占用了,可以通过修改 server.xml 文件中的配置信息来修改 Tomcat 服务器的端口号:
<Connector port="8989" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
把 port 的值改为其他的端口号即可.
6. 为了可以在任意目录下启动 Tomcat 服务器,可以把 D:\apache-tomcat-6.0.16\bin 添加到 path 下添加成功后, 若在任意目录下通过 startup 启动 Tomcat 服务器, 会有提示:
The CATALINA_HOME environment variable is not defined correctly This environment variable is needed to run this program
即: 要求设置 CATALINA_HOME 这个环境变量
7. 设置 CATALINA_HOME 环境变量:通过阅读 startup.bat 批处理文件, 可知 CATALINA_HOME 环境变量下有一个 bin 目录,而 bin 目录又有一个 catalina.bat 文件, 由此可知 CATALINA_HOME 指向的应该是 Tomcat 安装的根目录,于是把 Tomcat 的根目录设为CATALINA_HOME 环境变量.,此时即可以在 任意 目录下通过 startup.bat、shutdown.bat 启动、关闭 Tomcat 服务器.
8.继续阅读 startup.bat 文件, 发现启动 tomcat 服务器的是 catalina.bat 文件,在命令行窗口直接输入 catalina, 提示如下:
commands:
debug Start Catalina in a debugger
debug -security Debug Catalina with a security manager
jpda start Start Catalina under JPDA debugger
run Start Catalina in the current window
run -security Start in the current window with security manager
start Start Catalina in a separate window
start -security Start in a separate window with security manager
stop Stop Catalina
version What version of tomcat are you running?
catalina 命令有如上的可选参数.
run: 在 catalina 同一个命令行窗口下启动服务器.
start: 开启一个新窗口启动服务器
stop: 关闭服务器.
三、第一个 WEB 应用程序开发, 并部署到 Tomcat 服务器下运行
1. 在 Eclipse 新建一个 Java Project
2. 在 Java 项目下创建 WEB 开发的目录结构
-WebContent
-WEB-INF
-classes (编译后的 class 文件必须放在该目录下.)
-lib
-web.xml (从 apache-tomcat-6.0.16\webapps\docs\WEB-INF 中复制过来,可以不做修改)
html 页面
JSP 页面
图片...
3. 在 src 下新建一个 Person 类
package com.atguigu.test;
public class Person {
public String getPersonInfo(){
return "person info...";
}
}
4. 手工的 Person 类对应的 class 文件(含包)复制到 classes 目录下,可以通过修改默认的输出目录达到自动把编译好的 class 放到 classes 目录下
5. 在 WebContent 目录下新建一个 JSP 文件:
<%@page import="me.test.Person"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%
Person person = new Person();
System.out.print(person.getPersonInfo());
%>
6. 把 WebContent 目录复制到 Tomcat 的 webapps 目录下, 并改名为: helloworld
7. 在浏览器的地址栏中输入: http://localhost:8989/helloworld/hello.jsp 即可看到命令行的打印信息
四、配置任意目录下的Web应用程序
在Web服务器中可以配置虚拟目录,而虚拟目录所对应的真实目录可以在任何路径下。
在Tomcat服务器中,主要在 XML 配置文件中通过<Context>元素的设置来完成的。一个<Context>元素就表示一个Web应用程序,运行在特定的虚拟主机中。
<Context>元素是<Host>元素的子元素,可以在conf\server.xml文件中设置Context元素。
<Context>元素的常用属性

<Context>元素是<Host>元素的子元素,可以在conf\server.xml文件中设置Context元素。
使用docBase属性指定Web应用程序的真实路径。将属性reloadable设置为true,Tomcat在运行时会自动监测Servlet类的改动,如果发现有类被更新,Tomcat服务器将自动重新加载该Web应用程序。这样,在开发时,就不需要频繁重启Tomcat了
还可以在conf目录下依次创建Catalina\localhost目录,然后在localhost目录下为 test 这个Web应用程序建立 test.xml 文件,编辑这个文件输入以下内容 
从Tomcat 5开始,不建议直接在server.xml文件中配置<Context>元素,因为server.xml文件作为Tomcat的主要配置文件,一旦Tomcat启动后,将不会再读取这个文件,因此无法在Tomcat服务器启动时发布Web应用程序。如果在其他地方配置<Context>元素,那么在Tomcat运行时,也可以发布Web应用程序。
从Tomcat 5.5开始,在\conf\Catalina\localhost目录下创建XML配置文件来配置Web应用程序,Tomcat将以XML文件的文件名将作为Web应用程序的上下文路径,而不理会在<Context>元素的path属性中指定的上下文路径是什么。由于Tomcat 5.5之后的版本是以XML配置文件的文件名作为Web应用程序的上下文路径的,因此在配置<Context>元素时,可以不使用path属性。
因此,我们可以在 conf 目录下依次创建 catalina\localhost 目录,然后在 localhost 目录下为 test 这个Web应用程序建立 test.xml 文件,编辑这个文件输入以下内容
<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="E:\\Java\\Source\\hello\\java-1\\firstWebApp\\WebContent" reloadable="true"/>
如果,您对我的这篇博文有什么疑问,欢迎评论区留言,大家互相讨论学习。
如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】。
如果,您希望更容易地发现我的新博客,不妨点击一下左下角的【关注我】。
如果,您对我的博文感兴趣,可以关注我的后续博客,我是【AlbertRui】。转载请注明出处和链接地址,欢迎转载,谢谢!
第一个Javaweb应用程序的更多相关文章
- JavaWeb学习系列——第一个JavaWeb程序
创建JavaWeb项目 Eclipse中新建一个Dynamic Web Project 指定项目名称.依赖环境 勾选生成web.xml选项 更改项目编译输出目录,项目右键 ->propertie ...
- 第一个JavaWeb程序
转载 第一个JavaWeb程序 JavaWeb学习总结第二篇—第一个JavaWeb程序 最近我在学院工作室学习并加入到研究生的项目中,在学长学姐的带领下,进入项目实践中,为该项目实现一个框架(用已有框 ...
- JavaWeb学习总结第二篇--第一个JavaWeb程序
JavaWeb学习总结第二篇—第一个JavaWeb程序 最近我在学院工作室学习并加入到研究生的项目中,在学长学姐的带领下,进入项目实践中,为该项目实现一个框架(用已有框架进行改写).于是我在这里记录下 ...
- Intellij Idea创建的第一个JavaWeb程序
第一个JavaWeb程序 1. 创建 2. 目录结构 src目录用于放java源文件,web目录用于放web资源,WEB-INF是Java web应用固定的存放配置及类库的目录,index.jsp是我 ...
- 手把手教你写一个RN小程序!
时间过得真快,眨眼已经快3年了! 1.我的第一个App 还记得我14年初写的第一个iOS小程序,当时是给别人写的一个单机的相册,也是我开发的第一个完整的app,虽然功能挺少,但是耐不住心中的激动啊,现 ...
- 用c-free 5写一个入门的程序
本文记录了在windows系统中使用C-FREE 5新建一个Hello HoverTree程序的步骤. 安装好C-Free 5之后,打开.新建一个工程: 附C-Free 5下载:http://hove ...
- 字符串混淆技术应用 设计一个字符串混淆程序 可混淆.NET程序集中的字符串
关于字符串的研究,目前已经有两篇. 原理篇:字符串混淆技术在.NET程序保护中的应用及如何解密被混淆的字符串 实践篇:字符串反混淆实战 Dotfuscator 4.9 字符串加密技术应对策略 今天来 ...
- 第一个C语言程序
从第一个C语言程序了解C语言 了解关键字 了解函数 注释 C语言的执行流程 标识符 C语言的学习重难点 从第一个C语言程序了解C语言 上图是一个在控制台上显示“Hello, World!”的C语言源代 ...
- 第六章第一个linux个程序:统计单词个数
第六章第一个linux个程序:统计单词个数 从本章就开始激动人心的时刻——实战,去慢慢揭开linux神秘的面纱.本章的实例是统计一片文章或者一段文字中的单词个数. 第 1 步:建立 Linu x 驱 ...
随机推荐
- 统计学习方法(李航)朴素贝叶斯python实现
朴素贝叶斯法 首先训练朴素贝叶斯模型,对应算法4.1(1),分别计算先验概率及条件概率,分别存在字典priorP和condP中(初始化函数中定义).其中,计算一个向量各元素频率的操作反复出现,定义为c ...
- 探究netty的观察者设计模式
javadoc笔记点 观察者的核心思想就是,在适当的时机回调观察者的指定动作函数 我们知道,在使用netty创建channel时,一般都是把这个channel设置成非阻塞的模式,这意味着什么呢? 意味 ...
- 小白学python-day02-二进制、计算机单位、编程语言分类介绍、
今天是第二天,以下是学习内容总结. 但行努力,莫问前程. ----------------------------------------------------------------------- ...
- kubernetes 1.15.1 高可用部署 -- 从零开始
这是一本书!!! 一本写我在容器生态圈的所学!!! 重点先知: 1. centos 7.6安装优化 2. k8s 1.15.1 高可用部署 3. 网络插件calico 4. dashboard 插件 ...
- python查漏补缺 --- 模块及异常
1.方法定义好之后,如,def test(x) : ,此时将方法名赋值给一个新的变量,那么该变量等同于方法,可以具备test方法内部的全部功能2.导包的时候,可以使用as关键字在不同的名称下导入模块或 ...
- IrisSkin2.dll 添加皮肤
使用说明:把控件拖到你的form上,只需一行代码,即可实现整个form包括其所有控件的皮肤的更换,总共有几十套皮肤供使用,非常方便.省去你设计开发软件皮肤系统的时间和精力.全部源代码就一行: skin ...
- Java匹马行天下之JavaWeb核心技术——JSP(续一)
十二.JSP表单处理 我们在浏览网页的时候,经常需要向服务器提交信息,并让后台程序处理.浏览器中使用 GET 和 POST 方法向服务器提交数据. GET 方法 GET方法将请求的编码信息添加在网 ...
- maven添加oracle驱动包
问题描述 项目用到了oracle,但由于oracle商业版权问题,maven在中心资源库直接下载jar包是要收费的 解决方法 第一步: 下载ojdbc6.jar 第二步: 将下载的jar放入项目的li ...
- Netty源码解析---服务端启动
Netty源码解析---服务端启动 一个简单的服务端代码: public class SimpleServer { public static void main(String[] args) { N ...
- OV SSL证书有哪些功能?网站安装OV SSL证书的好处
OV SSL证书英文名称为Organization Validation SSL Certificate,申请OV SSL证书需要审核申请者对域名是否拥有控制权,同时审核申请者是否为一个合法登记.真实 ...