SpringMVC配置詳解以及工作流程

1. SpringMVC配置詳解:

  1. 配置激活@controller和@RequestMapping註解的語句
  2. 配置靜態資源過濾器
  3. 配置視圖解析器,如果使用freemarker插件視圖解析器的配置在後面
  4. 實現文件上傳插件的配置也放在這裏
  5. 攔截器的配置
	<!-- 配置springmvc的請求映射-->
	<!-- 由於springmvc的配置一般由註解來完成, -->
	<!-- 激活掃描註解標籤 告訴它要掃描註解的包名 -->
	<!-- 這個是激活@controller這個註解的 -->
	<context:component-scan base-package="com.controller"></context:component-scan>
	<!-- 這個是激活裏面的方法@RequestMapping這個註解的 -->
	<mvc:annotation-driven></mvc:annotation-driven>
	
	<!-- 靜態資源過濾器 ,這句話的作用是,解決由於springmvc過濾了所有文件當頁面中需要引用圖片css樣式,js文件等就會異常-->
	<mvc:default-servlet-handler/>
	
	<!-- 配置視圖解析器,用來實現controller的一個跳轉用的,就是價格前綴後綴,跳轉的時候java裏面只需要寫名字就可以了 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<!-- 給所有跳轉的文件名統一配置前綴 -->
		<!-- 將文件放到web-inf下面也可以在這裏配置成/WEB-INF/ -->
		<property name="prefix" value="/WEB-INF/page/"></property>
		<!-- 統一配置後綴 -->
		<property name="suffix" value=".jsp"></property>
	</bean>
	
	<!-- 配置bean來幫助實現上傳文件操作 -->
	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
	</bean>

	<!-- spring攔截器 -->
	<mvc:interceptors>
		<mvc:interceptor>
			<!-- 需要攔截的請求 /**代表攔截所有請求 -->
			<mvc:mapping path="/**"/> 
			<!-- 排除不需要攔截的請求 -->
			<mvc:exclude-mapping path="/static/js/**"/>
			<mvc:exclude-mapping path="/static/css/**"/>
			<mvc:exclude-mapping path="/user/login"/>
			<bean class="com.hxzy.interceptors.Interceptors"></bean>
		</mvc:interceptor>
	</mvc:interceptors>
  1. 如果是使用的freemarker,springmvc和properties中的相關配置如下:
<!-- 設置freeMarker的配置文件路徑-->
	<bean id="freemarkerConfiguration"
		class="org.springframework.beans.factory.config.PropertiesFactoryBean">
		<property name="location" value="classpath:freemarker.properties" />
	</bean>

	<!-- 配置freeMarker的模板路徑-->
	<bean
		class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
		<property name="freemarkerSettings" ref="freemarkerConfiguration" />
		<property name="templateLoaderPath">
			<value>/WEB-INF/html/</value>
		</property>
	</bean>

	<!-- 配置freeMarker視圖解析器-->
	<bean id="viewResolver"
		class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
		<property name="viewClass"
			value="org.springframework.web.servlet.view.freemarker.FreeMarkerView" />
		<property name="contentType" value="text/html; charset=utf-8" />
		<property name="cache" value="true" />
		<property name="prefix" value="/"></property>
		<property name="suffix" value=".html"></property>
	</bean>
template_update_delay=0    
default_encoding=UTF-8    
output_encoding=UTF-8    
locale=zh_CN    
number_format=\#    
classic_compatible=true   

2. SpringMVC中的幾個核心組件以及作用:

  1. DispatcherServlet: 前端控制器,所有的用戶請求都要經過它來分發,在請求到達COntroller之前,需要藉助Spring提供的HandlerMapping定位到具體的Controller
  2. HandlerMapping: 處理器映射器,用來完成用戶請求到Controller的映射
  3. HandlerAdapter: 處理器適配器,幫助DispatcherServlet調用映射到請求的處理程序
  4. Controller: 控制器,負責處理由DispatcherServlet分發的請求,把用戶請求的數據經過業務處理層處理之後封裝成一個Model,然後在吧該Model返回給對應的View進行展示
  5. ViewResovler: 視圖解析器:在Web應用中查找View對象,從而將相應結果渲染給客戶,解析成相應的頁面

3. SpringMVC工作流程:

  1. 客戶端請求提交到前端控制器DispatcherServlet進行統一分發
  2. 由DispatcherServlet前端控制器查詢一個或多個處理映射器HandlerMapping,找到處理請求的Controller:通過xml配置或者註解進行查找,找到之後向前端控制器返回執行鏈
  3. 前端控制器去調用處理適配器HandlerAdapter去執行控制器Controller
  4. 控制器Controller調用業務邏輯層處理數據之後返回ModelAndView
  5. 再由DispatcherServlet前端控制器查詢一個或多個ViewResoler視圖解析器,找到ModelAndView指定的視圖
  6. 視圖負責將結果顯示到客戶端
    在這裏插入圖片描述
發佈了80 篇原創文章 · 獲贊 84 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章