首页 > 技术文章 > web.xml讲解

AnXinliang 2016-08-25 15:23 原文

  1 <?xml version="1.0" encoding="UTF-8"?> 
  2 <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
  3 "http://java.sun.com/dtd/web-app_2_3.dtd">
  4 <web-app>
  5     <display-name>Sample Application</display-name>
  6     <description>This is a sample application</description>
  7     <filter> 
  8         <!–过滤器名,可以随便取,当web应用中有多个过滤器时不允许重名.–>
  9         <filter-name>SampleFilter</filter-name> 
 10         <!–具体的过滤器的类的完整的包名+类名。注意:不能写错了。否则容器不能正确的实例化过滤器–>
 11         <filter-class>mypack.SampleFilter</filter-class>
 12         <init-param> 
 13             <!– 参数名 –>
 14             <param-name>initParam1</param-name> 
 15             <!– 参数值 –>
 16             <param-value>2</param-value>
 17         </init-param>
 18     </filter> 
 19     <!– Define the SampleFilter Mapping –>
 20     <filter-mapping> 
 21             <!–过滤器名,注意要和上面的filter-name里的名字一样。–>
 22             <filter-name>SampleFilter</filter-name> 
 23             <!– 指定过滤器负责过滤的URL。这里指定了*.jsp表示在访问任何一个jsp页面时都会先使用mypack.SampleFilter过滤器进行过滤。如果写成login.jsp.则只有在访问login.jsp时才会调用该过滤器进行过滤。–>
 24             <url-pattern>*.jsp</url-pattern>
 25     </filter-mapping>
 26     <servlet> 
 27         <!– Servlet名字,可以随便取,有多个Servlet时不允许重名–>
 28         <servlet-name>SampleServlet</servlet-name> 
 29         <!–指定实现这个Servlet的类。完整的包名+类名–>
 30         <servlet-class>mypack.SampleServlet</servlet-class> 
 31         <!–定义Servlet的初始化参数(包括参数名和参数值)一个servlet元素里可以有多个init-param元素。在Servlet类中通过ServletConfig类的来访问这些参数。–>
 32                 <init-param> 
 33                     <!– 参数名 –>
 34                     <param-name>initParam1</param-name> 
 35                     <!– 参数值 –>
 36                     <param-value>2</param-value>
 37                 </init-param> 
 38                 <!–指定当前Web应用启动时装载Servlet的次序。当这个数=0时,容器会按数值从小到大依次加载。如果数值小于0或没有指定,容器将载Web客户首次访问这个Servlet时加载。–>
 39                 <load-on-startup>1</load-on-startup>
 40     </servlet> 
 41     <!– Define the SampleServlet Mapping –>
 42     <servlet-mapping> 
 43     <!–必须和servlet里的servlet-name内容一样–>
 44             <servlet-name>SampleServlet</servlet-name> 
 45             <!–指定访问这个Servlet的URL。这里给出的是对于整个Web应用的相对URL路径。–>
 46             <url-pattern>/sample</url-pattern>
 47     </servlet-mapping>
 48     <session-config> 
 49     <!–设 定HttpSession的生命周期。这里以分钟计算。下面的设定指明Session在最长不活动时间为10分钟。过了这个时间,Servlet容器将它 作为无效处理。注意这里和程序里指定的计数单位不同,程序里是以秒为单位。session-config只有session- timeout这个元素–>
 50             <session-timeout>10</session-timeout>
 51     </session-config> 
 52     <!— 配置会话侦听器,class表示一个HttpSessionListener或 HttpSessionActivationListener 或 HttpSessionAttributeListener或 HttpSessionBindingListener的实现类。该节点允许多个 –>
 53     <listener>
 54         <listener-class>com.cn.SessionListenerImpl</listener-class>
 55     </listener> 
 56     <!– 在 用户访问Web应用时,如果仅给出Web应用的根访问URL,没有指定具体的文件名,容器会调用weblcome-file-list 元素里指定的文件清单。welcome-file-list里允许有多个welcome-file元 素,每个元素代表一个文件。容器会先找第一文文件件是否存在,如果存在这把这个文件返回个客户,不再进行其他文件的查找。如果不存在则找第二个文件,依次 类推。如果所有文件都不存在,则跑出404错误–> 
 57     <welcome-file-list>
 58         <welcome-file>login.jsp</welcome-file>
 59         <welcome-file>index.htm</welcome-file>
 60     </welcome-file-list> 
 61     <!– 设置Web应用引用的自定义标签库。下面的代码定义了一个/mytaglib标签库,它对应的TLD文件为/WEB-INF/mytaglib.tld –>
 62     <taglib>
 63         <taglib-uri>/mytaglib</taglib-uri>
 64         <taglib-location>/WEB-INF/mytaglib.tld</taglib-location>
 65     </taglib> 
 66     <!– 如果Web应用访问了由Servlet容器管理的某个JNDI Resource必须在这里声明对JNDI Resource的引用 –>
 67     <resource-ref> 
 68         <!– 对应用资源的说明 –>
 69         <description>DB Connection</description> 
 70         <!– 指定所引用资源的JNDI名字 –>
 71         <res-ref-name>jdbc/sampleDb</res-ref-name> 
 72         <!– 指定所引用资源的类名字 –>
 73         <res-type>javax.sql.DataSource</res-type> 
 74         <!– 指定管理所引用资源的Manager, 它有两个可选值:Container和Application.Container表示由容器来创建和管理Resource,Application表示由Web应用来管理和创建Resource –>
 75         <res-auth>Container</res-auth>
 76     </resource-ref>
 77     <security-constraint>
 78         <web-resource-collection> 
 79             <!– 这个名字是必须的,由工具使用,别的地方不使用 –>
 80             <web-resource-name>my application</web-resource-name> 
 81             <!– 指定要受约束的资源,至少有一个。可以有多个. –>
 82             <uri-pattern>/*</uri-pattern> 
 83             <!– 描 述了度可与URL模式指定的资源哪些方法是受约束的,如果没有<http-method>元素,表示任何角色的人都无法访问任何http的方法。这里放置了GET方法,表示只有GET方法是受约束的。其他任何角色的人可以访问POST和其他的方法。但不能访问GET方法。–>
 84             <http-method>GET</http-method>
 85         </web-resource-collection> 
 86         <!– 如果没有<auth-constraint>表示所有角色都能访问GET方法,如果是<auth-constraint />表示任何角色都不能访问GET方法 –>
 87         <auth-constraint> 
 88             <!– 可选的。表示哪些角色能够在指定的资源上调用受约束的方法。这里表示只有拥有Admin和Member角色的人能够访问GET方法security-role里的role-name值一样    –>
 89             <role-name>Admin</role-name>
 90             <role-name>Member</role-name>
 91         </auth-constraint>
 92     </security-constraint> 
 93     <!– 将指定的角色映射到web.xml里 –>
 94     <security-role>
 95         <description>The role that is required to log into the my Application</description> 
 96         <!– 以下的角色和tomcat-users.xml里的tomcat-users里的role rolename="" 里的rolename属性值对应 –>
 97         <role-name>Guest</role-name>
 98         <role-name>Admin</role-name>
 99         <role-name>Member</role-name>
100     </security-role> 
101     <!– 如果要想进行认证,必须有<login-config>–>
102     <login-config> 
103         <!– 认证方式。有4种:BASIC:基本。 DIGEST:摘要。CLIENT-CERT:客户证书(能提供最高强度的认证)。FORM:表单 –>
104         <auth-method>FORM</auth-method>
105         <realm-name>Tomcat Servet Configuraton Form-Based Authentication Area</realm-name>
106         <form-login-config>
107             <form-login-page>/login.jsp</form-login-page>
108             <form-error-page>/error.jsp</form-error-page>
109         </form-login-config>
110     </login-config>
111 </web-app>

本文链接地址:一个很详细的web.xml讲解    转载请保留,谢谢!

推荐阅读