• web.xml配置说明


    前言

    首先,web.xml文件的作用是配置web项目启动时加载的信息。(web.xml并不是一个Web的必要文件,没有web.xml,网站仍然是可以正常工作的。)

    而这些配置自然是通过标签来实现的,

    同一类的配置节点的加载顺序与它们在web.xml中的先后顺序有关(如“filter-mapping节点”必须出现在与其有相同“filter-name值”的“filter节点之后)。

    而不同类配置节点在web.xml中的先后顺序与加载顺序无关,

    即无论如何配置,web.xml的加载顺序都为:context-param -> listener -> filter -> servlet,

    而同类型之间的加载顺序为其对应的mapping节点书写顺序。

    下面详细的说一下各个主要的标签节点

    1、web-app

    随着java版本的不断更新,web.xml配置文件的版本也在不断更新,而用于“定义web.xml版本”的文件,我们称之为“部署描述文件”(web.xml deployment descriptor,又称为“DD”),这些描述文件都是官方定义的。

    我们在web.xml中能使用那些标签,怎么用,都是由“部署描述文件”定义出来的。

    所以在web.xml一开始,就需要先选择“部署描述文件”版本,即书写web-app标签的属性,

    <web-app>有四个属性:

    1、xmlns:申明了web.xml文件的名称空间的xml方案文档的位置;

    2、xmls:xsi:指定了命名空间的案例;

    3、xsi:schemeLocation:指定了发方案的位置;

    4、version:制定方案的版本;

    在网站:http://www.mkyong.com/web-development/the-web-xml-deployment-descriptor-examples/

    中有各个描述的写法例子。

    如,Java EE 7对应的方案版本就是3.1,写法样例为:

    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
    
           http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    
             version="3.1">
    
    </web-app>

    2、context-param

    通过这个标签,可以设置多个固定的“键值对”。

    这些键值对会被放到ServletContext上下文对象中,之后在程序中可以根据键值名来获取键值。

    (值得一提的是,对于这些键值对的操作可以早于程序的完全启动,比如,在如下的监听器的初始化方法中,就可获取这些键值对)

    2.1、param-name

    键值名

    2.2、param-value

    键值

    3、listener

    listener监听器随web应用的启动而启动,只会初始化一次,随web应用的停止而销毁。

    根据此特性我们可以把一些只需初始化一次的操作放在此处,如:连接数据库、提前加载某些页面等。

    3.1、listen-class

    指定监听类,该类需要继承ServletContextListener类,包含初始化方法contextInitialized(ServletContextEvent event) 和 销毁方法contextDestoryed(ServletContextEvent event)

    4、filter

    filter为“过滤器”,他的执行顺序是在listen之后,在servlet之前。

    从tomcat等相关web容器的内部运行机制可知,所有的访问请求,最终都会被封装成“request”和“response”两个对象,然后tomcat再把这两个对象交由servlet处理,而filter则是在“交给servlet”之前,对这两个对象进行处理了,即filter过滤的是request和response两个对象。

    5、servlet

    此标签的作用是申明一个servlet,可以对该servlet进行“初始化”。

    5.1、servlet-name

    设置servlet的名称,该名称在整个项目中必须是唯一的。

    5.2、servlet-class

    对应servlet类的完全限定名

    5.3、init-param

    可选参数,常见的有四种:

    contextConfigLocation

    此参数可以配置servlet的“ServletConfig”。

    web容器会在初始servlet时,将该servlet的ServletConfig传入给他,ServletConfig中可以涵盖多个key-value形式的配置信息,用作servlet的初始化。

    namespace

    WebApplicationContext命名空间。默认值是[server-name]-servlet。

    transformWsdlLocations

    可以设置true和false两种值。

    默认的wsdl文件的路径只能是静态设定,而将此参数设置为true后,就可设置相对路径。

    5.4、load-on-startup

    其内容可以为空,也可以是一个整数,此值代表了web容器加载该servlet进内存的顺序。

    当是负数或空值时,则由web容器决定什么时候加载该servlet,否则较小的值的servlet先被加载。

    <servlet>
    
        <servlet-name>helloServlet</servlet-name>
    
        <servlet-class>pers.test.service.MyServlet</servlet-class>
    
     
    
        <!--可选标签,在使用框架时,多需使用此标签进行初始化-->
    
        <init-param>
    
            <param-name>contextConfigLocation</param-name>
    
            <param-value>classpath*:config/config.xml</param-value>
    
        </init-param>
    
     
    
        <!--可选标签-->
    
        <load-on-startup>1</load-on-startup>
    
    </servlet>

    6、servlet-mapping

    此标签的作用是将刚刚<servlet>标签定义的servlet映射到URL,即告诉服务器,该servlet对那些请求的url作出响应。

    6.1、servlet-name

    对应的servlet名称,与<servlet>标签中的<servlet-name>标签对应。

    6.2、url-pattern

    一个servlet可以配置多个url路径,

    假设你ip地址绑定的域名为www.demo.com,则此标签设置为/test时,该servlet响应的完整url就是www.demo.com/test

    如果此标签的映射路径只写一个“/“,则表示该servlet为”缺省Servlet“,凡是在web.xml文件中找不到匹配的url路径请求,都会访问到此Servlet上,即该servlet用于处理其他servlet都不处理的请求。

    <servlet-mapping>
    
        <servlet-name>helloServlet</servlet-name>
    
        <url-pattern>/</url-pattern>
    
    </servlet-mapping>

    7、session-config

    设置session的过期时间,时间是以分钟为单位的。

    <session-timeout>子标签用来设定过期时间。

    <session-config>
    
      <!--session5分钟后过期-->
    
      <session-timeout>5</session-timeout>
    
    </session-config>

    8、welcome-file-list

    定义欢迎页面。

    如果容器为tomcat,那么当用户访问根目录时(根目录是可以改变的),会访问此标签指定的页面。

    此标签可以有多个<welcome-file>子标签,

    每一个<welcome-file>子标签对应一个欢迎页,

    当定义有多个欢迎页时,显示时会从第一个开始找起,如果第一个存在就显示第一个,后面的就不起作用了,否则继续找第二个标签页,以此类推。

    例:

    <welcome-file-list>
    
      <welcome-file>index.jsp</welcome-file>
    
      <welcome-file>index2.jasp</welcome-file>
    
    </welcome-file-list>
  • 相关阅读:
    sqlserver服务 正在挂起更改,导致无法打开或者停止服务
    menuStrip与toolStrip的使用
    sqlDataCommandBuilder为dataGridView自动生成增删改代码时报错
    visual studio属性面板解释文字看不见
    窗体句柄 控件句柄
    form窗体show不出来
    TextBox密码框变文本框,文本框变密码框
    DataSet数据集手动添加一行记录
    Anaconda3-更换为清华源后依旧报错CondaHTTPError: HTTP 000 CONNECTION FAILED
    Kali Linux 国内源
  • 原文地址:https://www.cnblogs.com/red-code/p/8159260.html
Copyright © 2020-2023  润新知