SpringMVC原始碼分析 二

2021-10-19 18:36:12 字數 2142 閱讀 5328

第九章 spring aop 原始碼解析(二)

這一章來簡單的介紹一下springmvc的高階應用

過濾器(filter):對request請求起到過濾的作用,作用在servlet之前,如果配置為 /* 可以對所有的資源訪問(servlet、js/css靜態資源等)進行過濾處理

***(interceptor):是springmvc、struts等表現層框架自己的,不會攔截jsp/html/css/image的訪問等,只會攔截訪問的控制器⽅法(handler)。

從配置的⻆度也能夠總結發現:serlvet、filter、listener是配置在web.xml中的,而interceptor是配置在表現層框架⾃⼰的配置⽂件中的

● 在handler業務邏輯執行之前攔截⼀次

● 在handler邏輯執行完畢但未跳轉頁面之前攔截⼀次

● 在跳轉頁面之後攔截⼀次

自定義***需要實現handlerinterceptor介面:

public

class

myintercepter01

implements

handlerinterceptor

/** * 會在handler方法業務邏輯執行之後尚未跳轉頁面時執行

* @param request

* @param response

* @param handler

* @param modelandview 封裝了檢視和資料,此時尚未跳轉頁面呢,你可以在這裡針對返回的資料和檢視資訊進行修改

/** * 頁面已經跳轉渲染完畢之後執行

* @param request

* @param response

* @param handler

* @param ex 可以在這裡捕獲異常

}

需要在配置檔案中註冊一下:

<

!--攔截所有handler--

>

<

!--配置當前***的url攔截規則,*

*代表當前目錄下及其子目錄下的所有url--

>

"/**"

/>

<

!>

"/demo/**"

/>

="com.grs.study.interceptor.myintercepter01"

/>

<

/mvc:interceptor>

"/**"

/>

="com.grs.study.interceptor.myintercepter02"

/>

<

/mvc:interceptor>

<

/mvc:interceptors>

需要注意的是如果配置多個***,存在執行順序的問題:

頁面:

multipart 檔案上傳<

/h2>

SpringMVC 原始碼分析

springmvc之 springmvc的引數匹配原始碼分析 使用 modelattribute 進行引數注入 springmvc方法返回值詳解 原始碼流程 public class implements configuration componentscan com enableaspectjau...

Spring MVC 的原始碼分析 1

總結 外部容器通過 傳給spring mvc初始化,這個初始化我們是以分散重寫初始化邏輯進入spring ioc 初始化,然後在返回到spring mvc自己的上下文九大元件初始化 spring mvc 底層是設計原理是 前端控制模式 我們拿著總結和上面這張圖去看具體實現過程,不然在細節過程,我們很...

Spring MVC 的原始碼分析 2

spring mvc 如何在servlet容器中處理業務的?我們依次檢視原始碼中三個方法的具體內容 1 requestmethod.patch都包含那些列舉型別呢?public enum requestmethod 2 processrequest方法是如何進行分流的呢?3 當所有的method方法...