springmvc攔截器實現

在springmvc中能夠配置本身的攔截器,分別實如今請求方法以前、顯示視圖以前、顯示視圖以後調用攔截器中的方法。java

  • 首先建立一個java類,而且實現HandlerInterceptor接口,而且實現該接口中的三個方法。
/** * 該方法在目標方法以前被調用. * 若返回值爲 true, 則繼續調用後續的攔截器和目標方法. * 若返回值爲 false, 則不會再調用後續的攔截器和目標方法. * <p> * 用途:作權限. 日誌, 事務等. */
    @Override
    public boolean preHandle(HttpServletRequest request,
                             HttpServletResponse response, Object handler) throws Exception {
        System.out.println("[FirstInterceptor] preHandle");
        return true;
    }

    /** * 調用目標方法以後, 但渲染視圖以前. * 用途:對請求域中的屬性或視圖作出修改. */
    @Override
    public void postHandle(HttpServletRequest request,
                           HttpServletResponse response, Object handler,
                           ModelAndView modelAndView) throws Exception {
        System.out.println("[FirstInterceptor] postHandle");
    }

    /** * 渲染視圖以後被調用. * 用途:釋放資源 */
    @Override
    public void afterCompletion(HttpServletRequest request,
                                HttpServletResponse response, Object handler, Exception ex)
            throws Exception {
        System.out.println("[FirstInterceptor] afterCompletion");
    }
  • 設置好的本身的攔截器之後須要在springmvc中配置攔截器,在此處用一樣道理實現了另外一個攔截器,名爲MySecondInterceptors。
  • 在springmvc的配置文件中加入以下代碼
<mvc:interceptors>
        <!--表示在請求全部的控制器方法以前都會調用該攔截器-->
        <bean class="com.springapp.interceptors.MyFirstInterceptors"/>

        <!--表示在訪問指定的控制器方法時纔會調用的攔截器-->
        <mvc:interceptor>
            <mvc:mapping path="/user/"/>
            <bean class="com.springapp.interceptors.MySecondInterceptors"/>
        </mvc:interceptor>

    </mvc:interceptors>
相關文章
相關標籤/搜索