.Net轉Java自學之路—SpringMVC框架篇九(攔截器)

定義攔截器須要實現HandlerInterceptor接口,該接口中由三個方法:afterCompletion、postHandle、preHandle。web

public class TestHandlerInterceptor implements HandlerInterceptor {

    /**
     * 執行Handler後執行。
     * 能夠在該方法進行統一的異常處理、統一的日誌處理
     */
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
            throws Exception {
        
    }

    /**
     * 進入Handler方法以後,返回ModelAndView以前執行。
     * 應用場景從ModelAndView出發,將公用的模型數據在該方法傳到視圖。
     * 也能夠統一指定視圖。
     */
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
            ModelAndView modelAndView) throws Exception {
        
    }

    /**
     * 進入Handler方法以前執行
     * 該方法能夠用於身份認證、身份受權。
     * 如身份認證未經過,須要此方法攔截再也不向下執行。
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {

        return false;//false:攔截。true:放行
    }

}

攔截器配置:spring

  一、SpringMVC的攔截器是針對HandlerMapping進行攔截設置。
    若在某個HandlerMapping中配置攔截,通過該HandlerMapping映射成功的Handler最終使用該攔截器。mvc

<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
    <property name="interceptors">
        <list>
            <ref bean="handlerInterceptor1"/>
            <ref bean="handlerInterceptor2"/>
        </list>
    </property>
</bean>
<bean id="handlerInterceptor1" class="handlerInterceptor1全路徑"/>
<bean id="handlerInterceptor2" class="handlerInterceptor2全路徑"/>

  二、SpringMVC能夠配置相似於全局的攔截器,SpringMVC框架將配置的相似全局的攔截器注入到每一個HandlerMapping中。app

<!-- 攔截器 -->
<mvc:interceptors>
    <!-- 多個攔截器,順序執行 -->
    <mvc:interceptor>
        <!-- /**:表示全部url包含子url路徑 -->
        <mvc:mapping path="/**"/>
        <bean class="handlerInterceptor1全路徑"></bean>
    </mvc:interceptor>
    <mvc:interceptor>
        <mvc:mapping path="/**"/>
        <bean class="handlerInterceptor2全路徑"></bean>
    </mvc:interceptor>
</mvc:interceptors>
相關文章
相關標籤/搜索