综合技术 --maven web.xml详解

//参考  http://mianhuaman.iteye.com/blog/1105522

本项目的web.xml文件内容

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>CQR</display-name>
  
   <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>  
   </filter>  
  
   <filter-mapping>  
        <filter-name>CharacterEncodingFilter</filter-name>  
        <url-pattern>/*</url-pattern>  
   </filter-mapping>
  
   <listener>  
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
   </listener>
   
   <servlet>  
        <servlet-name>springMVC</servlet-name>  
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
        <load-on-startup>1</load-on-startup>  
    </servlet>  
    
    <servlet-mapping>  
        <servlet-name>springMVC</servlet-name>  
        <url-pattern>/</url-pattern>  
    </servlet-mapping>   
  
    <welcome-file-list>  
           <welcome-file>index.jsp</welcome-file>  
    </welcome-file-list> 
    
</web-app>

详解web.xml文件

一、开篇

1.每次启动web项目的时候,web容器都会去读取它的配置文件web.xml,读取<listener>和<context-param>两个节点。--我的项目只配了<listener>

2.紧接着容器创建一个servletContext(servlet上下文),这个web项目的所有部分都将共享这个上下文。

3.容器将<context-param>转换为键值对,并交给servletContext。

4.容器创建<listener>中的类实例,创建监听器。

二、load-on-startup

load-on-startup配置在<servlet>中,见本工程配置。

load-on-startup元素在web应用启动的时候指定了servlet被加载的顺序,它的值必须是一个整数。

在servlet的配置中,<load-on-startup>1</load-on-startup> 的含义是:容器在启动的时候就加载这个servlet。

三、加载顺序

加载顺序与它们在web.xml文件中的先后顺序无关,即不会因为filter写在listener之前就先加载filter。它们的加载顺序是:context-param -->listener -->filter -->servlet。

四、web.xml文件详解

web.xml文件中所有的元素都放在<web -app>与</web -app>之间。

<display-name></display-name> 定义站台的名称 --本项目配置中有


<discription></discription> 对站台的描述,可以不要


<context-param></context-param> 设定web站台的环境参数,它有两个子元素

<param-name></param-name> 指定参数的名称

<param-value></param-value> 设定参数值

eg:

<context-param>
    <param-name>my_param</param-name>
    <param-value>hello</param-value>
</context-param>

在此设定的参数,可以在servlet中用getServletContext().getInitParameter("my_param") 来取得


<filter></filter>包含如下子元素

<filter-name></filter-name> 指定filter名字

<filter-class></filter-class> 指定filter的类的名称

<init-param></init-param>用来定义参数,它有两个子元素

<param-name></param-name> 指定参数的名称

<param-value></param-value> 设定参数值

eg:本项目中字符编码过滤

   <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>  
   </filter>

与<filter></filter>同时使用的是<filter-mapping></filter-mapping> 用来定义filter所对应的URL,它有两个子元素

<filter-name></filter-name> 指定filter的名字

<url-pattern></url-pattern> 指定filter所对应的URL

eg:

   <filter-mapping>  
        <filter-name>CharacterEncodingFilter</filter-name>  
        <url-pattern>/*</url-pattern>  
   </filter-mapping>


<listener></listener>用来设定listener接口,主要子元素有

<listener-class></listener-class>定义listener的类的名称

eg:

   <listener>  
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
   </listener>


<servlet></servlet>用来声明一个servlet的数据,主要有以下子元素

<servlet-name></servlet-name> 指定servlet名称

<servlet-class></servlet-class> 指定servlet的类的名称

eg:

   <servlet>  
        <servlet-name>springMVC</servlet-name>  
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
        <load-on-startup>1</load-on-startup>  
    </servlet>

与servlet一起使用的是<servlet-mapping>用来定义servlet所对应的URL,包含两个子元素

<servlet-name></servlet-name> 指定servlet的名称

<url-pattern></url-pattern> 指定servlet所对应的URL

    <servlet-mapping>  
        <servlet-name>springMVC</servlet-name>  
        <url-pattern>/</url-pattern>  
    </servlet-mapping>


<welcome-file-list></welcome-file-list> 用来定义首页的列单,包含一个子元素

<welcome-file></welcome-file> 指定首页的文件名称

例如:

    <welcome-file-list>  
           <welcome-file>index.jsp</welcome-file>
           <welcome-file>index.html</welcome-file>  
    </welcome-file-list>


<error-page></error-page>  用来处理错误代码或异常的页面,有三个子元素

<error-code></error-code>  指定错误代码

<exception-type></exception-type>  指定一个java异常类型

<location></location>  指定在该web项目内站台的资源路径

例如:

<error-page>
    <error-code>404</error-code>
    <location>/error404.jsp</location>
</error-page>
<error-page>
    <exception-type>java.lang.Exception</exception-type>
    <location>/exception.jsp</location>
</error-page>


五、相应元素配置

1.web应用图标:指出IDE和GUI工具用来表示web应用的大图标和小图标

<icon>

<small-icon>/images/app_small.gif</small-icon>

<large-icon>/images/app_large.gif</large-icon>

</icon>

2.web应用名称:提供给GUI工具展现时该web应用的名称

<display-name> QQZQ </display-name>

3.web应用描述:给出这个web应用的一些说明性文本

<disciption> CQR servlet and JSP pages</disciption>

4.上下文参数:声明应用范围内的初始化参数

<context-param>
    <param-name>ContextParameter</para-name>        
    <param-value>test</param-value>        
    <description>It is a test parameter.</description> 
</context-param>

在servlet里面可以通过getServletContext().getInitParameter("context/param")得到

5.过滤器设置:将一个名字与一个实现javaxs.servlet.Filter接口的类相关联

  	<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>  
    </filter>  
    
    <filter-mapping>  
        <filter-name>CharacterEncodingFilter</filter-name>  
        <url-pattern>/*</url-pattern>  
    </filter-mapping>

6.监听器设置

    <listener>  
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
    </listener>

7.servlet配置

    <servlet>  
        <servlet-name>springMVC</servlet-name>  
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
        <load-on-startup>1</load-on-startup>  
    </servlet>  
    <servlet-mapping>  
        <servlet-name>springMVC</servlet-name>  
        <url-pattern>/</url-pattern>  
    </servlet-mapping>

8.会话超时配置(单位为分钟)

   <session-config>    
      <session-timeout>120</session-timeout>    
   </session-config>

9.数据库连接池配置

  <resource-ref>    
       <description>JNDI JDBC DataSource of shop</description>    
       <res-ref-name>jdbc/sample_db</res-ref-name>    
       <res-type>javax.sql.DataSource</res-type>    
       <res-auth>Container</res-auth>    
   </resource-ref>


自此,结束。


你可能感兴趣的:(综合技术 --maven web.xml详解)