//参考 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>
自此,结束。