spring自定義攔截器

自定義攔截器

package com.interceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
/**
 * 自定義攔截器,需要實現 HandlerInterceptor 接口
 * @author pengfei.xiong
 *
 */
public class MyInterceptor implements HandlerInterceptor{
    /**
     * 該方法在處理器方法執行之前執行。其返回值爲 boolean,若爲 true,則緊接着會執行處理器方
          法,且會將 afterCompletion()方法放入到一個專門的方法棧中等待執行
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {
        System.out.println("正在執行----------preHandle");
        return true;
    }

    /**
     * 該方法在處理器方法執行之後執行。處理器方法若最終未被執行,則該方法不會執行。
          由 於該方法是在處理器方法執行完後執行,且該方法參數中包含 ModelAndView,所以該方法可以修
          改處理器方法的處理結果數據,且可以修改跳轉方向
     */
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
            ModelAndView modelAndView) throws Exception {
        System.out.println("正在執行----------postHandle");
    }

    /**
     * 當 preHandle()方法返回 true 時,會將該方法放到專門的方法棧中,等到對請求進行響應的所有
          工作完成之後才執行該方法。即該方法是在中央調度器渲染(數據填充)了響應頁面之後執行的,此
          時對 ModelAndView 再操作也對響應無濟於事
     */
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
            throws Exception {
        System.out.println("正在執行----------afterCompletion");
    }

}

在springmvc.xml中註冊攔截器

<!-- 註冊攔截器 -->
    <mvc:interceptors>
        <mvc:interceptor>
        <!-- 攔截所有 -->
            <mvc:mapping path="/**"/>
            <bean class="com.interceptor.MyInterceptor"/>
        </mvc:interceptor>
    </mvc:interceptors>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章