自定義攔截器
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>