Web.xml的配置

一:web.xml加载过程

  简单说一下,web.xml的加载过程。当我们启动一个WEB项目容器时,容器包括(JBoss,Tomcat等)。首先会去读取web.xml配置文件里的配置,当这一步骤没有出错并且完成之后,项目才能正常的被启动起来。

启动WEB项目的时候,容器首先会去读取web.xml配置文件中的两个节点:

<listener> </listener><context-param> </context-param>

417335.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FCQUFBQUFCQkI=,size_16,color_FFFFFF,t_70)

  紧接着,容器创建一个ServletContext(application),这个web项目的所有部分都将共享这个上下文。
  容器以<context-param></context-param>的name作为键,value作为值,将其转化为键值对,
  存入ServletContext。  

接着,容器会读取,根据指定的类路径来实例化过滤器

二:web.xml标签详解

1. <web-app></web-app>

  <web-app></web-app>是部署描述的根元素,该元素含23个子元素。在Servlet2.3中,子元素必须按照DTD文件描述中指定的顺序出现。比如:如果部署描述符中的<web-app>元素有<servlet>和<servlet-mapping>两个子元素,则<servlet>子元素必须出现在<servlet-mapping>子元素之前。在Servlet2.4中,顺序并不重要。

2.<display-name></display-name>

  <display-name></display-name>定义web应用的名称。如<display-name>trk-order-rest</display-name>

3.<distributable/>

  <distributable/>可以使用distributable元素来告诉servlet/JSP容器,Web容器中部署的应用程序适合在分布式环境下运行。

4.<context-param></context-param>

  <context-param>元素含有一对参数名和参数值,用作应用的Servlet上下文初始化参数,参数名在整个Web应用中必须是惟一的,在web应用的整个生命周期中上下文初始化参数都存在,任意的Servlet和jsp都可以随时随地访问它。<param-name>子元素包含有参数名,而<param-value>子元素包含的是参数值。作为选择,可用<description>子元素来描述参数。

配置Spring,必须需要,而可有可无,如果在web.xml中不写配置信息,默认的路径是/WEB-INF/applicationContext.xml,在WEB-INF目录下创建的xml文件的名称必须是applicationContext.xml。如果是要自定义文件名可以在web.xml里加入contextConfigLocation这个context参数:在里指定相应的xml文件名,如果有多个xml文件,可以写在一起并以“,”号分隔,

  配置在同一个容器中的多个web项目,要配置不同的webAppRootKey,web.xml文件中最好定义webAppRootKey参数,如果不定义,将会缺省为“webapp.root”,为防止log4j配置冲突,每个项目配置不同的webAppRootKey。

5.<session-config></session-config>

  <session-config> 用于设置容器的session参数,比如:<session-timeout>用于指定http session的失效时间。默认时间设置(30minutes)。<session-timeout>用来指定默认的会话超时时间间隔,以分钟为单位。该元素值为整数。如果 session-timeout元素的值为零或负数,则表示会话将永远不会超时。

6.<filter></filter>

过滤器,一般用于定义字符编译形式utf-8

8.1.Servlet介绍

  Servlet通常称为服务端小程序,是服务端的程序,用于处理及响应客户的请求。Servlet是一个特殊的Java类,创建Servlet类自动继承HttpServlet。客户端通常只有GET和POST两种请求方式,Servlet为了响应这两种请求,必须重写doGet()和doPost()方法。大部分时候,Servlet对于所有的请求响应都是完全一样的,此时只需要重写service()方法即可响应客户端的所有请求。另外HttpServlet有两个方法:
  init(ServletConfig config):创建Servlet实例时,调用该方法初始化Servlet资源。
  destory():销毁Servlet实例时,自动调用该方法回收资源。
  通常无需重写init()和destory()两个方法,除非需要在初始化Servlet时,完成某些资源初始化的方法,才考虑重写init()方法。如果重写了init()方法,应该在重写该方法的第一行调用super.init(config),该方法将调用HttpServlet的init()方法。如果需要在销毁Servlet之前,先完先完成某些资源的回收,比如关闭数据库链接,才需要重写destory()方法。

