web.xml 详解

来源:互联网 发布:lol国服有mac版 编辑:程序博客网 时间:2024/06/05 02:06

参考:http://blog.csdn.net/believejava/article/details/43229361

一、加载的顺序

在启动WEB项目时,容器首先会读取web.xml的配置。当这项工作无误时,项目才会被启动。
加载web.xml的顺序如下:
1、context-param:将对应的值存入ServletContext,WEB项目所有部分都将共享这个上下文。
2、listener:根据配置的class类路径来创建监听,项目启动时系统调用对应的监听事件。
3、filter:指定的类路径来实例化过滤器。
4、Servlet:指定对应的Servlet类。在第一次发起请求的时候被实例化的,而且一般不会被容器销毁,它可以服务于多个用户的请求。

二、主要标签详解

1、基本格式:

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns="http://java.sun.com/xml/ns/javaee"    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"    id="WebApp_ID" version="2.5"></web-app>

2、display-name:定义了web应用的名称。
3、context-param:用作应用的Servlet上下文初始化参数。

特点:    整个项目唯一;    存在项目的整个生命周期;    任意的Servlet和jsp都可以随时随地访问;
    <!-- 定义项目的webAppRootKey,用于区分同一容器下多个项目 -->    <context-param>        <param-name>webAppRootKey</param-name>        <param-value>webapp.root</param-value>    </context-param>

4、session-config:设置容器的session参数。

    <session-config>        <session-timeout>30</session-timeout>    </session-config>

5、listener:为web应用程序定义监听器,监听器用来监听各种事件。监听器的方式定义相同,功能取决去它们各自实现的接口。

常用接口:       ServletContextListener:用于监听Web应用的启动和关闭;    ServletContextAttributeListener:用于监听ServletContext范围(application)内属性的改变;    ServletRequestListener:用于监听用户的请求;    ServletRequestAttributeListener:用于监听ServletRequest范围(request)内属性的改变;    HttpSessionListener:用于监听用户session的开始和结束;    HttpSessionAttributeListener:用于监听HttpSession范围(session)内属性的改变。
    <!-- Spring的log4j监听器 -->    <listener>        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>    </listener>

6、Filter:用于对用户请求request进行预处理,也可以对Response进行后处理,是个典型的处理链。

Filter可负责拦截多个请求或响应;一个请求或响应也可被多个Filter拦截。创建方法:    创建Filter处理类    Web.xml文件中配置FilterFilter必须实现javax.servlet.Filter接口,在该接口中定义了三个方法:    void init(FilterConfig config):用于完成Filter的初始化。FilteConfig用于访问Filter的配置信息。    void destroy():用于Filter销毁前,完成某些资源的回收。

Filter:可包含filter-name、filter-class、init-param、filter-mapping等。

filter-name:用来定义过滤器的名称,该名称在整个程序中都必须唯一。filter-class:元素指定过滤器类的完全限定的名称,即Filter的实现类。init-param:为Filter配置参数。filter-mapping:用来声明Web应用中的过滤器映射,过滤器被映射到一个servlet或一个URL模式。过滤是按照部署描述符的filter-mapping出现的顺序执行的。
    <!-- 字符集 过滤器 -->    <filter>        <filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping>

7、Servlet:通常称为服务器端小程序,是运行在服务器端的程序,用于处理及响应客户的请求。

配置:description:为Servlet指定一个文本描述。display-name:为Servlet提供一个简短的名字被某些工具显示。icon:为Servlet指定一个图标,在图形管理工具中表示该Servlet。servlet-name:用来定义servlet的名称,该名称在整个应用中必须是惟一的。servlet-class:用来指定servlet的完全限定的名称jsp-file:用来指定应用中JSP文件的完整路径。这个完整路径必须由/开始。load-on-startup:内容可以为空,或者是一个整数。这个值表示由Web容器载入内存的顺序。servlet-mapping:将URL模式映射到某个Servlet,即该Servlet处理的URL。
    <!-- Spring view分发器 -->    <servlet>        <servlet-name>dispatcher</servlet-name>        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>        <init-param>            <param-name>contextConfigLocation</param-name>            <param-value>/WEB-INF/dispatcher-servlet.xml</param-value>        </init-param>        <load-on-startup>1</load-on-startup>    </servlet>    <servlet-mapping>        <servlet-name>dispatcher</servlet-name>        <url-pattern>*.do</url-pattern>    </servlet-mapping>

8、welcome-file-list:用来指定首页文件名称,包含多个时会查找第一个,如果不存在则查找第二个。

    <welcome-file-list>        <welcome-file>index.html</welcome-file>    </welcome-file-list>
0 0
原创粉丝点击