SpringMVC攔截器(Interceptor)

自定義攔截器
Spring MVC也可以使用攔截器對請求進行攔截處理,用戶可以自定義攔截器來實現特定的功能,自定義的攔截器必 須實現HandlerInterceptor接口
1.自定義實現類實現 HandlerInterceptor接口

public class Interceptor implements HandlerInterceptor{

    @Override
    public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, java.lang.Object arg2,
            Exception arg3) throws Exception {
        // TODO Auto-generated method stub
        System.out.println("afterCompletion");
    }

    @Override
    public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, java.lang.Object arg2, ModelAndView arg3)
            throws Exception {
        // TODO Auto-generated method stub
        System.out.println("postHandle");
    }

    @Override
    public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, java.lang.Object arg2)
            throws Exception {
        // TODO Auto-generated method stub
        System.out.println("preHandle");
        return true;
    }
}

– preHandle():該方法在目標方法之前被調用,
若返回值爲true,則繼續調用後續的攔截器和目標方法
若返回值爲false,則不會再調用後續的攔截器和目標方法
可以考慮做權限,日誌或者事務等!

– postHandle():調用目標方法之後,但渲染視圖之前被調用
可以對請求域中的屬性或者視圖做出修改!

– afterCompletion():渲染視圖之後被調用,
可以在該方法中進行一些資源清理的操作。

方法的執行順序:
preHandle
Controller類中的執行方法
postHandle
afterCompletion

2.在springmvc配置文件中配置相對應的攔截器

    <mvc:interceptors>
            <!--配置自定義攔截器 ,所有的路徑都攔截 -->
            <bean class="com.neuedu.springmvc.filter.MyFilter"></bean>
        </mvc:interceptors>

       關於攔截器的配置:
        <mvc:interceptors>
            <!--配置自定義攔截器 ,所有的路徑都攔截 -->
            <bean class="com.neuedu.springmvc.filter.MyFilter"></bean>
            <!-- 關於攔截器的配置問題 ,可以通過<mvc:interceptor>來配置使用哪個攔截器來【不】攔截的路徑-->
            <mvc:interceptor>
                <!-- 用<mvc:mapping>標籤指定要攔截的路徑 -->
                <mvc:mapping path="/employ"/>
                <!-- 指定使用哪個攔截器進行攔截 -->
                <bean class="com.neuedu.springmvc.filter.SecondFilter"></bean>
            </mvc:interceptor>
        </mvc:interceptors>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章