1. 程式人生 > >.Net轉Java自學之路—SpringMVC框架篇九(攔截器)

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

pat java exce 需要 map public 路徑 lse div

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

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:放行 } }

攔截器配置:

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

<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全路徑"/>

  2、SpringMVC可以配置類似於全局的攔截器,SpringMVC框架將配置的類似全局的攔截器註入到每個HandlerMapping中。

<!-- 攔截器 -->
<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>

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