web.xml首先是肯定要包含它的schema
web-app>
load-on-startup元素
标记容器加载此servlet时间
当值为0或者大于0时 表示容器在应用启动时就加载这个servlet
当是一个负数时或者没有指定时 则指示容器在该servlet被选择时才加载
正数的值越小 启动该servlet的优先级越高
其它的元素都放在之中
<discription>discription>是对站台的描述
<display-name>display-name>定义站台的名称
<distributable/>是指定该站台是否可分布式处理
<context-param>context-param>用来设定web站台的环境参数它包含两个子元素
<param-name>param-name>用来指定参数的名称
<param-value>param-value>用来设定参数值
比如
<context-param>
<param-name>my_paramparam-name>
<param-value>helloparam-value>
context-param>
在此设定的参数可以在servlet中用getServletContext().getInitParameter(“my_param”)来取得
2.listener
<listener>listener>用来设定Listener接口它的主要子元素为
<listener-class>listener-class>定义Listener的类名称
比如
<listener>
<listener-class>com.myTest.ContextListenerlistener-class>
listener>
3.1.filter
<filter>filter>是用来声明filter的相关设定它包含以下子元素
<filter-name>filter-name>这当然就是指定filter的名字
<filter-class>filter-class>这是用来定义filter的类的名称
<init-param>init-param>用来定义参数它有两个子元素
<param-name>param-name>用来指定参数的名称
<param-value>param-value>用来设定参数值
比如
<filter>
<filter-name>setCharacterEncodingfilter-name>
<filter-class>com.myTest.setCharacterEncodingFilterfilter-class>
<init-param>
<param-name>encodingparam-name>
<param-value>GB2312param-value>
init-param>
filter>
3.2.filter-mapping
与<filter>filter>同时使用的是<filter-mapping>filter-mapping>用来定义filter所对应的URL它有两个子元素
<filter-name>filter-name>指定filter的名字
<url-pattern>url-pattern>指定filter所对应的URL
比如
<filter-mapping>
<filter-name>setCharacterEncodingfilter-name>
<url-pattern>/*url-pattern>
filter-mapping>
4.1.servlet
<servlet>servlet>用来声明一个servlet的数据主要有以下子元素
<servlet-name>servlet-name>指定servlet的名称
<servlet-class>servlet-class>指定servlet的类名称
<jsp-file>jsp-file>指定web站台中的某个JSP网页的完整路径
<init-param>init-param>用来定义参数和前面的<init-param>差不多
4.2.servlet-mapping
与<servlet>servlet>一起使用的是<servlet-mapping>servlet-mapping>用来定义servlet所对应的URL包含两个子元素
<servlet-name>servlet-name>指定servlet的名称
<url-pattern>url-pattern>指定servlet所对应的URL
比如
<servlet>
<servlet-name>ShoppingServletservlet-name>
<servlet-class>com.myTest.ShoppingServletservlet-class>
servlet>
<servlet-mapping>
<servlet-name>ShoppingServletservlet-name>
<url-pattern>/shop/ShoppingServleturl-pattern>
servlet-mapping>
5.session-config
<session-config>session-config>用来定义web站台中的session参数包含一个子元素
<session-timeout>session-timeout>用来定义这个web站台所有session的有效期限单位为分钟
6.mime-mapping
<mime-mapping>mime-mapping>定义某一个扩展名和某一个MIMEType做对映包含两个子元素
<extension>extension>扩展名的名称
<mime-type>mime-type>MIME格式
比如
<mime-mapping>
<extension>docextension>
<mime-type>application/vnd.ms-wordmime-type>
mime-mapping>
<mime-mapping>
<extension>xlsextension>
<mime-type>application/vnd.ms-excelmime-type>
mime-mapping>
7.welcom-file-list
<welcome-file-list>welcom-file-list>用来定义首页的列单包含一个子元素
<welcome-file>welcome-file>指定首页的文件名称
比如
<welcome-file-list>
<welcome-file>index.jspwelcome-file>
<welcome-file>index.htmlwelcome-file>
welcom-file-list>
8.error-page
<error-page>error-page>用来处理错误代码或异常的页面有三个子元素
<error-code>error-code>指定错误代码
<exception-type>exception-type>指定一个JAVA异常类型
<location>location>指定在web站台内的相关资源路径
比如
<error-page>
<error-code>404error-code>
<location>/error404.jsplocation>
error-page>
<error-page>
<exception-type>java.lang.Exceptionexception-type>
<location>/exception.jsplocation>
error-page>
9.taglib
<taglib>taglib>用来设定JSP网页所用到的TagLibrary路径有两个子元素
<taglib-uri>taglib-uri>定义TLD文件的URI在JSP网页中用taglib指令便可取得该URI的TLD文件
<taglib-location>taglib-location>指定TLD文件相对于web站台的存放位置
比如
<taglib>
<taglib-uri>myTaglibtaglib-uri>
<taglib-location>/WEB-INF/tlds/MyTaglib.tldtaglib-location>
taglib>
10.resource-ref
<resource-ref>resource-ref>定义利用JNDI取得站台可利用的资源有五个子元素
<description>description>资源说明
<rec-ref-name>rec-ref-name>资源名称
<res-type>res-type>资源种类
<res-auth>res-auth>资源经由Application或Container来许可
<res-sharing-scope>res-sharing-scope>资源是否可以共享有Shareable和Unshareable两个值默认为Shareable
比如配置数据库连接池就可在此配置
<resource-ref>
<description>JNDIJDBCDataSourceofshopdescription>
<res-ref-name>jdbc/sample_dbres-ref-name>
<res-type>javax.sql.DataSourceres-type>
<res-auth>Containerres-auth>
resource-ref>
11.jsp-config
包括和两个子元素
其中元素在JSP1.2时就已经存在而是JSP2.0新增的元素
元素主要有八个子元素它们分别为
1).设定的说明
2).设定名称
3).设定值所影响的范围如/CH2或/*.jsp
4).若为true表示不支持EL语法
5).若为true表示不支持<%scripting%>语法
6).设定JSP网页的编码
7).设置JSP网页的抬头扩展名为.jspf
8).设置JSP网页的结尾扩展名为.jspf
一个简单的元素完整配置
<jsp-config>
<taglib>
<taglib-uri>Taglibtaglib-uri>
<taglib-location>/WEB-INF/tlds/MyTaglib.tldtaglib-location>
taglib>
<jsp-property-group>
<description>SpecialpropertygroupforJSPConfigurationJSPexample.description>
<display-name>JSPConfigurationdisplay-name>
<url-pattern>/jsp/*url-pattern>
<el-ignored>trueel-ignored>
<page-encoding>GB2312page-encoding>
<scripting-invalid>truescripting-invalid>
<include-prelude>/include/prelude.jspfinclude-prelude>
<include-coda>/include/coda.jspfinclude-coda>
jsp-property-group>
jsp-config>
配置web.xml来限制对某些servlet的请求
有时我们只希望通过认证的用户才能请求某些servlet的话就可以在web.xml中来进行相应的配置来达到此目的
这就要用到元素
对于tomcat中web.xml使用security-constraint元素需要在位于/conf/tomcat-users.xml的XML文件中创建用户名和密码比如下面的这个tomcat-users.xml文件
<tomcat-users>
tomcat-users>
此XML片段包括一个tomcat-users根元素它包含一个或多个role和user元素
然后在Web应用程序的web.xml中创建security-constraint.login-config和security-role元素
<security-constraint>
<web-resource-collection>
<web-resource-name>HelloServletweb-resource-name>
<url-pattern>/HelloServleturl-pattern>
<http-method>GEThttp-method>
<http-method>POSThttp-method>
web-resource-collection>
<auth-constraint>
<description>Thisappliesonlytothe"tomcat"securityroledescription>
<role-name>adminrole-name>
auth-constraint>
<user-data-constraint>
<transport-guarantee>NONEtransport-guarantee>
user-data-constraint>
security-constraint>
<login-config>
<auth-method>BASICauth-method>
login-config>
<security-role>
<role-name>adminrole-name>
security-role>
其中security-constraint元素包含一个或多个web-resource-collection元素它是描述Web应用程序中的哪些web资源受到指定安全限制的保护http-method元素指定安全限制覆盖的HTTP方法上面的例子中当我们对/HelloServlet的GET或POST请求时将触发配置的安全机制
auth-constraint元素用于描述允许访问Web组件的安全角色此例中安全角色的例子有tomcat.manager.admin而只有当作为admin角色的用户才可以访问HelloServlet
Web应用程序通过login-config元素来认证用户并确认该用户是否为正确的角色
longin-config包含的transport-guarantee子元素用来指定认证方法BASIC是一种常见的Web认证方式浏览器给用户提示一个对话框要求输入用户名和密码随后Tomcat将给出的用户名和密码与tomcat-users.xml中的用户名和密码进行比较然后使用前面的security-constraint配置来确定用户是否可访问受保护的servlet
.(除BASIC外还可以是FORM.CLIENT-CERT.DIGEST等)
其实这种认证方法实际上有两个步骤
1.检查提供的用户名和密码是否正确
2.判断用户是否映射到特定的安全角色例如用户可能提供了正确的用户名和密码但没有映射到特定的安全角色也将被禁止访问特定的Web资源
原文https//www.cnblogs.com/jiaguozhilian/p/5819088.html