- 拦截器的配置 SpringMVC中的拦截器用于拦截控制器方法的执行
SpringMVC中拦截器需要实行HandlerInterceptor或者继承HanddlerInterceptorAdapter类
SpringMVC的拦截器必须在SrpingMVC的配置文件中进行配置
- 创建一个拦截器
//重写方法快捷键ctrl+ o
public class FirstInterceptor implements HandlerInterceptor {
//控制器方法执行之前执行
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
return HandlerInterceptor.super.preHandle(request, response, handler);
}
//控制器方法执行之后执行
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
}
//视图渲染之后执行
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
}
}
- 配置文件
<!--配置拦截器-->
<mvc:interceptors>
<!--单独使用<bean> 和 <ref>默认对所有请求进行拦截-->
<!--<bean class="com.csy.mvc.interceptors.FirstInterceptor"></bean>-->
<!--<ref> 这里需要将创建的的拦截器注入到ioc容器中-->
<!--<ref bean="firstInterceptor"></ref>-->
<mvc:interceptor>
<!--设置需要拦截的请求路径-->
<mvc:mapping path="/*"/>
<!--排除这个请求路径-->
<mvc:exclude-mapping path="/"/>
<!--配置要使用的拦截器-->
<ref bean="firstInterceptor"></ref>
</mvc:interceptor>
</mvc:interceptors>
- 拦截器的三个抽象方法 SpringMVC中的拦截器有三个抽象方法:
preHandle:控制器方法执行之前执行preHandle(),其boolean类型的返回值表示是否拦截或放行,返回true为放行,即调用控制器方法:返回false表示拦截,即不调用控制器方法
postHandle:控制器方法执行之后执行postHandle()
afterComplation:处理完视图和模型数据渲染视图完毕之后执行afterComplation()
- 拦截器的执行顺序
只跟我们在配置文件中的配置顺序有关,先配置谁谁在前,preHandle按配置顺序执行,其余两个执行顺序与配置顺序相反。
(待补全)