關於SpringMvc實踐的一些體會和總結

一直以來都在用java的springmvc,沒有深刻去探究關於spring以及mvc的一些內在的工做過程,今天利用休息時間,仔細閱讀了一下咱們的源碼,並結合搜索引擎,明白了幾個以前解決了問題,還沒理解原理的緣由所在. html

本文將對SpringMVC的理解進行追蹤描述,一來但願你們批評指正,糾正錯誤的理解,二來給本身一個留念,當之後忘記的時候,還有個記錄,能夠再次回想起來,三來總結技術經驗,但願從此的路走的更好.java

 

早兩天我部署了一個項目,全部的配置都是從公司項目中抽取出來的.公司項目運行得很好,而我本身的項目卻老是404,在這以前,爲了看項目是否部署好,作了個html頁面作靜態資源測試,因而增長了靜態資源配置以下:web

 <servlet-mapping>
      <servlet-name>default</servlet-name>
      <url-pattern>*.html</url-pattern>spring

 </servlet-mapping> mvc

項目中有兩個配置文件,一個是MyProject-sevlet.xml,另外一個是ApplicationContext-Services.xmlapp

在web.xml中配置是這樣的webapp

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/conf/ApplicationContext-Services.xml</param-value>
  </context-param> jsp

 <servlet>
    <servlet-name>MyProject</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/conf/MyProject-servlet.xml</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
  </servlet>測試

 

註解驅動<mvc:annotation-driven/>是寫在ApplicationContext-Services.xml,而不是MyProject-sevlet.xml,不管怎麼訪問jsp頁面,都是404 ,後來發現,只要在MyProject-sevlet.xml加上<mvc:annotation-driven/>就能正常訪問.猜測應該是沒有優先加載ApplicationContext-Services.xml所致使的問題,但奇怪的是,公司項目配置文件就是這麼寫的,也沒有其餘特殊的配置,爲何那個項目能優先記載這個配置呢?  查資料說是由於增長了default這個servlet配置,但感受解釋的不夠通透,不能徹底理解,但願各位大神指點迷津.ui

另外,從application來講,使用WebApplicationContextUtils對象時,發現它有findWebApplicationContext,getRequiredWebApplicationContext,getWebApplicationContext,initServletPropertySources,registerEnvironmentBeans,registerWebApplicationScopes等方法

經過查閱相關資料,總結以下

findWebApplicationContext實際上最終也是調用getWebApplicationContext方法,來獲取webapplicationcontext

initServletPropertySources在spring classloader類初始化的時候被調用,用於初始化servlet配置參數

其餘方面的總結後續再補充,敬請期待

相關文章
相關標籤/搜索