WEB-INF/web.xml文件是Web应用的配置文件,该文件有如下元素(按顺序):
<!--以下两个元素定义以XML版本号,该文件的字符编码,引用的DTD文件,注意,以下元素的顺序一般不能改变。 --><?xml version="1.0" encoding="utf-8"?><web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <display-name>Web应用的名字,Java Web服务器的Web管理工具使用该名字来标志Web应用</display-name> <description>声明Web应用的描述信息</description>
<!--定义Servlet过滤器及其URL映射,一个过滤器可以有多个URL映射--> <filter> <filter-name>Servlet过滤器名,不允许重复</filter-name> <filter-class>实现该过滤器的类</filter-class> <!--指定Servlet过滤器的初始参数及其值,可以有多个初始参数,在Servlet中通过getInitParameter()和getInitParameterNames()方法来获得这些初始参数--> <init-param> <param-name>参数名</param-name> <param-value>参数值</param-value> </init-param> </filter> <filter-mapping> <filter-name>Servlet过滤器名</filter-name> <url-pattern>该过滤器负责过滤的URL,也就是对于这样的URL请求,会调用过滤器的实现类来处理</url-pattern> <filter-mapping>
<!--定义Servlet及其URL映射,一个Servlet可以有多个URL映射--> <servlet> <servlet-name>Servlet的名字,不允许重复</servlet-name> <servlet-class>实现该Servlet的类</servlet-class> <!--指定Servlet的初始参数及其值,可以有多个初始参数,在Servlet中通过getInitParameter()和getInitParameterNames()方法来获得这些初始参数--> <init-param> <param-name>参数名</param-name> <param-value>参数值</param-value> </init-param> <!--指定Servlet容器启动时,自动加载这个Servlet的顺序,在这里指定一个整数值,如果大于等于0,则Servlet容器按照值的大小顺序自动加载 Servlet(从小到大),如果不设置这个属性或者这个属性的值小于0,则Servlet容器启动时不自动加载该Servlet,只在客户首次访问它时加载 它。 --> <load-on-startup>加载顺序值</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Servlet的名字</servlet-name> <url-pattern>访问该Servlet的URL,只需要给出相对于整个Web应用的相对URL路径</url-pattern> </servlet-mapping>
<!--设置HttpSession对象可以保持不活动状态的最长时间,单位为秒,超过这一时间,Servlet容器将把它作为无效Session处理--> <session-config> <session-timeout>秒</session-timeout> </session-config>
<!--指定默认页面文件列表,当客户的请求只给URL路径部分,而没有文件名时,Servlet容器会依次查找这个元素指定的文件并返回第一个找到的文件给客户, 如果没有找到,就会返回“Http 404 Not Found”错误信息--> <welcome-file-list> <welcome-file>默认文件,如:index.html、index.jsp等</welcome-file> </welcome-file-list>
<!--设置Web应用使用的扩展标签库--> <taglib> <taglib-uri>扩展标签库的uri路径,如:/mytaglib</taglib-uri> <taglib-location>扩展标签库的定义文件的路径,可以是相对于Web应用的相对路径,也可以是绝对的URL路径,如/WEB-INF/mytablib.tld<taglib-location> </taglib>
<!--设置Web应用中使用的Servlet容器管理的JNDI Resource引用--> <resource-ref> <description>对所引用的资源的说明</description> <res-ref-name>指定所引用的资源的JNDI名字,如:jdbc/sampleDB</res-ref-name> <res-type>指定所引用资源的类名字,如:javax.sql.DataSource</res-type> <res-auth>指定管理所引用资源的管理者,有两个值:Container和Application,Container表示由Servlet容器来创建并管理,Application表示由Web应用来创建并管理</res-auth> </resource-ref>
<!--配置Web应用的安全约束--> <security-constraint> <!--声明受保护的Web资源--> <web-resource-collection> <web-resource-name>标识受的Web资源</web-resource-name> <url-pattern>指定受保护的URL路径</url-pattern> </web-resource-collection> <!--声明可以访问受保护资源的角色,可以有多个角色--> <auth-constraint> <role-name>角色名</role-name> </auth-constraint> </security-constraint>
<!--配置安全验证登录界面--> <login-config> <auth-method>指定验证方式,有:BASIC(基本验证)、DIGEST(摘要验证)和FORM(基于表单的验证)。</auth-method> <realm-name>设定安全域的名称</realm-name> <!--当验证方式是FORM时,配置验证页面和出错页面--> <form-login-config> <form-login-page>验证页面,如/login.jsp</form-login-page> <form-error-page>出错页面,如/error.jsp</form-error-page> </font-login-config> </login-config>
<!--配置对安全验证角色的引用--> <security-role> <description>角色的描述信息</description> <role-name>角色名</role-name> </security-role></webapp>