8.2.Servlet的生命周期

  创建Servlet实例有两个时机:
  客户端第一次请求某个Servlet时,系统创建该Servlet的实例,大部分Servlet都是这种Servlet;
  web应用启动时立即创建Servlet实例,即<load-on-start>1</laod-on-start>
  每个Servlet的运行都遵循如下生命周期:
  (1)创建Servlet实例。
  (2)Web容器调用Servlet的init()方法,对Servlet进行初始化。
  (3)Servlet初始化之后,将一直存在与容器之中,用于响应客户端请求,如果客户端发送GET请求,容器调用Servlet的doGet()方法处理并响应请求;如果客户端发送POST请求,容器调用Servlet的doPost()方法处理并响应请求。或者统一使用service()方法处理来响应用户请求。
  (4)Web容器决定销毁Servlet时,先调用Servlet的destory()方法,通常在关闭Web应用时销毁Servlet实例。

8.3.Servlet的配置

  为了让Servlet能响应用户请求,还必须将Servlet配置在web应用中,配置Servlet需要修改web.xml文件。从Servlet3.0开始,配置Servlet有两种方式:
  (1)在Servlet类中使用基于注解的方式进行配置:@WebServlet
  (2)在web.xml文件中进行配置。
  我们用web.xml文件来配置Servlet,需要配置<servlet>和<servlet-mapping>。<servlet>用来声明一个Servlet。
  <icon>、<display-name>和<description>元素的用法和<filter>的用法相同。
  <init-param>元素与<context-param>元素具有相同的元素描述符,
  可以使用<init-param>子元素将初始化参数名和参数值传递给Servlet,
  访问Servlet配置参数通过ServletConfig对象来完成,ServletConfig提供如下方法:
  java.lang.String.getInitParameter(java.lang.String name):用于获取初始化参数
  ServletConfig获取配置参数的方法和ServletContext获取配置参数的方法完全一样,
  只是ServletConfig是取得当前Servlet的配置参数,而ServletContext是获取整个web应用的配置参数。

8.4.配置Spring MVC的Servlet

配置Spring MVC,指定处理请求的Servlet,有两种方式:

  (1)默认查找MVC配置文件的地址是:/WEB-INF/${servletName}-servlet.xml。
  (2)可以通过修改配置文件的位置,需要在配置DispatcherServlet时指定MVC配置文件的位置。

8.5.classpath与classpath*区别

  同名资源存在时,classpath只从第一个符合条件的classpath中加载资源,而classpath*会从所有的classpath中加载符合条件的资源。classpath*,需要遍历所有的classpath,效率肯定比不上classpath,因此在项目设计的初期就尽量规划好资源文件所在的路径,避免使用classpath*来加载。

8.6.ContextLoaderListener和DispatcherServlet初始化上下文关系和区别

  从上图可以看出,ContextLoaderListener初始化的上下文加载的Bean是对于整个应用程序共享的,一般如:DAO层、Service层Bean;DispatcherServlet初始化的上下文加载的Bean是只对Spring MVC有效的Bean,
  如:Controller、HandlerMapping、HandlerAdapter等,该初始化上下文只加载Web相关组件。
  注意:用户可以配置多个DispatcherServlet来分别处理不同的url请求,
  每个DispatcherServlet上下文都对应一个自己的子Spring容器,他们都拥有相同的父Spring容器(业务层,持久(dao)bean所在的容器)。

9.

   <welcome-file-list>包含一个子元素<welcome-file>,
   <welcome-file>用来指定首页文件名称。
   <welcome-file-list>元素可以包含一个或多个<welcome-file>子元素。
   如果在第一个<welcome-file>元素中没有找到指定的文件,
   Web容器就会尝试显示第二个,以此类推。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值