標籤:聲明 index odi 3.1 源檔案 tor 一個 閱讀次數 log
web.xml 中spring-servlet.xml 和 application.xml 配置位置及含義 2015-09-12 18:04 18451人閱讀 評論(0) 收藏 舉報 分類: web.xml
(8)
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
在我們進行 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 設定檔中,應為它只負責 請求的轉寄,返回結果的解析以及靜態資源檔案的解析,其他的對象的初始化,定時任務...都不應該放到這個設定檔下進行管理。
[html] view plain copy
- <?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>
web.xml 中spring-servlet.xml 和 application.xml 配置位置及含義