1. 程式人生 > >10、攔截器Interceptor的使用

10、攔截器Interceptor的使用

1          什麼是攔截器

攔截器可以在請求執行流程中的某個位置攔截請求並執行程式碼,也可以終止請求流程的執行

2          攔截器可以做什麼

攔截器通常用作許可權驗證,或者日誌記錄等

3          Interceptor(攔截器)與servletapi中的filter功能類似

3.1         下圖是spring mvc的處理流程,請求經過dispatcher servlet的排程後,會順序執行一系列的interceptor(攔截器)並執行其中的方法,攔截器有三個方法

3.2         bool preHandle,在步驟5處執行

3.2.1    返回true則繼續下一個攔截器

3.2.2    返回false則中止請求,不再進入後面的攔截器與Controller中的方法

3.3         Void postHandle,在步驟10處執行

3.4         Void afterHandle,在步驟12處執行

4          使用攔截器

要使用攔截器可以通過繼承HandlerInterceptorAdapter類並重寫其中發方法來實現,建立攔截器如下

public class MobileInterceptor extends HandlerInterceptorAdapter{

    @Autowired private IStoreService storeService
;     @Override     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {         //驗證使用者許可權boolean isLogin = true;         if(isLogin){             //使用者許可權驗證成功return true;         }else {             //使用者許可權驗證失敗則跳轉,並終止請求流程response.sendRedirect(
"/mob/login");             return false;         }     } }

5          將攔截器配置到spring-mvc.xml中

<!-- 攔截器配置 -->
<mvc:interceptors>
    <!--  直接配置則攔截所有mvc請求
    <bean class="bnsy.sis.interceptor.MobileInterceptor>
    -->
    <!-- 單獨配置則攔截配置的請求地址 -->
    <mvc:interceptor>
        <mvc:mapping path="/mob/**" />
        <mvc:exclude-mapping path="/mob/login" />
        <mvc:exclude-mapping path="/mob/autoLogin" />
        <bean class="bnsy.sis.interceptor.MobileInterceptor" />
    </mvc:interceptor>
</mvc:interceptors>

6          執行我們的要驗證的頁面和不驗證的頁面,檢視控制檯的輸出

相關推薦

10攔截Interceptor的使用

1          什麼是攔截器攔截器可以在請求執行流程中的某個位置攔截請求並執行程式碼,也可以終止請求流程的執行2          攔截器可以做什麼攔截器通常用作許可權驗證,或者日誌記錄等3          Interceptor(攔截器)與servletapi中的f

為springmvc設定servelet攔截(interceptor)監聽器(listener)過濾器(filter),型別轉換

1.攔截器<mvc:interceptors>   <!-- 登入攔截器 -->   <mvc:interceptor>    <mvc:mapping path="/**" /> <

spring中過濾器(filter)攔截interceptor)和切面(aop)的執行順序

