文章來源:http://blog.csdn.net/tengdazhang770960436/article/details/48395885
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 配置文件中,應為它只負責 請求的轉發,返回結果的解析以及靜態資源文件的解析,其他的對象的初始化,定時任務...都不應該放到這個配置文件下進行管理。
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0" metadata-complete="true"> <!-- 這個地方默認加載的是系統的變量的配置文件,它們屬於是系統級別的配置 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:spring/application.xml.xml, classpath:spring/spring-quartz.xml </param-value> </context-param> <context-param> <param-name>webAppRootKey</param-name> <param-value>webapp.root</param-value> </context-param> <listener> <listener-class>org.springframework.web.util.WebAppRootListener</listener-class> </listener> <!-- <context-param> <param-name>logbackConfigLocation</param-name> <param-value>classpath:conf/logback.xml</param-value> </context-param> --> <!-- <listener> <listener-class>xorg.springframework.web.util.LogbackConfigListener</listener-class> </listener> --> <listener> <listener-class>com.cloudFarmHDAPI.admin.listener.SystemListener</listener-class> </listener> <!-- 這個地方加載的是 servlet 的變量的配置文件,它們屬於 controller 級別的配置 1.如果不配置這個 servlet-context.xml 的配置文件位置, 那么默認就會去/WEB-INF/servlet-context.xml 下面去尋找這個文件 2.如果配置了這個位置,那么它就會去制定位置加載文件 --> <servlet> <servlet-name>appServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/servlet-context.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>appServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!-- charactor encoding --> <filter> <filter-name>encodingFilter</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> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- shiro security filter --> <filter> <filter-name>shiroSecurityFilter</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>shiroSecurityFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> <dispatcher>ERROR</dispatcher> </filter-mapping> <session-config> <session-timeout>60</session-timeout> </session-config> <welcome-file-list> <welcome-file>index.htm</welcome-file> </welcome-file-list> </web-app>