• web.xml整理


    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

  • 相关阅读:
    解释一下什么是servlet?
    HTTP请求的GET与POST方式的区别
    金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)->(一千零一拾一元整)输出?
    Java中的异常处理机制的简单原理和应用。
    error和exception有什么区别?
    运行时异常与一般异常有何异同?
    jsp有哪些动作?作用分别是什么?
    jsp有哪些内置对象?作用分别是什么? 分别有什么方法?
    一个纸杯的测试用例
    白盒测试黑盒测试区别
  • 原文地址:https://www.cnblogs.com/llguanli/p/8459684.html
Copyright © 2020-2023  润新知