了解Web.xml的配置

web.xml是web项目启动时首先被容器读取的配置文件,根据其中的配置创建实例并完成参数初始化等以保证项目能够正确启动运行.web.xml中配置的项目主要有这么几种,我对各个元素的作用了解如下:

上下文参数:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:/config/applicationContext-*.xml</param-value>
  </context-param>

这一元素用来声明应用范围(整个web项目)内的上下文初始化参数.参数名称是唯一的,就是固定不变的.在web.xml中通过contextConfigLocation配置spring,contextConfigLocation
参数定义了要装入的 Spring配置文件.如果缺省这种配置,默认加载/WEB-INF/applicationContext.xml文件,如果有多个,param-value里可以有多个配置文件名称,并以逗号分隔.

监听器:

<listener>
    <listener-class>com.tgb.itoo.MyListener</listener-class>
  </listener>

listener元素用来注册一个监听器类,listener-class指定监听类.

servlet API的版本2.3增加了对事件监听程序的支持,事件监听程序在建立、修改和删除会话或servlet环境时得到通知.监听类继承ServletContextListener,在监听的类中有一个contextInitialized(ServletContextEventevent)初始化方法,在这个方法中可以通过event.getServletContext().getInitParameter("contextConfigLocation")来得到context-param
设定的值.在这个类中还必须有一个contextDestroyed(ServletContextEventevent) 销毁方法.用于关闭应用前释放资源,比如说数据库连接的关闭.

过滤器:

<filter>
        <filter-name>setCharacterEncoding</filter-name>
        <filter-class>com.myTest.setCharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>GB2312</param-value>
        </init-param>
</filter>
<filter-mapping>
        <filter-name>setCharacterEncoding</filter-name>
        <url-pattern>/*</url-pattern>    

</filter-mapping>  

将一个名字与一个实现javax.servlet.Filter接口的类相关联. <url-pattern>定义Filter拦截的URL地址,说明拦截请求的方式.

servlet配置:

<servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/spring-mvc.xml,classpath:config/applicationContext-common.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

该元素指定了servlet的名称和servlet的类名称.Web服务器与Web应用属于两个范畴,要使我们的web应用在Web服务器上发布和运行,需要标准的中间接口,Servlet就是其中之一,所以这样的Web服务器也叫做Servlet容器.我们看到<servlet>中有<param-name>contextConfigLocation</param-name>的配置,而上面<context-param>中也有<param-name>contextConfigLocation</param-name>,虽然名称相同,但应用范围不同,分别是ServletConfig和ServletContext.具体差异之后的博客中会给出解释.

web.xml是如何被读取的以及容器读取配置文件过程中都进行了哪些操作,简单分析如下:

  1. 在启动Web项目时,容器(如Tomcat)会读web.xml配置文件中的两个节点<listener>和<contex-param>
  2. 接着容器会创建一个ServletContext,整个WEB项目都能使用这个上下文
  3. 容器将读到的<context-param>转化为键值对,并交给ServletContext
  4. 容器创建<listener></listener>中的类实例,即创建监听
  5. 在监听的类中有一个contextInitialized(ServletContextEvent event)初始化方法,在这个方法中可以通过event.getServletContext().getInitParameter("contextConfigLocation") 来得到context-param
    设定的值,还有一个contextDestroyed(ServletContextEvent event) 销毁方法.用于关闭应用前释放资源
  6. 得到这个context-param的值之后,我们就可以做一些操作了.这时WEB项目还没有完全启动完成.

本文的重点在于明白以上各元素的基本配置,以及它们的加载顺序,即跟在web.xml文件中配置的先后无关,其顺序为context-param
->listener -> filter -> servlet.

时间: 2024-12-28 13:46:27

了解Web.xml的配置的相关文章

web.xml的配置中&lt;context-param&gt;配置作用

<context-param>的作用: web.xml的配置中<context-param>配置作用1. 启动一个WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml.读两个节点: <listener></listener> 和 <context-param></context-param> 2.紧接着,容器创建一个ServletContext(上下文),这个WEB项目所有部分都将共享这个上下文. 3.容器将&l

jsp 使用application.getInitParameter来获取web.xml中配置参数

jsp中9个内置对象之一application,它的数据对整个web应用都有效,application有一个重要的用途就是获取web.xm中的配置参数,这样可以提高代码的移植性.应用案例如下: 在web.xml中配置如下代码: <context-param> <param-name>driver</param-name> <param-value>com.mysql.jdbc.Driver</param-value> </context-p

quartz在web.xml的配置

第一步:下载所需的Jar包 commons-beanutils.ja.commons-collections.jar.commons-logging.jar.commons-digester.jar.quartz.jar包 第二步:在web.xml下配置监听 在web.xml下配置监听的目的是为了项目编译的时候就自动运行监听下配置的业务类. <!--监听(作用就是启动项目的时候就会运行这个类,这个类需要实现ServletContextListener接口)--> <listener>

web.xml完整配置

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="WebApp_1227143028044" version="2.4" xsi:

web.xml 文件配置01

web.xml 文件配置01 前言:一般的web工程中都会用到web.xml,方便开发web工程.web.xml主要用来配置Filter.Listener.Servlet等.但是要说明的是web.xml并不是必须的,一个web工程可以没有web.xml文件. 1.定义头和根元素 部署描述符文件就像所有XML文件一样,必须以一个XML头开始.这个头声明可以使用的XML版本并给出文 件的字符编码.web.xml的模式文件是由Sun公司定义的,每个web.xml文件的根元素<web-app>中,都必

一个web项目web.xml的配置中&lt;context-param&gt;配置作用

<context-param>的作用: web.xml的配置中<context-param>配置作用 1. 启动一个WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml.读两个节点: <listener></listener> 和 <context-param></context-param> 2.紧接着,容器创建一个ServletContext(上下文),这个WEB项目所有部分都将共享这个上下文. 3.容器将&

web.xml权限配置

<security-constraint> <web-resource-collection> <web-resource-name>myAuth</web-resource-name> <url-pattern>/druid/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>manager-gui<

Spring Web工程web.xml零配置即使用Java Config + Annotation

摘要: 在Spring 3.0之前,我们工程中常用Bean都是通过XML形式的文件注解的,少了还可以,但是数量多,关系复杂到后期就很难维护了,所以在3.x之后Spring官方推荐使用Java Config方式去替换以前冗余的XML格式文件的配置方式: 在开始之前,我们需要注意一下,要基于Java Config实现无web.xml的配置,我们的工程的Servlet必须是3.0及其以上的版本: 1.我们要实现无web.xml的配置,只需要关注实现WebApplicationInitializer这个

在配置文件web.xml中配置Struts2的启动信息

在配置文件web.xml中配置Struts2的启动信息: <?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" xsi:schemaLocation="http://ja