web.xml 中spring-servlet.xml 和 application.xml 配置位置及含义

Posted 小大亨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了web.xml 中spring-servlet.xml 和 application.xml 配置位置及含义相关的知识,希望对你有一定的参考价值。

web.xml 中spring-servlet.xml 和 application.xml 配置位置及含义

技术分享 分类:

在我们进行 spring-servlet 进行开发的时候,经常会遇到配置文件配置的问题,要彻底的解决这个问题,我们需要了解 springMVC 设计的基本架构

1.SpringMVC 的配置分为两部分 application.xml 和 spring-servlet.xml

2.两个配置文件的作用和配置位置

2.1.application.xml :对应的是系统级别的配置,作用范围是系统上下文。

2.2.spring-servlet.xml:对应的是 controller 级别的配置,作用范围是控制层上下文。

3.它们在web.xml 中的配置

3.1.因为 application.xml 是系统级别的上下文,所以它的初始化需要放到 web.xml 中的<context-param>标签中,同时其他的类似定时任务的配置文件等等都是放在这个标签下进行初始化的。

3.2.因为spring-servlet.xml只是 controller 级别的上下文,说白了就是 servlet 级别的初始化,它不涉及到除了转发之外的任何实体,所以它的作用范围仅仅限制在 servlet 级别,所以它的初始化应该是跟spring 的 DispatcherServlet 初始化在一起,所以就是在 <servlet> 表情中初始化的。它有一个默认值就是【/WEB-INF/remoting-servlet.xml 】,注意配置文件的对应的名称是【 servlet-name】-servlet.xml,所以如果你没有给servlet 制定配置文件的位置,并且在默认位置下也没有配置文件,那么系统启动的时候就会报错。


注意:对于 servlet配置文件里面应该初始化的东西,除了视图的解析方式、静态资源文件的存放位置、controller的初始化方式之外,其他的都不应该放在 servlet 配置文件中,应为它只负责 请求的转发,返回结果的解析以及静态资源文件的解析,其他的对象的初始化,定时任务...都不应该放到这个配置文件下进行管理。


    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    3.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  
    4.                       http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"  
    5.     version="3.0" metadata-complete="true">  
    6.       
    7.     <!--  这个地方默认加载的是系统的变量的配置文件,它们属于是系统级别的配置  -->  
    8.     <context-param>  
    9.         <param-name>contextConfigLocation</param-name>  
    10.         <param-value>  
    11.         classpath:spring/application.xml.xml,  
    12.         classpath:spring/spring-quartz.xml  
    13.         </param-value>  
    14.     </context-param>  
    15.     <context-param>  
    16.         <param-name>webAppRootKey</param-name>  
    17.         <param-value>webapp.root</param-value>  
    18.     </context-param>  
    19.     <listener>  
    20.         <listener-class>org.springframework.web.util.WebAppRootListener</listener-class>  
    21.     </listener>  
    22. <!--     <context-param>  
    23.         <param-name>logbackConfigLocation</param-name>  
    24.         <param-value>classpath:conf/logback.xml</param-value>  
    25.     </context-param> -->  
    26. <!--     <listener>  
    27.         <listener-class>xorg.springframework.web.util.LogbackConfigListener</listener-class>  
    28.     </listener> -->  
    29.     <listener>  
    30.         <listener-class>com.cloudFarmHDAPI.admin.listener.SystemListener</listener-class>  
    31.     </listener>  
    32.       
    33.     <!--  这个地方加载的是 servlet 的变量的配置文件,它们属于 controller 级别的配置  
    34.         1.如果不配置这个 servlet-context.xml 的配置文件位置,  
    35.         那么默认就会去/WEB-INF/servlet-context.xml 下面去寻找这个文件   
    36.         2.如果配置了这个位置,那么它就会去制定位置加载文件  
    37.       -->  
    38.     <servlet>  
    39.         <servlet-name>appServlet</servlet-name>  
    40.         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
    41.         <init-param>  
    42.             <param-name>contextConfigLocation</param-name>  
    43.             <param-value>classpath:spring/servlet-context.xml</param-value>  
    44.         </init-param>  
    45.         <load-on-startup>1</load-on-startup>  
    46.     </servlet>  
    47.     <servlet-mapping>  
    48.         <servlet-name>appServlet</servlet-name>  
    49.         <url-pattern>/</url-pattern>  
    50.     </servlet-mapping>  
    51.     <!-- charactor encoding -->  
    52.     <filter>  
    53.         <filter-name>encodingFilter</filter-name>  
    54.         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
    55.         <init-param>  
    56.             <param-name>encoding</param-name>  
    57.             <param-value>utf-8</param-value>  
    58.         </init-param>  
    59.     </filter>  
    60.     <filter-mapping>  
    61.         <filter-name>encodingFilter</filter-name>  
    62.         <url-pattern>/*</url-pattern>  
    63.     </filter-mapping>  
    64.     <!-- shiro security filter -->  
    65.     <filter>  
    66.         <filter-name>shiroSecurityFilter</filter-name>  
    67.         <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>  
    68.         <init-param>  
    69.             <param-name>targetFilterLifecycle</param-name>  
    70.             <param-value>true</param-value>  
    71.         </init-param>  
    72.     </filter>  
    73.     <filter-mapping>  
    74.         <filter-name>shiroSecurityFilter</filter-name>  
    75.         <url-pattern>/*</url-pattern>  
    76.         <dispatcher>REQUEST</dispatcher>  
    77.         <dispatcher>FORWARD</dispatcher>  
    78.         <dispatcher>ERROR</dispatcher>  
    79.     </filter-mapping>  
    80.     <session-config>    
    81.       <session-timeout>60</session-timeout>    
    82.     </session-config>   
    83.     <welcome-file-list>    
    84.         <welcome-file>index.htm</welcome-file>    
    85.     </welcome-file-list>  
    86. </web-app



以上是关于web.xml 中spring-servlet.xml 和 application.xml 配置位置及含义的主要内容,如果未能解决你的问题,请参考以下文章

tonmcat中的web项目中的web.xml为啥设置默认首页没有作用呢?

谈谈对XML的理解?说明Web应用中Web.xml文件的作用?

web.xml中相关配置

web.xml详解

WEB-INF/web.xml 和 conf/web.xml 中定义的 servlet 过滤器的实际执行顺序是啥

web.xml配置文件