1. 程式人生 > >Spring MVC DispatcherServlet的初始化

Spring MVC DispatcherServlet的初始化

protected void initStrategies(ApplicationContext context){

	initMultipartResolver(context);
	initLocaleResolver(context);
	initThemeResolver(context);
	initHandlerMappings(context);
	initHandlerAdapters(context);
	initHandlerExceptionResolvers(context)
	initRequestToViewNameTranslator(context);
	initViewResolvers(context);

}

1、initMultipartResolver:初始化 MultipartResolver用於處理檔案上傳服務,如果有檔案上傳,那麼會將當前HttpServletRequest包裝成DefaultMultipartHttpServletRequest,並將每個上傳內容封裝成CommonsMultipartFile 物件。

2、initLocaleResvlver:用於處理應用中的國際化問題,通告解析請求的Locale和設定響應的Locale來控制應用中的字元編碼問題。

3、initThemeResolver:用於定義一個主題,例如,可以根據使用者的喜好來設定使用者訪問的頁面樣式,可以將這個樣式作為一個ThemeName儲存,儲存在於請求的Cookie中或者儲存在服務端的session中,以後每次請求根據這個Theme Name返回特定內容。

4、initHandlerMappings:用於定義使用者設定的請求對映關係,例如,SimpleUrlHandlerMapping把用於使用者請求的URL對映城一個個Handler例項。對於HandlerMapping必須定義,如果沒有定義,將獲取DispatcherServlet.properties檔案中預設的兩個HandlerMapping,分別是BeanNameUrlHandlerMapping 和DefaultAnnotationHandlerMapping。

5、initHandlerAdapters:用於根據Handler的型別定義不同的處理規則,例如。定義SimpleControllerHandlerAdapter處理所有Controller的例項物件,在HandlerMapping中將URL對映成一個Controller例項,那麼Spring MVC在解析時SimpleControllerHandlerAdapter就會呼叫這個Controller例項。同樣對HandlerAdapters也必須定義,如果沒有定義,將獲取DispatcherServlet.properties檔案中預設的4個HandlerAdapters,分別是HttpResquestHandlerAdapter、SimpleControllerHandlerAdapter、ThrowawayControllerHandlerAdapter和AnnotationMethodHandlerAdapter。

6、intiHandlerExceptionResolvers:當Handler處理出錯時,會通過這個Handler來統一處理,預設的實現類是SimpleMappingExceptionResolver。將錯誤日誌記錄在log檔案中,並轉到預設的錯誤頁面。

7、initRequestToViewNameTranslator:將指定的ViewName按照定義的RequestToViewNameTranslator替換成想要的格式,如加上字尾或者字首等。

8、initViewResolvers:用於將View解析成頁面,在ViewResolvers中可以設定多個解析策略,如可以根據JSP來解析,或者按照Velocity模板解析。預設的解析策略是InternalResourceViewResolver,按照JSP頁面解析。

摘自:深入解析 Java Web技術內容 Spring MVC篇

相關推薦

Spring MVC DispatcherServlet的啟動以及初始

