***拦截器

124 阅读1分钟
  • 拦截器的配置 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按配置顺序执行,其余两个执行顺序与配置顺序相反。

(待补全)