1 拦截器
Spring Web MVC 的处理拦截器类似于Servlet开发中的过滤器filter,用于对处理器进行预处理和后处理。
1.1 拦截器定义
实现HandlerInterceptor接口,如下:
public class MyHanlerInterceptor implements HandlerInterceptor{
/**
* controller执行前调用此方法
* 返回true表示继续执行,返回false中止执行
*这里可以加入登录校验,权限拦截等
*/
@Override
public boolean preHandle(HttpServletRequest request,HttpSerletReponse response ,Object handler) throws Exception{}
/**
* controller执行后但未返回试图前调用此方法
* 这里可在返回用户前对模型数据进行加工处理,比如这里加入公用信息以便页面显示
*/
@Override
public void postHandle(HttpServletRequest request,HttpServletResponse response,Object handler,ModelAndView)throws Exception{}
/**
* controller执行后且视图返回后调用此方法
* 这里可得到执行controller时的异常信息
*这里可以记录操作日志,资源清理等。
*/
@Override
public void afterCompletion(HttpServletRequest request,HttpServletResponse response,Object handler,Exception e)throws Exception{}
}
1.2拦截器配置
1.2.1 针对某种mapping配置拦截器
<bean
class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
<property name="interceptors">
<list>
<ref bean="myHandlerInterceptor"/>
</list>
</property>
</bean>
<bean id=" myHandlerInterceptor "
class="springmvc.intercapter. myHandlerInterceptor "/>
1.2.2针对所有mapping配置全局拦截器
!--拦截器 -->
<mvc:interceptors>
<!--多个拦截器,顺序执行 -->
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="cn.itcast.springmvc.filter.HandlerInterceptor1"></bean>
</mvc:interceptor>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="cn.itcast.springmvc.filter.HandlerInterceptor2"></bean>
</mvc:interceptor>
</mvc:interceptors>