protected WebApplicationContext initWebApplicationContext() { //這裡通過WebApplicationContextUtils工具類來獲取根web應用上下文,這個上下文就是之前提到的全域性應用根上下文,儲存在ServletContext中,這個

Spring MVC DispatcherServlet初始

protected void initStrategies(ApplicationContext context){ initMultipartResolver(context); initLocaleResolver(context); initThemeReso

Spring MVC原始碼分析之DispatcherServlet初始過程

DispatcherServelt本質是也是Servlet,由Servlet容器進行載入。 1.Servlet介面提供了Servlet的初始化方法:init(ServletConfig config)。 2.GenericServlet實現了方法init(S

Spring MVC DispatcherServlet

root 子類 地址 ica () finall amp spring one DispatcherServlet UML圖 本次分析:HttpServlet->HttpServletBean->FramworkServlet->DispacherS

03.Spring IoC 容器 - 初始

itl ret num servlet fontsize eat 圖片 number sources 基本概念 Spring IoC 容器的初始化過程在監聽器 ContextLoaderListener 類中定義。 具體由該類的的 configureAndRefreshWe

interface21 - web - DispatcherServletDispatcherServlet初始流程)

設置 功能 urn ace 執行 bean對象 sets fault servlets 前言 最近打算花點時間好好看看spring的源碼,然而現在Spring的源碼經過叠代的版本太多了,比較龐大,看起來比較累,所以準備從最初的版本(interface21)開始入手,僅用

Spring Bean的初始和例項的區別

準確的說,標題中的初始化指的是Bean Definition的初始化,所以是完全不同的兩個概念。   普通的Java類如果想被SpringIOC容器託管,擁有強大的擴充套件功能和更強大的生命週期,使用者(程式設計師)要做的只是寫配置或者寫註解,然後Spring會做這些事:

spring容器重複初始

公司的專案使用的是maven+springmvc,最近一個專案中偶然發現每次開啟tomcat,spring初始化了兩次,一開始以為配置檔案中可能重複了包掃描寫重複了,結果找了半天沒發現什麼問題。最後發現有網友提到tomcat的server.xml 解決辦法: tomcat:server.xm

Spring MVC DispatcherServlet啟動過程原理分析

Spring MVC DispatcherServlet(前端控制器)繼承關係架構   FrameworkServlet   該類是DispatcherServlet的父類。該類的initServletBean()方法是初始化DispatcherS

基於springboot2 框架整合(1):spring boot專案初始

前言 專案中使用了很多現成的框架,都是專案經理、架構師帶來的,從來沒有自己整合過!這次決定自己從零開始整合一次,以學習鞏固。過程中參考很多開源框架的思路,工具類等,若有侵權,請速速聯絡,一定妥善處理   一:建立maven專案 這個不多說,給出pom.xml

Spring Boot之初始專案

最簡單的從Spring官網下載 :地址 https://start.spring.io/ 下拉選擇需要的Spring Boot版本 修改Group和Artifact  直接點選Generate Project 即可生層專案壓縮包 解壓後,maven import到本地工作空間即可 開啟src/main/ja

Spring-Cloud-Gateway原始碼分析系列| Spring-Cloud-Gateway初始

推薦 Spring Boot/Cloud 視訊: Spring-Cloud專案使用EnableAutoConfiguration註解自動 初始化配置資訊,Spring-Cloud-Gateway同樣,Spring-Cloud-Gateway下的spring.f

Spring Bean中初始方法執行順序

1 當@Scope為singleton時,bean會在ioc初始化時就被例項化,預設為singleton,可以配合@Lazy實現延時載入 2 當@Scope為prototype時,bean在ioc初始化時不會被例項化,只有在使用時,或者手動context.getBean()時才會被例項化 3 執行順

Spring MVC DispatcherServlet詳解

DispatcherServlet作用 DispatcherServlet是前端控制器設計模式的實現,提供Spring Web MVC的集中訪問點,而且負責職責的分派,而且與Spring IoC容器無縫整合,從而可以獲得Spring的所有好處。 Dispat

Spring容器的初始4種方式

1.從classpath路徑中載入applicationContext.xml檔案。 Resource resourc=new ClassPathResource("applicationContext.xml"); XmlBeanFactory bean=new

Spring Bean的初始過程

Bean 的初始化過程     一個類同時實現了 BeanNameAware, BeanFactoryAware, ApplicationContextAware, BeanPostProcessor

Spring中Bean初始的三種方法

常用的設定方式有以下三種: 通過實現 InitializingBean/DisposableBean 介面來定製初始化之後/銷燬之前的操作方法; 通過 <bean> 元素的 init-method/destroy-method屬性指定初始化之後 /銷燬之前呼叫的

spring中bean初始過程

在傳統的Java應用中,Bean的生命週期非常簡單。Java的關鍵詞new用來例項化Bean(或許他是非序列化的)。這樣就夠用了。相反,Bean 的生命週期在Spring容器中更加細緻。理解Spring Bean的生命週期非常重要,因為你或許要利用Spring提供的機會來訂製

Spring容器IOC初始過程—今天終於進行總結了

https://www.colabug.com/2539499.html 作為一個經常使用Spring的後端程式設計師,小編很早就想徹底弄懂整個Spring框架了!但它整體是非常大的,所有繼承圖非常複雜,加上小編修行尚淺,顯得力不從心。不過,男兒在世當立志,今天就先從Spring IOC容器的初

Spring Bean的初始和銷燬方式詳解

最近在專案中需要封裝kafka的服務,其中使用到了工廠模式,該模式涉及到了Spring Bean的初始化和銷燬,如是研究了一番,總結如下,和大家共勉之 Spring Bean的初始化和銷燬Bean有幾種方法了?答案是3種 方法一:使用@PostConstruct註解初始化,