web.xml,部署描写叙述符文件(专业术语)。是在Servlet规范中定义的。是web应用的配置文件(Servlet 3.0已開始放弃使用web.xml,转而使用annotation注解来配置项目)。它通常放置在web项目的WEB-INF文件夹下。

web.xml基本配置(Servlet 2.4):

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" 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">
<display-name>Servlet2.4Test</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>

注意点:

1. web.xml是一个标准的XML文件,所以它也必须遵循XML的语法规范,即大写和小写敏感,并且在web.xml中全部元素标签都是小写的!

2. web.xml对元素的次序敏感

  • <web-app>: 顶层(根)元素,用于描写叙述项目使用的Servlet版本号规范、XML版本号、编码等信息(特别注意:假设声明的Servlet版本号与项目使用的真实版本号不一致的话,可能导致用Eclipse打开web.xml卡死的现象),各Servlet版本号的声明例如以下:

    Servlet2.3:
<?

xml version="1.0" encoding="UTF-8"?>
<!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 id="WebApp_ID">
<display-name>Servlet2.3Test</display-name>
</web-app>

Servlet2.5:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>Servlet2.5Test</display-name>
</web-app>

Servlet3.0(该版本号已開始推荐使用注解进行web项目配置,但还是能够使用web.xml进行配置):

<?

xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
</web-app>

  • <icon>: 指出IDE和GUI工具用来表示Web应用的大图标和小图标,图标必须为GIF或JPEG格式,扩展名必须为.gif或.jpg。

    • <small-icon>: 小图标,大小为16 X 16 pixel
    • <large-icon>: 大图标,为32 X 32 pixel。
<icon>
<small-icon>/images/app_small.gif</small-icon>
<large-icon>/images/app_large.gif</large-icon>
</icon>

  • <display-name>: 提供GUI工具可能会用来标记这个特定的Web应用的一个名称。
<!-- 项目名称  -->
<display-name>ServletTest</display-name>

  • <disciption> : 对Web应用进行相关描写叙述说明。
<disciption>doing some Servlet Test!</disciption> 

  • <context-param>: 用于声明应用范围内的初始化參数。在server启动时,容器会将<context-param>转换为键值对,并交给servletContext,所以能够通过ServletContext对象的getInitParamter()方法来获取该參数值。

    • <param-name>: 參数名。该值在整个Web应用中必须是惟一的。
    • <param-value>: 參数值
    • <description >: 參数描写叙述
<context-param>
<!-- 參数名称 -->
<param-name>test_param_name</param-name>
<!-- 參数值 -->
<param-value>This is param name test!</param-value>
</context-param>

JSP中取值方法:${initParam.test_param_name}

Servlet取值方法:String param_name=getServletContext().getInitParamter("test_param_name");


  • <filter>: 用于设定web应用的过滤器。能够过滤url或servlet请求。

    • <filter-name>: 过滤器名称,与<filter-mapping><filter-name>同样,进行一 一映射。该值在整个Web应用中必须是惟一的。
    • <filter-class>:过滤类,在指定的请求被过滤器捕获到后。进行相关操作的类,该类必须实现javaxs.servlet.Filter接口。
    • <description>:过滤器描写叙述说明。

    • <init-param>: 自己定义配置过滤器相关參数值,能够通过javax.servlet.FilterConfig的getInitParameter(“param-name”)获取到。
      • <param-name>: 參数名
      • <param-value>:參数值
      • -

  • <filter-mapping>: 用于声明过滤器要拦截的资源。必须与<filter>配合使用。

    filter过滤器的调用顺序是依据<filter-mapping>在web.xml中的先后顺序调用的。

    • <filter-name>:过滤器名称。与<filter-mapping><filter-name>同样,进行一 一映射。

    • <servlet-name>:被过滤的servlet名称。
    • <url-pattern>:被过滤的url。
    • <dispatcher>: 指定过滤器所拦截的资源被 Servlet 容器调用的方式,能够是REQUEST,INCLUDE,FORWARD和ERROR之中的一个。默认REQUEST。用户能够设置多个<dispatcher>子元素用来指定 Filter 对资源的多种调用方式进行拦截。

<dispatcher>子元素能够设置的值及其意义:

REQUEST:当用户直接訪问页面时,Web容器将会调用过滤器。假设目标资源是通过RequestDispatcher的include()或forward()方法訪问时。那么该过滤器就不会被调用。

INCLUDE:假设目标资源是通过RequestDispatcher的include()方法訪问时,那么该过滤器将被调用。除此之外,该过滤器不会被调用。

FORWARD:假设目标资源是通过RequestDispatcher的forward()方法訪问时。那么该过滤器将被调用,除此之外,该过滤器不会被调用。

