【Spring】SSM项目中web.xml的配置说明

目录

加载过程

listener和context-param

ContextLoaderListener作用

Filter

servlet


<?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://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         version="2.5">

    <!-- 监听器监听其他的spring配置文件 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:spring/applicationContext-*.xml</param-value>
    </context-param>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- 解决post乱码 -->
    <filter>
        <filter-name>CharacterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>utf-8</param-value>
        </init-param>
        <!--配置强制处理编码-->
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!--配置前端控制器-->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 指定加载的配置文件 ,通过参数contextConfigLocation加载-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring/spring-mvc.xml</param-value>
        </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

</web-app>

        上面是SSM项目中web.xml配置文件中的内容,起初只知道怎么配置,但是对于其加载过程和含义并没有太多的理解.今天趁着空闲的时间对它做一个小小的总结合学习

加载过程

        web项目启动的时候,首先对web.xml文件进行一个加载,只有此文件没有异常的时候,我们加载的web项目才算是真正的跑起来,而web.xml文件的内容加载也是由一定的顺序的.

listener和context-param

  • 在启动tomcat的时候,会首先加载web.xml配置文件中的两个节点<listener>和<context-param>
  • 然后tomcat会创建一个ServletContext,应用范围内都可以使用这个上下文
  • 接着容器会将读取到的<context-param/>内容转换为键值对,交给ServletContext
  • 容器创建<listener>中的类实例,即创建监听,(备注:listener定义的类可以是自定义的类但必须需要继承ServletContextListener)
  • 在监听的类中有一个contextInitialized(ServletContextEvent event)初始化方法,在这个方法中可以通过event.getServletContext().getInitParameter("contextConfigLocation") 来得到context-param 设定的值。在这个类中还必须有一个contextDestroyed(ServletContextEvent event) 销毁方法.用于关闭应用前释放资源,比如说数据库连接的关闭。
  • 得到这个context-param的值之后,你就可以做一些操作了.注意,这个时候你的WEB项目还没有完全启动完成.这个动作会比所有的Servlet都要早。

                       

ContextLoaderListener作用

        ContextLoaderListener监听器的作用是在启动web容器的时候,自动装配一些配置信息.如果在web.xml中不写任何参数配置信息,则默认配置路径是/WEB-INF/applicationContext.xml,在WEB-INF下目录创建的xml文件的名称必须是applicationContext.xml.如果想要加载自定义的参数配置信息,则需要使用<param-value>进行配置.

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:spring/applicationContext-*.xml</param-value>
    </context-param>
  • <param-value>:指定相应的xml文件名,如果有多个xml文件,可以使用

{ <param-value>classpath*:文件夹名/applicationContext-*.xml</param-value>}

由此可见,applicationContext.xml的文件位置有两种默认实现:

  1. 第一种:直接将之放到/WEB-INF下,之在web.xml中声明一个listener;
  2.  
  3. 第二种:将之放到classpath下,但是此时要在web.xml中加入<context-param>,用它来指明你的applicationContext.xml的位置以供web容器来加载

Filter

        过滤器实际上就是对web提交过来的数据进行处理,然后在交付给对方,可以简单的理解为是一个中间加工处理的地方,通常用于拦截reqeust和response进行过滤处理

                                     

        过滤器可以有多个,每个过滤器都有自己独立的功能,过滤器的执行顺序依赖于<filter-mapping>里配置的顺序.

servlet

       当监听和过滤配置结束之后,接下来用户的请求的请求就需要被处理和响应,此时就需要使用servlet(关于servlet的介绍)的配置,web.xml文件中配置的是前端控制器的路径,代表着所有进入前端控制器的请求都会进入这个servlet进行处理.

<!-- 配置一个servlet -->
<!-- servlet的配置 -->
<servlet>
    <!-- servlet的内部名称,自定义。尽量有意义 -->
    <servlet-name>springmvc</servlet-name>
    <!-- servlet的类全名: 包名+简单类名 -->
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
   <!--初始化参数-->
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring/spring-mvc.xml</param-value>
    </init-param>    

</servlet>
<!-- servlet的映射配置 -->
<servlet-mapping>
    <!-- servlet的内部名称,一定要和上面的内部名称保持一致!! -->
    <servlet-name>springmvc</servlet-name>
    <!-- servlet的映射路径(访问servlet的名称) -->
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

参考链接:

web.xml中servlet作用

SSM常用配置

ContextLoaderListener

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值