zoukankan      html  css  js  c++  java
  • web.xml配置文件详解

            1、XML 声明和根元素

    复制代码
    <?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">
    ……
    </web-app>
    复制代码

            和所有xml类型的文件一样,第一行是 XML 声明,它定义 XML 的版本 (1.0) 和所使用的编码 (UTF-8)。

            第二行的“DOCYTPE”声明必须紧跟在XML 声明之后,这个声明会告诉服务器适用的servlet规范的版本(如2.3),并指定管理此文件其余部分内容的语法的DTD(Document Type Definition即文档类型定义)。

            第三行的<web-app></web-app>标签就是此文件的根元素,web.xml文件的最主要的配置信息就包含在这个标签之内,接下来重点介绍的就是这个标签包含的内容。xml文件不仅对大小写敏感,而且还对出现在其他元素中的次序敏感。所以标签的大小写一定要使用正确,而且XML声明必须是文件中的第一项,DOCTYPE声明必须是第二项,而web- app元素必须是第三项。同样在web-app元素内,元素的次序也很重要。

            2、Web 应用配置

    复制代码
    <icon>  
         <small-icon>/images/small_icon.gif</small-icon>  
         <large-icon>/images/large_icon.gif</large-icon>  
    </icon>
    <display-name>WEB</display-name>
    <desciption>WEB Example</desciption>
    <context-param>
         <param-name>name</para-name>
         <param-value>value</param-value>
         <description>description</description>
    </context-param>
    复制代码
    
    

            <icon>标签指出IDE和GUI工具用来表示Web应用的大图标和小图标的位置。
            <display-name>标签指出此Web应用的应用名称。
            <desciption>顾名思义就是对此Web应用的一些描述信息。
            <context-param>声明此应用范围内的初始化参数,这些参数可在servlet类中通过getServletContext().getInitParameter(“name”)方法获取。


            3、filter过滤器

    复制代码
    <filter>
          <filter-name>MyFilter</filter-name>
          <filter-class>com.filter.MyFilter</filter-class>
      </filter>
      <filter-mapping>
          <filter-name>MyFilter</filter-name>
          <url-pattern> /main.jsp</url-pattern>   
      </filter-mapping>
       <filter-mapping>
          <filter-name>MyFilter</filter-name>
          <url-pattern>/addProduct.jsp</url-pattern>   
      </filter-mapping>
    复制代码

           <filter>标签内部配置过滤器,<filter-name>标签指定此过滤器的名字,<filter-class>标签指定此过滤器指向的类(MyFilter),此类必须实现javax.servlet.Filter接口。<filter-mapping>标签用来关联一个或多个servlet或jsp页面(/main.jsp和/addProduct.jsp)。注意无论有多少<filter-mapping>,他们的<filter-name>必须与前面的名字一致。

            4、listener监听器

     <listener>
      <listener-class>com.channel.http.SessionListener</listener-class>
     </listener>

            <listener>标签指定监听器,用于监听Web应用中某些对象、信息的创建、销毁、增加,修改,删除等动作的发生,然后作出相应的响应处理。当范围对象的状态发生变化的时候,服务器自动调用监听器对象中的方法。常用于统计在线人数和在线用户,系统加载时进行信息初始化,统计网站的访问量等等。

            5、servlet(很重要)

    复制代码
    <servlet>
            <servlet-name>yqzl</servlet-name>
            <servlet-class>
                com.channel.http.servlet.MainServlet
            </servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>/WEB-INF/config/springmvc-config.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>    
        </servlet>
    
        <servlet-mapping>
            <servlet-name>yqzl</servlet-name>
            <url-pattern>*.action</url-pattern>
        </servlet-mapping>     
    复制代码

            <servlet>标签用于指定此Web应用的servlet相关配置,这个配置相当重要。<servlet-name>标签指定此servlet的名字,<servlet-class>指定servlet的类,这个类开发者可以自己写,一般会继承HttpServlet类,用来初始化整个Web项目和接受http请求并处理。<init-param>标签里面可以配置一些参数。
            <load-on-startup>标签指定当前Web应用启动时装载Servlet的次序,它的内容必须是整数,当这个数>=0时,容器会按数值从小到大依次加载。如果数值<0或没有指定,容器将在用户首次访问时加载这个servlet类。<servlet-mapping>标签可定义servlet映射,里面的<servlet-name>必须与前面的名字一致,<url-pattern>指定servlet映射的路径。
            在用Tomcat启动整个web项目时,当配置了<load-on-startup>标签并且里面的数字>=0时,会加载此servlet类,创建类的实例,调用init()方法初始化<init-param>标签里面的配置信息,此初始化在整个servlet生命周期中只会进行一次。如果未配置<load-on-startup>标签或数字<0时,Tomcat启动时不会加载此servlet类,当然也就不会调用init()方法进行初始化,当用户首次访问时会加载类并初始化,所以此时第一次访问时可能会加载很慢。这里仅简单介绍标签的作用,以后我会详细介绍这个servlet类以及与其相关的几个比较重要的类和接口。

            6、session配置

     <session-config>
      <session-timeout>10</session-timeout>
     </session-config>

            <session-config>标签用于设置浏览器与服务器之间会话(交互)时长的间隔,以分钟为单位。用户访问Web项目时,会与服务器之间建立一个session,当用户长时间未与服务器信息交互而超过这个时长时,服务器会销毁这个session,释放占用的内存空间,当用户再次在原来的session访问时会失效,需要重新建立新的session。除了可以设置这个标签之外,还可通过HttpSession的setMaxInactiveInterval()方法设置单个会话对象的超时值。

          7、欢迎页配置

    复制代码
     <welcome-file-list>
      <welcome-file>index.html</welcome-file>
      <welcome-file>index.htm</welcome-file>
      <welcome-file>index.jsp</welcome-file>
      <welcome-file>default.html</welcome-file>
      <welcome-file>default.htm</welcome-file>
      <welcome-file>default.jsp</welcome-file>
     </welcome-file-list>
    复制代码

           当用户访问Web应用时,如果仅给出Web应用的根访问URL,没有指定具体的文件名,容器会调用<weblcome-file- list> 标签里指定的文件。<welcome-file-list>里允许有多个<welcome-file>元素,每个元素代表一个文件。容器会按顺序寻找,先找第一个文件是否存在,如果存在则会把这个文件显示出来,不再寻找其他文件。如果不存在则寻找第二个文件,依次类推。如果所有文件都不存在,则抛出404错误。

          8、其他配置

          下面的这几项配置,笔者在开发中目前还没遇到过,不是特别了解,这里就不做过多解释,以免引起错误。这些内容都是参考 https://www.cnblogs.com/hafiz/p/5715523.html 的内容,有兴趣可以去这篇博客去看。

    <mime-mapping></mime-mapping>
      如果Web应用具有想到特殊的文件,希望能保证给他们分配特定的MIME类型,则mime-mapping元素提供这种保证。
    <error-page></error-page>
      在返回特定HTTP状态代码时,或者特定类型的异常被抛出时,能够制定将要显示的页面。
    <taglib></taglib>
      对标记库描述符文件(Tag Libraryu Descriptor file)指定别名。此功能使你能够更改TLD文件的位置,而不用编辑使用这些文件的JSP页面。
    <resource-env-ref></resource-env-ref>
      声明与资源相关的一个管理对象。
    <resource-ref></resource-ref>
      声明一个资源工厂使用的外部资源。
    <security-constraint></security-constraint>
      制定应该保护的URL。它与login-config元素联合使用。
    <login-config></login-config>
      指定服务器应该怎样给试图访问受保护页面的用户授权。它与sercurity-constraint元素联合使用。
    <security-role></security-role>
      给出安全角色的一个列表,这些角色将出现在servlet元素内的security-role-ref元素的role-name子元素中,分别地声明角色可使高级IDE处理安全信息更为容易。
    <env-entry></env-entry>
      声明Web应用的环境项。
    <ejb-ref></ejb-ref>
      声明一个EJB的主目录的引用。
    <ejb-local-ref></ejb-local-ref>
      声明一个EJB的本地主目录的应用。

            以上基本上涵盖了配置web.xml文件所需要的元素以及对这些元素简单的介绍,不同元素配置的基本顺序大致如此。其中<display-name>、<desciption>、<context-param><filter>、<listener>、<servlet>、<servlet-mapping>、<session-config>、<welcome-file-list>这几项是笔者在开发过程中遇到最多的,尤其是和servlet相关的配置个人认为是重中之重。所以接下来的几篇中我会详细介绍servlet类以及与其相关的几个比较重要的类和接口。这些内容也是笔者根据实际工作以及参考一些资料总结而来的,当然其中难免有些错误或者遗漏,欢迎大家指正,我也在不断学习不断提高。

            下面是完整的web.xml文件配置。

    复制代码
    <?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">
       <icon>  
           <small-icon>/images/small_icon.gif</small-icon>  
           <large-icon>/images/large_icon.gif</large-icon>  
       </icon>
     
       <display-name>WEB</display-name>
       <desciption>WEB Example</desciption>
     
       <context-param>
           <param-name>name</para-name>
           <param-value>value</param-value>
           <description>description</description>
       </context-param>
     
       <filter>
            <filter-name>MyFilter</filter-name>
            <filter-class>com.filter.MyFilter</filter-class>
       </filter>
       <filter-mapping>
            <filter-name>MyFilter</filter-name>
            <url-pattern> /main.jsp</url-pattern>   
       </filter-mapping>
       <filter-mapping>
            <filter-name>MyFilter</filter-name>
            <url-pattern>/addProduct.jsp</url-pattern>   
       </filter-mapping>
       <listener>
           <listener-class>com.channel.http.SessionListener</listener-class>
       </listener>
    
       <servlet>
           <servlet-name>yqzl</servlet-name>
           <servlet-class>
                com.channel.http.servlet.MainServlet
           </servlet-class>
           <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>/WEB-INF/config/springmvc-config.xml</param-value>
           </init-param>
           <load-on-startup>1</load-on-startup>    
        </servlet>
        <servlet-mapping>
            <servlet-name>yqzl</servlet-name>
            <url-pattern>*.action</url-pattern>
        </servlet-mapping>     
        
        <session-config>
            <session-timeout>10</session-timeout>
        </session-config>
        
        <welcome-file-list>
            <welcome-file>index.html</welcome-file>
            <welcome-file>index.htm</welcome-file>
            <welcome-file>index.jsp</welcome-file>
            <welcome-file>default.html</welcome-file>
            <welcome-file>default.htm</welcome-file>
            <welcome-file>default.jsp</welcome-file>
        </welcome-file-list>
        
        <mime-mapping></mime-mapping>
        <error-page></error-page>
        <taglib></taglib>
        <resource-env-ref></resource-env-ref>
        <resource-ref></resource-ref>
        <security-constraint></security-constraint>
        <login-config></login-config>
        <security-role></security-role>
        <env-entry></env-entry>
        <ejb-ref></ejb-ref>
        <ejb-local-ref></ejb-local-ref>
    </web-app>
    复制代码
  • 相关阅读:
    Codeforces Round #649 (Div. 2) D. Ehab's Last Corollary
    Educational Codeforces Round 89 (Rated for Div. 2) E. Two Arrays
    Educational Codeforces Round 89 (Rated for Div. 2) D. Two Divisors
    Codeforces Round #647 (Div. 2) E. Johnny and Grandmaster
    Codeforces Round #647 (Div. 2) F. Johnny and Megan's Necklace
    Codeforces Round #648 (Div. 2) G. Secure Password
    Codeforces Round #646 (Div. 2) F. Rotating Substrings
    C++STL常见用法
    各类学习慕课(不定期更新
    高阶等差数列
  • 原文地址:https://www.cnblogs.com/Zz-maker/p/10417129.html
Copyright © 2011-2022 走看看