ERROR:假设目标资源是通过声明式异常处理机制调用时,那么该过滤器将被调用。除此之外,过滤器不会被调用。


  • <listener>: 用于定义注冊一个监听器类。能够收到事件什么时候发生以及用什么作为响应的通知。

    • <listener-class>: 监听器类。须包括完整路径。

  • <servlet>:声明一个Servlet类

    • <servlet-name>:servlet名称
    • <servlet-class>:Servlet类,须包括完整路径。

    • <display-name>
    • <description>: Servlet相关描写叙述说明。

    • <load-on-startup>:设置Servlet载入的次序。当这个数>=0时,Web容器启动时会按数值从小到大依次载入进内存(实例化此servlet,并调用它的init方法)。假设数值<0或没有指定,则由Web容器决定什么时候载入servlet(Web容器一般会在客户首次訪问这个Servlet时才载入)。

      配置该属性值能够避免首次Servlet訪问时。载入Servlet导致的响应延迟。

    • <jsp-file>
    • <init-param>: Servlet相关參数配置。
      • <param-name>:參数名
      • <param-value>:參数值
      • <description>:相关描写叙述说明
    • <run-as>: 假设定义了run-as元素,它会重写用于调用Web应用中servlet所设定的Enterprise JavaBean(EJB)的安全身份。

      • <description>:相关描写叙述说明
      • <role-name>:为当前Web应用定义的一个安全角色的名称。

  • <servlet-mapping>: 将URL模式映射到某个servlet上。
    • <servlet-name>:servlet名称
    • <url-pattern>

  • <session-config>:指定javax.servlet.http.HttpSession对象的相关參数。

    • <session-timeout>:指定默认的session超时时间。单位为分钟,该数值必须为整数。

      假设<session-timeout>元素的值为零或负数,则表示会话将永远不会超时。

      也能够用HttpSesion的setMaxInactiveInterval()方法设置sesion的时效。

<session-config>
<session-timeout>30</session-timeout>
</session-config>

  • <mime-mapping>:将mime类型映射到扩展名

    • <extension>:文件扩展名
    • <mime-type>:MIME类型
<mime-mapping>
<extension>doc</extension>
<mime-type>application/vnd.ms-word</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xls</extension>
<mime-type>application/vnd.ms-excel</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ppt</extesnion>
<mime-type>application/vnd.ms-powerpoint</mime-type>
</mime-mapping>

  • <welcome-file-list>

    • <welcome-file>:用于指定默认首页文件的名称

  • <error-page>

    • <error-code>:HTTP错误代码
    • <exception-type>:Java异常类型的全然限定的名称。eg:java.lang.Exception | java.io.IOException | javax.servlet.ServletException …
    • location >:跳转的路径
