在传统的java web项目中不可避免的是要配置web.xml文件,在应用启动时web.xml用来初始化工程配置信息,其重要性就不言而喻了。
既然是xml文件,它就遵循一些xml文件的书写规格,这里就不说明了,web.xml所对应的xml Schema文件中定义了多少种标签元素,web.xml中就可以出现它所定义的标签元素,也就具备哪些特定的功能。web.xml文件的根元素为<web-app>。
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
//这里是我们所写的内容
</web-app>
web.xml常用的会来配置项目的描述、名称、图表等基本信息,还有context-param,filter,filter-mapping,listener,session-config,servlet,welcome-file-list,error-page等。
配置基本信息
<display-name>demo</display-name><!-- 项目名称 -->
<description>This is a demo</description> <!-- 项目描述 -->
<icon><!-- 图表icon -->
<small-icon>/images/small.gif</small-icon>
<large-icon>/images/large.gir</large-icon>
</icon>
context-param
<context-param>
<param-name>config</param-name>
<param-value>/WEB-INF/server.properties</param-value>
</context-param>
context-param元素含有一对参数名和参数值,用作应用的servlet上下文初始化参数。参数名在整个Web应用中必须是惟一的。
context-param 元素用来设定web应用的环境参数(context),它包含两个子元素: param-name和param-value.
<param-name>参数名称</param-name> 设定Context名称
<param-value>值</param-value> 设定Context名称的值 </context-param>
param-value值的获取
在JSP网页中可以使用下列方法来取得:${initParam.param_name}
在Servlet可以使用下列方法来获得:
String param_name=getServletContext().getInitParamter(“param_name”);
filter AND filter-mapping
filter元素用于指定Web容器中的过滤器
filter-mapping元素用来声明Web应用中的filter映射。
filter 和 filter-mapping 是一组使用的两个标签
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.htm</url-pattern>
</filter-mapping>
过滤器可被映射到一个servlet或一个URL模式。将过滤器映射到一个 servlet中会造成过滤器作用于servlet上。将过滤器映射到一个URL模式中则可以将过滤器应用于任何资源,只要该资源的URL与URL模式匹配。过滤是按照部署描述符的filter-mapping元素出现的顺序执行的。
listener
listener元素用来注册一个监听器类,可以在Web应用中包含该类。使用listener元素,可以收到事件什么时候发生以及用什么作为响应的通知。
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
session-config
session-config包含一个子元素session-timeout.定义web应用中的session参数
<session-config>
<!-- 定义这个web应用所有session的有效期限.单位为30分钟.-->
<session-timeout>30</session-timeout>
</session-config>
servlet AND servlet-mapping
servlet 在web.xml中完成的一个最常见的任务是对servlet或JSP页面给出名称和定制的URL.
servlet-mapping元素包含两个子元素servlet-name和url-pattern.用来定义servlet所对应URL.两个标签结对使用
<servlet>
<servlet-name>Login</servlet-name>
<servlet-class>com.purang.web.login.LoginServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
load-on-startup
特别说明下load-on-startup的子标签
1)load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法)。
2)它的值必须是一个整数,表示servlet应该被载入的顺序
2)当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet;
3)当值小于0或者没有指定时,则表示容器在该servlet被选择时才会去加载。
4)正数的值越小,该servlet的优先级越高,应用启动时就越先加载。
5)当值相同时,容器就会自己选择顺序来加载。
所以,<load-on-startup>x</load-on-startup>,中x的取值1,2,3,4,5代表的是优先级,而非启动延迟时间。