Web应用和web.xml
JSP、Servlet、Listener和Filter等都必须运行在Web应用中,因此应该熟悉如何构建一个Web应用。
1. 构建Web应用
徒手创建一个Web应用,如下步骤:
- 在任意目录下创建一个文件夹,并命名为webDemo,将其作为一个Web应用;
- 在第一步创建的文件夹内创建一个WEB-INF文件夹(注意大小写,这里区分大小写);
- 进入Tomcat或其他的Web容器内,找到任何一个Web应用,将Web应用的WEB-INF下的web.xml文件复制到第2步创建的WEB-INF文件夹下。(对于Tomcat而言,其webapps目录下有大量的示例Web应用)
- 修改复制后的Web.xml文件,将该文件修改成只有一个根元素的XML文件。修改后的web.xml文件代码如下:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1" metadata-complete="true"> </web-app>
- 在第2步创建的WEB-INF路径下,新建两个文件夹:classes和lib,这两个文件夹的作用完全相同:都是用于保存Web应用所需要的Java类,区别在于classes保存单个*.class文件;而lib保存打包后的JAR文件;
- 经过以上步骤,就创建了一个空的Web应用。将该Web应用复制到Tomcat的webapps路径下,该Web应用将可以自动部署在Tomcat中,而后就可以通过浏览器来访问这些页面了。
经过以上步骤,不难发现,Web应用文件结构如下:
<webDemo> - Web应用的名称,可更改
|- WEB-INF
| |-classes
| |-lib
| |-web.xml
|- test.jsp - 此处可以存放任意多个JSP页面
将上面的webDemo应用复制到Tomcat的webapps目录下(部署完成),启动Tomcat服务器,使用浏览器访问http://localhost:8888/webDemo/test.jsp,如图1所示,则说明Web应用构建成功,并已经将其成功部署到Tomcat中。
2. 配置描述符web.xml
位于Web应用的WEB-INF路径下的web.xml被称为配置描述符。
web.xml文件对于Java Web应用非常重要,在Servlet 2.5规范之前,每个Java Web应用都必须包含一个web.xml文件,并且必须放在WEB-INF路径下。
从Servlet 3.0开始,WEB-INF路径下的web.xml文件不在是必须的,但通常还是建议保留该配置文件
对于Java Web应用而言,WEB-INF是一个特殊的文件夹,Web容器会包含该文件夹下的内容,客户端浏览器无法访问WEB-INF路径下的任何内容。
在Servlet 2.5之前,Java Web应用的绝大部分组件通过web.xml文件来配置管理
从Servlet 3.0开始,可以通过注解来配置管理Web组件,因此web.xml文件可以变得更加简洁,也是3.0的简化。
web.xml文件主要负责一下内容:
- 配置JSP
- 配置和管理Servlet
- 配置和管理Listener
- 配置和管理Filter
- 配置标签库
- 配置JSP属性
- 配置和管理JAAS授权认证
- 配置和管理资源引用
- Web应用首页
web.xml文件的根元素是<web-app.../>元素,在3.0规范中,该元素新增了如下的属性:
- metadata-complete:该属性接收true和false两个属性值。当为true时,改Web应用将不会加载注解配置的Web组件。
每一个Web容器都会提供一个系统的web.xml文件,用于描述所有Web应用共同的配置属性。例如:Tomcat的web.xml放在Tomcat的conf路径下,而Jetty的系统web.xml文件放在Jetty的etc路径下,文件名为webdefault.xml