Spring的配置

  1. 一、web.xml配置Spirng

  2. <?xml version="1.0" encoding="UTF-8"?>  
  3. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"  
  5.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"  
  6.     version="2.5">  
  7.   
  8.     <display-name>Archetype Created Web Application</display-name>  
  9.   
  10.     <!--   
  11.         1:指明配置文件位置,默認位置爲WEB-INF,默認文件名爲applicationContext.xml  
  12.           
  13.         Q.  web.xml中classpath:和classpath*:  有什麼區別?  
  14.         A.  classpath:只會到你的class路徑中查找找文件;     
  15.             classpath*:不僅包含class路徑,還包括jar文件中(class路徑)進行查找.  
  16.           
  17.         Q.  位於不同目錄下的配置文件,該如何定義?  
  18.         A.  src的情況,需要在web.xml中定義如下:    
  19.             <context-param>    
  20.                 <param-name>contextConfigLocation</param-name>    
  21.                 <param-value>classpath:applicationContext.xml</param-value>    
  22.             < /context-param>  
  23.               
  24.             WEB-INF的情況,需要在web.xml中定義如下:    
  25.             <context-param>    
  26.                 <param-name>contextConfigLocation</param-name>    
  27.                 <param-value>WEB-INF/applicationContext*.xml</param-value>    
  28.             < /context-param>  
  29.           
  30.         Q.  如何添加多個配置文件?  
  31.         A.  <context-param>     
  32.                 <param-name>contextConfigLocation</param-name>     
  33.                 <param-value>     
  34.                     classpath*:conf/applicationContext_core*.xml,     
  35.                     classpath*:conf/applicationContext_bean*.xml,     
  36.                     classpath*:conf/applicationContext_jdbc*.xml,     
  37.                     classpath*:conf/applicationContext_log*.xml     
  38.                 </param-value>     
  39.             </context-param>  
  40.     -->  
  41.     <context-param>  
  42.         <param-name>contextConfigLocation</param-name>  
  43.         <param-value>  
  44.             classpath*:applicationContext*.xml  
  45.         </param-value>  
  46.     </context-param>  
  47.   
  48.     <!--   
  49.         2:初始化配置監聽器  
  50.           
  51.         ContextLoaderListener的作用在於,容器啓動時自動裝配applicationContext.xml(默認情況,可設置,參上)的配置信息  
  52.      -->  
  53.     <listener>  
  54.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  55.     </listener>  
  56.   
  57.     <!--   
  58.         3:字符編碼攔截器,解決中文亂碼問題  
  59.           
  60.         中文編碼亂碼問題,是所有中國程序員最常見的問題之一。在使用SpringMVC時,尤其做ajax請求,很容易出現亂碼問題。  
  61.         很多時候我們會很奇怪,明明在tomcat的server.xml中配置了<Connector URIEncoding="UTF-8" ...>,結果還是出現了亂碼。  
  62.         其實,這裏的配置只是對url進行了編碼處理,只要是get請求,參數都是通過url傳遞,是不會有亂碼問題的。但post請求時,  
  63.         因爲參數都在請求體裏,這裏的編碼設置並不能影響請求體編碼,所以就容易出現亂碼。  
  64.           
  65.         如果是firefox瀏覽器,post請求會自動帶上請求頭信息:content-type = application/x-www-form-urlencoded; charset=UTF-8  
  66.         所以firefox下SpringMVC可能會表現良好,沒有亂碼問題;  
  67.         但如果是chrome瀏覽器,它不會設置關於編碼的請求頭信息:content-type = application/x-www-form-urlencoded ,  
  68.         而SpringMVC默認又是採用的ISO-8859-1解析參數,就會出現亂碼  
  69.           
  70.         解決方案:  
  71.         a.  配置請求映射時:@RequestMapping(value = "saveUserByJson"produces = { "text/json;charset=UTF-8" })  
  72.         b.  全局過濾,即以下配置,無需自己寫過濾器,spring已經提供CharacterEncodingFilter  
  73.     -->  
  74.     <filter>  
  75.         <filter-name>forceEncoding</filter-name>  
  76.         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
  77.         <init-param>  
  78.             <param-name>forceEncoding</param-name>  
  79.             <param-value>true</param-value>  
  80.         </init-param>  
  81.         <init-param>  
  82.             <param-name>encoding</param-name>  
  83.             <param-value>utf-8</param-value>  
  84.         </init-param>  
  85.     </filter>  
  86.   
  87.     <filter-mapping>  
  88.         <filter-name>forceEncoding</filter-name>  
  89.         <url-pattern>/*</url-pattern>  
  90.     </filter-mapping>  
  91.   
  92.     <!--   
  93.         4:攔截處理所有請求  
  94.           
  95.         DispatcherServlet主要用作職責調度工作,本身主要用於控制流程,主要職責如下:  
  96.         a、文件上傳解析,如果請求類型是multipart將通過MultipartResolver進行文件上傳解析;  
  97.         b、通過HandlerMapping,將請求映射到處理器(返回一個HandlerExecutionChain,它包括一個處理器、多個HandlerInterceptor攔截器);  
  98.         c、通過HandlerAdapter支持多種類型的處理器(HandlerExecutionChain中的處理器);  
  99.         d、通過ViewResolver解析邏輯視圖名到具體視圖實現;  
  100.         e、本地化解析;  
  101.         f、渲染具體的視圖等;  
  102.         g、如果執行過程中遇到異常將交給HandlerExceptionResolver來解析。  
  103.           
  104.         可以看出,使用SpringMVC時,幾乎大部分功能都是通過該servlet請求轉發的。  
  105.           
  106.         DispatcherServlet默認是以WebApplicationContext作爲上下文的,默認的配置文件爲[servlet-name]-servlet.xml,  
  107.         比如這裏的servlet-name是spring,所以默認的配置文件應該是spring-servlet.xml,且默認情況下,這個文件應放在WEB-INF目錄下。  
  108.           
  109.         也可以通過初始化參數來設置上下文的配置文件,方式如下。  
  110.     -->  
  111.     <servlet>  
  112.         <servlet-name>spring</servlet-name>  
  113.         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
  114.         <init-param>  
  115.             <param-name>contextConfigLocation</param-name>  
  116.             <param-value>classpath:spring-servlet-config.xml</param-value>  
  117.         </init-param>  
  118.     </servlet>  
  119.   
  120.     <!--   
  121.         5:映射攔截請求路徑  
  122.           
  123.         url-pattern配置爲/,不帶文件後綴,會造成其它靜態文件(js,css等)不能訪問。如配爲*.do,則不影響靜態文件的訪問  
  124.     -->  
  125.     <servlet-mapping>  
  126.         <servlet-name>spring</servlet-name>  
  127.         <url-pattern>/*</url-pattern>  
  128.     </servlet-mapping>  
  129.   
  130.     <!--   
  131.         6:指定系統歡迎頁  
  132.           
  133.         該設置指定,當用戶訪問到目錄時,系統依次嘗試訪問以下頁面,直到發現可用的頁面  
  134.      -->  
  135.     <welcome-file-list>  
  136.         <welcome-file>index.jsp</welcome-file>  
  137.         <welcome-file>index.html</welcome-file>  
  138.         <welcome-file>default.jsp</welcome-file>  
  139.         <welcome-file>default.html</welcome-file>  
  140.     </welcome-file-list>  
  141.       
  142.     <!--   
  143.         7:錯誤頁面  
  144.           
  145.         error-page配置用於在用戶請求資源時發生錯誤的情況下,提供默認的頁面以提示用戶。比如用戶請求了不存在的資源,  
  146.         如果不做設置,用戶就會看到簡單粗暴的404錯誤頁面;再比如系統實現中存在漏洞,在各種條件下觸發空指針異常,用戶就會  
  147.         看到一大段的異常堆棧。這些都是不友好的用戶體驗,而error-page則幫我們實現了在指定錯誤下跳轉到指定頁面的功能。  
  148.           
  149.         error-code指出在給定http錯誤碼返回時,要展示給用戶的頁面;而exception-type則表示在系統出現某種異常時,要展示給  
  150.         用戶的頁面。  
  151.      -->  
  152.     <error-page>    
  153.         <error-code>404</error-code>    
  154.         <location>/WEB-INF/common/404.html</location>    
  155.     </error-page>  
  156.       
  157.     <error-page>    
  158.         <error-code>500</error-code>    
  159.         <location>/WEB-INF/common/500.html</location>    
  160.     </error-page>  
  161.       
  162.     <error-page>  
  163.         <exception-type>java.lang.NullPointerException</exception-type>    
  164.         <location>/WEB-INF/common/nullpointer.html</location>    
  165.      </error-page>  
  166.        
  167.         
  168.     <!--   
  169.         8:設置session過期時長  
  170.           
  171.         當session查出session-timeout指定的時長時,整個session就會過期。  
  172.         session-timeout的單位是分鐘,所以下面的配置session會在用戶3小時無操作時過期  
  173.     -->  
  174.     <session-config>  
  175.         <session-timeout>180</session-timeout>  
  176.     </session-config>  
  177.   
  178. </web-app>  
發佈了20 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章