Spring MVC學習-day06

Spring MVC 攔截器spring

攔截器的執行流程圖

Spring MVC學習-day06

代碼清單

在Spring MVC的配置文件中配置攔截器(這裏配置了兩個攔截器)mvc

<!-- 配置攔截器 -->
    <mvc:interceptors>
        <mvc:interceptor>
            <!-- 配置要攔截的請求 -->
            <mvc:mapping path="/*"/>
            <!-- 配置自定義的攔截器 -->
            <bean class="com.zgz.springmvc.interceptors.FirstInterceptor"></bean>
        </mvc:interceptor>
        <mvc:interceptor>
            <!-- 配置多個攔截器 -->            
            <mvc:mapping path="/*"/>
            <bean class="com.zgz.springmvc.interceptors.SecondInterceptor"></bean>
        </mvc:interceptor>
    </mvc:interceptors>

攔截器必須實現HandlerInterceptor接口,該接口定義了三個方法,掌握這三個方法的做用和有多個攔截器時的執行過程便可
多個攔截器時的執行流程圖
Spring MVC學習-day06
兩個攔截器app

public class FirstInterceptor implements HandlerInterceptor {

    /**
     * 該方法在目標方法以前調用
     * 若該方法返回值爲true,則繼續調用後續的攔截器和目標方法
     * 若返回值爲false,則不會調用後續的攔截器和目標方法
     * 
     * 能夠考慮作權限,日誌,事務等
     * @return
     * @throws Exception
     */
    @Override
    public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
        System.out.println("preHandle: ");
        return true;
    }

    /**
     * 調用目標方法以後,但在渲染視圖以前
     * 能夠對請求域中的屬性或視圖作出修改
     * @throws Exception
     */
    @Override
    public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
            throws Exception {
        System.out.println("postHandle: ");
    }

    /***
     * 渲染試圖以後被調用
     * 能夠釋放資源
     * @throws Exception
     */
    @Override
    public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
            throws Exception {
        System.out.println("afterCompletion: ");
    }

}
public class SecondInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
        System.out.println("preHandle2: ");
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
            throws Exception {
        System.out.println("postHandle2: ");
    }

    @Override
    public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
            throws Exception {
        System.out.println("afterCompletion2: ");
    }

}

執行結果
Spring MVC學習-day06ide

相關文章
相關標籤/搜索