1. 程式人生 > >SSM-攔截器

SSM-攔截器

ssm攔截器細節不用說了

1.DispatcherServlet

    SpringMVC具有統一的入口DispatcherServlet,
    DispatcherServlet是ssm框架前置控制器,所有的請求都通過DispatcherServlet。配置在web.xml檔案中的。攔截匹配的請求,Servlet攔截匹配規則可以自己定義,定義規則可以上網查,這裡不一一敘述了,把攔截下來的請求,首先進入方法doDispatch(HttpServletRequest request, HttpServletResponse response)經過一系列步奏,找到你要請求的目標Controller,最後交給他處理(沒有其他的攔截器)來處理。如果沒有handle處理器就會返回去,不再執行後面,所以說能攔截jsp頁面,JS等靜態資源,但是不能處理(缺陷解決在下面)。

那麼在web.xml配置如下:


2.自定義攔截器

    那麼自定義攔截器又是怎麼實現的了,和前置攔截器有什麼關係了?

   首先請求通過統一入口進入DispatcherServlet,再DispatcherServlet裡面有個方法尋找這個這個請求的處理器和Interceptor,這時候就會尋找到HandlerInterceptor 介面,或者是這個類繼承實現了HandlerInterceptor 介面的類,就會找到你自定義的攔截器,繼承HandlerInterceptor 有是三個方法,preHandle , postHandle 和 afterCompletion,preHandle 

在業務處理器處理請求之前被呼叫,然後處理完請求就會呼叫postHandle,或者在檢視渲染之前呼叫它,最後請求執行完,檢視渲染完呼叫,DispatcherServlet完全處理完請求後被呼叫afterCompletion,可用於清理資源,如果定義多個攔截器,先定義的攔截器先執行preHandle,但是沒有另外的兩個方法,而是等待其他攔截器執行prehandle方法,知道最後一個攔截器執行完畢,也是從最後一個攔截器逆序執行這兩個方法。

    舉個栗子:  自定義攔截器類處理未登入問題

 

  1. 注意:在login頁面操作要放過
       在spring-mvc.xml配置自定義的攔截器:


3-filter

    spring mvc的攔截器只攔截controller不攔截jsp,html 頁面檔案,如果想要攔截那怎麼辦?
  
可以利用用過濾器filter,filter是在servlet前執行的,所以先執行filter後執行攔截器。訪問頁面時都進行過濾驗證,如果存在該使用者session,則訪問該頁面,否則跳轉到登陸頁面登入,儲存session後訪問其它頁面,具體實現如下:


 上面是具體實現,在web.xml配置如下:


相關推薦

ssm攔截需要注意的一兩點