<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>

  • <jsp-config>:用于JSP的相关配置。该标签为Servlet2.4版本号新增属性

    • <taglib>:用于自己定义标签库

      • <taglib-uri>:TLD文件的URI
      • <taglib-location>:TLD文件在项目中的存放路径
    • <jsp-property-group>:Servlet2.4版本号新增属性
      • <description>: 相关描写叙述说明
      • <display-name>
      • <el-ignored>:是否不支持EL语法,取值:true|false
      • <page-encoding>:设定JSP页面的编码
      • <scripting-invalid>:是否不支持<%scription%>语法。取值:true|false
      • <is-xml>
      • <icon>
        • <small-icon>
        • <large-icon>
      • <url-pattern>:设定值所影响的范围,如:/CH2 或者/*.jsp
      • <include-prelude>
      • <include-coda>

  • <resource-env-ref>:声明与资源相关的一个管理对象

    • <description>:相关描写叙述说明
    • <env-entry-name>
    • <env-entry-type>
    • <env-entry-value>

  • <resource-ref>

    • <description>:相关描写叙述说明
    • <res-ref-name>:与java:comp/env上下文相相应的JNDI名称,在整个Web应用中必须是惟一的。
    • <res-type>:指明资源类型
    • <res-auth>:指定管理所引用资源的Manager,取值:Application | Container。

      Container表示由容器来创建和管理Resource,Application表示由web应用来创建和管理Resource。

    • <res-sharing-scope>:能否够共享通过给定资源管理器连接工厂引用获得的连接。

      取值:Shareable(默认值) | Unshareable。

 <resource-env-ref>
<resource-env-ref-name>jdbc/testDataSource</resource-env-ref-name>
<resource-env-ref-type>javax.sql.DataSource</resource-env-ref-type>
<res-auth>Container</res-auth>
</resource-env-ref>

java中获取该JNDI方法:

Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jndi/testDataSource");
Connection conn = ds.getConnection();

  • <security-constraint>

  • <login-config>:设定该web网站四种认证类型

    • <auth-method>:指定验证方法。取值:BASIC | DIGEST | FORM | CLIENT-CERT。

      BASIC:HTTP规范,Base64

      DIGEST:HTTP规范。数据完整性强一些,但不是SSL

      CLIENT-CERT:J2EE规范,数据完整性非常强。公共钥匙(PKC)

      FORM:J2EE规范,数据完整性非常弱。没有加密,同意有定制的登陆界面。

    • <realm-name>:指定BASIC验证中使用的领域名。<auth-method>属性配置为BASIC时才有效。
    • <form-login-config>:指定FORM验证中,相关登陆页面和出错页面。<auth-method>属性配置为FORM时才有效。

      • <form-login-page>:定义登陆页面的路径
      • <form-error-page>:定义出错页面的路径

  • <security-role>

  • <env-entry>:’

  • <ejb-ref>

  • <ejb-local-ref>

未完待续!

原文地址:http://blog.csdn.net/chen_zw/article/details/47706069

web.xml整理的更多相关文章

  1. TOMCAT web.xml 整理说明

    JavaWeb项目中web.xml有关servlet的基本配置: 我们注意到,tomcat下的conf中也有一个web.xml文件,没错的,所有的JavaWeb项目中web.xml都继承自服务器下的w ...

  2. web.xml总结整理

    web.xml 配置的详细解读 web.xml (部署描述符文件) 整理参考:      加载顺序 ServletContext-->listener->filter->srvlet ...

  3. 【未整理】web.xml加载顺序.RP

    一 1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Ser ...

  4. web.xml配置整理

    虽然是做web开发,但是web中的很多配置有的时候却不是很清楚,只是知道怎么配置,于是就把在网上看到各种关于web.xml的东西整理一下: web.xml中url-pattern的3种写法 1完全匹配 ...

  5. web.xml相关知识摘录整理

    web.xml 中的listener. filter.servlet 加载顺序及其详解 在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人 ...

  6. web.xml常用标签整理(不定期更新)

    <?xml version="1.0" encoding="UTF-8"?><!-- 标明使用的XML版本和文档编码,此项必须位于第一行,之前 ...

  7. web.xml加载顺序

    一 1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Ser ...

  8. java web.xml配置详解

    1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Servl ...

  9. Spring Security 从配置入门 学习讲解。万恶之源------------web.xml

    这段时间,工作闲了下来,接触了Spring Security,对于我一个基础很差的人来说,无疑是个挑战啊. 经过一段时间的摸索,终于有了点眉目,在这里,要特别感谢http://blog.csdn.ne ...

随机推荐

  1. 数据清洗——python定位csv中的特定字符位置

    之前发过一篇关于定位csv中的特殊字符的,主要是用到了python的自带的函数,近期又遇到了一些新的问题,比如isdigit()的缺点在于不能判断浮点型,以及小数中有多个小数点的情况.发现还是正则表达 ...

  2. 学习Objective-C入门教程(分享)

    原百度文库连接:http://wenku.baidu.com/view/6786064fe518964bcf847c63.html PS:需要原文档的可以留邮箱发送! (我叫雷锋,不要谢我) 学习Ob ...

  3. SQL--大解密之组织数据

    今天为大家带来的是数据库的基本用法   首先带大家了解下数据库. 大量的数据正在不断产生,伴随而来的是如何安全有效地存储.检索.管理他们. 对数据的有效存储.高效访问.方便共享和安全控制等问题成为信息 ...

  4. Android基础TOP3_1:纵横屏切换

    在Res下建立layout-port文件夹  为竖屏时加载的界面: 建立layout-land 文件夹 为横屏加载的界面

  5. webstorm中配置过visualsvn,后面做更改要更换authentication realm的解决办法

    找这个找了好久,一直改不过来,终于找到了解决办法 首先,在提交代码时提示: 但是我的authentication realm已经时这个了,并且账号和密码也改了,所以要更改authentication ...

  6. java浅析

    基本结构 1.以字节码的方式运行在虚拟机上,不是直接编译成机器码运行,所以性能上差于 C 但是高于 python这样的解释形语言. 笔者大学期间学习过 汇编和C,工作后使用python,对这两种语言有 ...

  7. CAD向控件注册一个命令(com接口VB语言)

    主要用到函数说明: MxDrawXCustomFunction::Mx_RegistUserCustomCommand 向控件注册一个命令,用户在命令行输入命令名这个字符串,就会触发执行命令事件 命令 ...

  8. Vova and Trophies CodeForces - 1082B(思维题)

    Vova has won nn trophies in different competitions. Each trophy is either golden or silver. The trop ...

  9. Python os.listdir() 方法

    概述 os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表.这个列表以字母顺序. 它不包括 '.' 和'..' 即使它在文件夹中. 只支持在 Unix, Windows 下 ...

  10. odoo widget 标签介绍

    widget="statusbar" 头部状态条标签 widget="email" 电子邮件地址标签 widget="selection" ...