SpringMVC interceptor攔截器配置使用(源碼)__spring

來源:互聯網
上載者:User

兩步 配置 Spring mvc 攔截器 interceptor 一攔截器 第一步實現HandlerInterceptor介面 第二步註冊進spring

兩步 配置 Spring mvc 攔截器 interceptor 一.攔截器.

區別於過濾器,攔截器是基於java的反射機制的,而過濾器是JavaEE標準,採用函數回調的方式進行的。詳細區別參見:Java過濾器與SpringMVC攔截器之間的關係與區別

在springMVC中,攔截器(HandlerInterceptor)是一個介面(interface),使用時必須重寫三個方法 :

          preHandler():在進入Handler之前執行了,使用於身份認證,身份授權,登陸校正等,比如身份認證,使用者沒有登陸,攔截不再向下執行,傳回值為 false ,即可實現攔截;否則,返回true時,攔截不進行執行;          postHandler(): 進入Handler方法之後,返回ModelAndView之前執行,使用情境從ModelAndView參數出發,比如,將公用的模型資料在這裡傳入到視圖,也可以統一指定顯示的視圖等;         afterHandler(): 類似finally語句塊或者C++的解構函式,在執行Handler結束後執行,一般用於異常、Tlog等;

引自: http://blog.csdn.net/lablenet/article/details/50483674 第一步:實現HandlerInterceptor介面

例子中,攔截除/login 外的所有請求:

package site.gaoyisheng.filter;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;import site.gaoyisheng.pojo.User;public class LoginHandlerInterceptor implements HandlerInterceptor {    @Override    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)            throws Exception {        String requestURI = request.getRequestURI();        if (!requestURI.equalsIgnoreCase("/trans/login")) {            // 說明處在編輯的頁面            User currentUser = (User) request.getSession().getAttribute("currentUser");            if (currentUser != null) {                // 登陸成功的使用者                return true;            } else {                // 沒有登陸,轉向登陸介面                request.getRequestDispatcher("/login").forward(request, response);                return false;            }        } else            return true;    }    @Override    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,            ModelAndView modelAndView) throws Exception {    }    @Override    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)            throws Exception {    }}
第二步:註冊進spring

在SpringMVC.xml配置中,註冊攔截器.

<mvc:interceptors>    <mvc:interceptor>        <mvc:mapping path="/**" />        <bean class="site.gaoyisheng.filter.LoginHandlerInterceptor"></bean>    </mvc:interceptor></mvc:interceptors>

源碼:歡迎交流.
https://github.com/timo1160139211/trans

參考資料:
http://blog.csdn.net/lablenet/article/details/50483674
http://www.imooc.com/learn/498

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.