大家都知道框架帶來的方便時非常強大的,今天就說說ssm框架下的攔截器。 攔截器java程式碼: public class SysInterceptor extends HandlerInterceptorAdapter{      public boolean pr

SSM攔截應用之登入許可權認證

SSM攔截器應用之登入許可權認證 攔截器: 攔截到某路徑,進行操作。 1.DispatcherServlet:攔截到路徑之後交給DispatcherServlet操作,用controller跳轉。 SpringMVC具有統一的入口DispatcherServlet,Dispa

SSM-攔截

ssm攔截器細節不用說了 1.DispatcherServlet     SpringMVC具有統一的入口DispatcherServlet,    DispatcherServlet是ssm框架前置控制器,所有的請求都通過DispatcherServlet。配置在we

SSM攔截攔截ajax請求

攔截器攔截請求可以分ajax請求/非ajax請求. ajax請求在使用者session過期之後,需要跳轉到登入頁面. 這個時候就需要在攔截器裡判斷我們的請求是否是ajax請求. 但是不能直接的跳轉頁面,只能通用response返回響應. 我們有兩種方式:

ssm 攔截

1.DispatcherServlet SpringMVC具有統一的入口DispatcherServlet, DispatcherServlet是ssm框架前置控制器,所有的請求都通過DispatcherServlet。配置在web.xml檔案中的。攔截匹配的

(轉) ssm 攔截驗證使用者登入session

public class CommonInterceptor extends HandlerInterceptorAdapter{ private final Logger log = LoggerFactory.getLogger(CommonIntercepto

ssm框架攔截

equal util handle lean java ttr 創建 bool bject 1.ssm框架的攔截器是在springmvc-servlet.xml配置文件中進行配置 <!-- 攔截器 --> <mvc:interceptors>

SSM登陸攔截實現

nbsp dex ssm ont pri pre inter implement als 首先在springmvc中配置攔截器 <!-- 配置攔截器 --> <mvc:interceptors> <mvc:int

記錄在ssm框架專案中使用攔截攔截非登入請求遇見的問題

1.使用spring中的filter時,會出現bean注入失敗。這個問題一直沒解決。 報錯原因:web應用啟動的順序是:listener->filter->servlet,而因為專案應用了spring mvc,所以我們會有兩個配置檔案(applixationContext.xml和sp

ssm整合中的攔截的使用

springmvc 中的Interceptor 攔截器也是相當重要和相當有用的,它的主要作用是攔截使用者的請求並進行相應的處理。比如通過它來進行許可權驗證,或者是來判斷使用者是否登陸。 一、定義Interceptor實現類 SpringMVC 中的Interceptor 攔截請求是

SSM框架——springmvc檔案上傳和攔截

檔案上傳 1.檔案上傳前提 form表單的enctype取值必須是:mutipart/form-data(預設值是:application/x-www-form-urlencoded) method屬性取值必須是Post 提供一個檔案選擇域 2.使用 Commo

SSM整合系列之 通過Mybatis攔截獲取SQL語句 實現SQL監控

摘要:Mybatis為我們提供了一個Interceptor介面,通過實現該介面就可以定義我們自己的攔截器,MyBatis攔截器介面提供的3個方法中,plugin方法用於某些處理器(Handler)的構建過程。interceptor方法用於處理代理類的執行。setProperties方法用

如何在ssm框架下實現攔截功能,只用登入成功才能訪問其他網頁?

springmvc檔案 <!-- 配置攔截器 --> <mvc:interceptors> <mvc:interceptor> <!-- /**表示所有ur

ssm設定日誌攔截寫入日誌資訊至資料庫

新建maven專案,pom.xml中jar包如下:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:s

【Maven+SSM】Springmvc的統一處理之攔截

前言: 攔截器的使用場景: 程式中的所有請求的共同問題。 1、例如上一篇文章的亂碼問題。本文最後會講到亂碼問題的解決。 2、例如解決許可權驗證的問題。本文最後也會提到。 攔截器與過濾器的區別: 過濾器基於Servlet容器,基於回撥函式,範圍大。 攔截器Intercepto

SSM框架項目的mvc攔截

contex redirect del return exception http user 建立 use 為了防止用戶在不登錄的情況下通過並接請求直接訪問系統,我們需要通過session和攔截器來防止這樣的情況。 攔截器的配置: 為攔截器建立一個包:intercept

springMVC攔截和過濾器總結

cal .org 文件 bat system als request ping blog 攔截器: 用來對訪問的url進行攔截處理 用處: 權限驗證,亂碼設置等 spring-mvc.xml文件中的配置: <beans xmlns="http://www.sprin

SpringMVC的攔截

ica 現在 handle 3-9 keyword contain sha 但是 add SpringMVC的攔截器:   1.首先我們需要引入jar包,這就不用說了,   定義自己的攔截器實現HandlerInterceptor,進行方法的重寫。      2.配置web

今日隨筆攔截

prehandle post 資源 pos mage src 截器 不執行 == 佛龕:供奉佛像的小盒盒。 倫敦塔,位於泰晤士河的旁邊,威廉一世所建。 ===============攔截器================ =============多個=====

angular 攔截

tom string bottom margin time() 參數 ror cond 同時 介紹:$http service在Angular中用於簡化與後臺的交互過程,其本質上使用XMLHttpRequest或JSONP進行與後臺的數據交互。在與後臺的交互過程中,可能會對