ssm 项目中web.xml 配置以及相关知识详解

web.xml 作用

在javaEE项目中通常会用web.xml文件,这个文件的作用是初始化配置信息,但是如果不需要修改配置初始化信息也可以不用web.xml文件。

web.xml 文件加载过程

当ssm项目启动的时候,比如在tomcat中或者别的web容器,tomcat会去读取web.xml文件。然后依次加载context-param -> listener -> filter -> servlet 结点,归根结底这就是一个web容器生成serveltContext 的过程。最初读取context-param是为了得到键值对,后面需要这些键值对的时候用来使用相当于一个properties文件。

servelet 生命周期

初始化阶段

  • 加载servlet类
  • 创建servletconfig对象 此对象包含初始化配置信息,并与ServletContext对象关联。
  • 创建servlet对象调用init(ServletConfig sc) :容器在创建好servlet对象后调用该方法进行初始化。使servlet与ServletConfig对象关联。ServletContext对象也产生关联,可以直接getServletContext(),进入此初始化阶段有两种情况:1.客户端第一次发出对该servlet的请求;2.在web.xml中设置了元素。

运行阶段

  • 创建req和res对象。
  • 调用service(Request req,Response res) 负责响应客户请求(根据路径访问指定servlet),执行doGet或doPost方法,返回响应,返回响应后销毁res和req对象。

销毁阶段

  • destroy 释放servlet占用的资源,关闭应用服务器时自动调用该方法。
  • servlet容器销毁ServletConfig对象。servelet

serveletContext 生命周期

servlet容器在启动一个web应用时就会创建一个ServletContext对象:一个web应用只有一个ServletContext对象,这个web应用下的所有servlet共享同一个ServletContext对象,通过这个ServletContext对象来访问此servlet容器内(服务器,包括多个web应用)的各种资源。
同web应用的生命周期。是最早被创建,最晚被销毁的对象。

serveletContextListener 监听web程序启动和销毁

当web容器启动web应用的时候会调用contextInitialized方法,调用完该方法后再创建filter实例
当web容器终止web应用的时候会调用contextDestroyed方法,在调用之前会销毁所有的servelet和filter再执行该方法

web.xml 如何配置spring以及原理

web.xml

<context-param>        
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext*.xml</param-value>    
</context-param>    
<listener>              
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

使用了一个监听器来初始化Spring 容器

web.xml 如何配置spring mvc以及原理

web.xml

<servlet>    
    <servlet-name>springDispatcherServlet</servlet-name>    
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>        
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:config/SpringMVCConfiguration.xml</param-value>
    </init-param>    
    <load-on-startup>1</load-on-startup>
</servlet>
<!-- Map all requests to the DispatcherServlet for handling -->
<servlet-mapping>    
        <servlet-name>springDispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
</servlet-mapping>

直接声明springDispatcherServlet

常用其他配置

web.xml

<display-name>WMS</display-name> 配置web应用名字

<filter>   配置filter
    <filter-name>shiroFilter</filter-name>    
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    <init-param>
        <param-name>targetFilterLifecycle</param-name>
        <param-value>true</param-value>    
    </init-param>
</filter>
<filter-mapping>
    <filter-name>shiroFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<error-page>  配置错误码对应的页面
    <error-code>404</error-code>
    <location>/errorPage/404Error.html</location>
</error-page>
<error-page>
    <error-code>500</error-code>
    <location>/errorPage/500Error.html</location>
</error-page>

版权声明:本文为qq_36638446原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。