標籤:contex targe config 上下文 dap ada work 說明 app
轉自:http://elf8848.iteye.com/blog/875830很棒的一篇部落格,想瞭解SpringMvc的入門選手可以去看看。
一,核心類與介面:
DispatcherServlet - 前端控制器
HandlerMapping介面 - 處理請求的映射
HandleMapping介面的實作類別:
SimpleUrlHandlerMapping通過設定檔將一個URL映射到Controller
DefaultAnnotationHandleMapping通過註解,將一個URL映射到Controller類上
HandlerAdapter介面 - 處理請求的映射
AnnotationMethodHandlerAdapter類,通過註解,把一個URL映射到Controller類的方法上
Controller介面 - 控制器
由於使用了@controller註解,添加了@Controller註解的類就可以擔任控制器(Action)的職責
HandlerInterceptor 介面 - 攔截器
ViewResolver介面的實作類別
UrlBasedViewResolver類通過設定檔,把一個視圖名交給到一個View來處理
InternalResourceViewResolver類,比上面的類,加入了JSTL的支援。
View介面
JstlView類
LocalResolver介面
HandlerExceptionResolver介面 - 異常處理
SimpleMappingExceptionResolver實作類別
ModelAndView類
二,核心流程
三,DispacherServlet說明
使用SpringMvc配置Dispatch而Servlet是第一步。
DispatcherServlet是一個Servlet,所以可以配置多個DispatcherServlet
DispatcherServlet是前置控制器,配置在web.xml中。攔截匹配的請求,Servlet攔截匹配規則要自己定義,把攔截下來的請求,依靠某某規則分發到目標Controller我們寫的(Action)來處理。
分發到Controller的某某規則根據你使用了哪個HandlerMapping介面的實作類別的不同而不同。
如:
- <web-app>
- <servlet>
- <servlet-name>example</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <load-on-startup>1</load-on-startup> //是啟動順序,讓這個Servlet隨Servlettp容器一起啟動
- </servlet>
- <servlet-mapping>
- <servlet-name>example</servlet-name> //servlet的名字,可以有多個DispatcherServlet,是通過名字來區分的,每個DispatcherServlet都有自己的WebAppliContext內容物件。同時儲存在ServletContext中和Request對象中。
- <url-pattern>*.form</url-pattern> //攔截所有以.form結尾的請求。
- </servlet-mapping>
- </web-app>
在DispatcherServlet的初始化過程中,架構會在web應用的WEB-INF檔案夾下尋找名為【servlet-name】-servlet.xml的設定檔,組建檔案中定義的bean。
- <servlet>
- <servlet-name>springMVC</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <init-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath*:/springMVC.xml</param-value>
- </init-param>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>springMVC</servlet-name>
- <url-pattern>/</url-pattern>
- </servlet-mapping>
指明了設定檔的檔案名稱,不使用預設設定檔名,而是用springMvc.xml設定檔。
其中<param-value>**.xml</param-value>這裡可以使用多種寫法
1,不寫,使用預設值:/WEB-INF/<servlet-name>-servlet.xml 比如說你的servlet-name是example那麼找的那個檔案就是example-servlet.xml
2,<param-value>/WEB-INF/classes/springMvc.xml<param-value>
3,<param-vlue>classpath*.springMvc-mvc.xml</param-value>
4,多個值用都好分隔。
初始Spring mvc