1.程式執行的順序是先進過濾器,再進攔截器,最後進切面。注意:如果攔截器中preHandle方法返回的為false時,則無法進入切面,例子如下 @RestController @RequestMapping("/user") public class UserController {

spring boot入門(七) springboot的攔截Interceptor。最完整簡單易懂詳細的spring boot教程。

很多同學搞不懂攔截器和過濾器的區別,我們先說一下他們的區別: 過濾器和攔截器非常相似,但是它們有很大的區別 最簡單明瞭的區別就是過濾器可以修改request,而攔截器不能 過濾器需要在servlet容器中實現,攔截器可以適用於javaEE,javaSE等各種環境 攔截

Struts2攔截攔截棧(Interceptor Stack)全域性攔截與方法攔截

Struts2攔截器原理 Struts2攔截器是在訪問某個Action或Action的方法之前或之後實施攔截。在請求Struts2的Action時,Struts2會查詢配置檔案,並根據配置檔案例項化相應的攔截器物件。 Struts2攔截器配置 stru

web 過濾器 Filter Spring 攔截 interceptor

拋出異常 internal 針對 turn 被調用 enc 過濾 過濾器 文件 1、過濾器(Filter)(在web.xml中註冊過濾器)   首先說一下Filter的使用地方,我們在配置web.xml時,總會配置下面一段設置字符編碼,不然會導致亂碼問題: <

spring security 單一賬戶多地方登陸提醒, ajax 攔截 Interceptor

lean odi true window post 錯誤 img commons 會話管理 spring-security.xml部分代碼: <http auto-config="false" > <access-denied-h

Springmvc異常攔截格式轉換國際化處理配置文件以及java類

2.3 gin ltm erb nal ges contex utf on() 1.springmvc配置文件自動註解設置。 <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.sp

關於攔截與過濾器使用場景攔截與過濾器的區別整理

body fcm 選擇符 spf java ee 彈性 javaee 定義 asp 過濾器在web.xml中配置: (1)因為一開始在過濾器中映射的url-pattern填寫路徑是*.action。所有的action要經過它的過濾。<url-pattern>*.

Spring MVC溫故而知新 – 參數綁定轉發與重定向異常處理攔截

單獨 UC exclude require 加載 pre buffered nts 節點 請求參數綁定 當用戶發送請求時,根據Spring MVC的請求處理流程,前端控制器會請求處理器映射器返回一個處理器,然後請求處理器適配器之心相應的處理器,此時處理器映射器會調用Spr

過濾器攔截AOP切面執行順序的比較

過濾器:基於 Servlet,通過函式回撥方式實現,可以過濾請求和圖片檔案等,每個請求一個過濾器只能過濾一次。   攔截器:基於 java 的反射機制,代理模式實現,只能攔截請求,可以訪問上下文等物件,功能強大,一個請求可多次攔截。   攔截器是 Spring 中

Spring Boot (Web 篇):整合攔截Interceptor

目錄 說在前面 在pom.xml加入相關依賴 定義攔截器 編寫攔截器 Interceptor 註冊攔截器 Interceptor 頁面訪問(專案啟動) 總結 原始碼下載 說在前面 Struts2(Interceptor篇):攔截器的實現

Spring MVC 中整合攔截Interceptor

目錄 Interceptor 簡介 Interceptor 實現方法 HandlerInterceptor 介面 HandlerInterceptor 介面 AsyncHandlerInterceptor 介面 HandlerInterceptorAdapter 

05攔截與檔案上傳

Interceptor implements Interceptor extends AbstractInterceptor 與filter的區別:先過filter再過interceptor 檔案上傳: 三種上傳方案 虛擬路徑與真實路徑 /upload copyFile與copydire

play框架05--控制層--action攔截

5.4Action鏈   Play中的Action鏈與Servlet API中的forward不盡相同。Play的每次HTTP請求只能呼叫一個Action,如果需要呼叫其他的Action,那麼必須將瀏覽器重定向到相應的URL。在這種情況下,瀏覽器的URL始終與正在執行的Action保

MyBatis分頁功能的實現(陣列分頁sql分頁攔截,RowBounds分頁)

前言:學習hibernate & mybatis等持久層框架的時候,不外乎對資料庫的增刪改查操作。而使用最多的當是資料庫的查詢操

過濾器監聽器攔截各自的應用場景

過濾器 監聽器 public interface HttpSessionListener extends EventListener { public void sessionCreated ( HttpSessionEvent se );

SpringBoot攔截Interceptor

java裡的攔截器是動態攔截Action呼叫的物件,它提供了一種機制可以使開發者在一個Action執行的前後執行一段程式碼,也可以在一個Action執行前阻止其執行,同時也提供了一種可以提取Actio

SpringBoot | 第七章:過濾器監聽器攔截

前言 在實際開發過程中,經常會碰見一些比如系統啟動初始化資訊、統計線上人數、線上使用者數、過濾敏高詞彙、訪問許可權控制(URL級別)等業務需求。這些對於業務來說一般上是無關的,業務方是無需關係的,業務只需要關係自己內部業務的事情。所以一般上實現以上的功能,都會或多或少的

責任鏈設計模式(過濾器攔截

在閻巨集博士的《JAVA與模式》一書中開頭是這樣描述責任鏈(Chain of Responsibility)模式的:   責任鏈模式是一種物件的行為模式。在責任鏈模式裡,很多物件由每一個物件對其下家的引用而連線起來形成一條鏈。請求在這個鏈上傳遞,直到鏈上的某一個物件決定處理