> 文档中心 > SSM框架学习10-springmvc拦截器

SSM框架学习10-springmvc拦截器

跟filter作用一样,spring-mvc封装好的过滤器被称为拦截器,也就是可以在不同情况下,对不同事务进行一个筛选拦截——interceptor

目录

1. 编写拦截器类

2. 配置拦截器


1. 编写拦截器类

和controller一样,创建一个名为interceptor的包放入自己定义的interceptor类,可以定义多个从而设置成拦截器链,编写如下:

//使用inteceptor时覆盖以下三个方法public class Myinteceptor1 implements HandlerInterceptor {    @Override//在目标响应方法执行之前执行,一般用于验证某个值,正确则给予响应,不正确则转发其他页面回去    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("preHandle。。。"); String password=request.getParameter("password"); if(Objects.equals(password, "123456")){     return true; } request.getRequestDispatcher("/index.jsp").forward(request,response); return false;//这个地方false代表阻止,true代表放行    }    @Override//在目标响应方法执行之后,视图返回之前执行    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("postHandle。。。");    }    @Override//整个流程都执行完毕后执行    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println("afterCompletion。。。");    }}

实质上是一种对接口的实现,一般我们需要用到的方法就上述的三种,各自的方法名以及特点已经做出注释,最常用的就是第一种方法,即在响应的方法执行前进行拦截判断,一般用于验证某事物,拦截链使用时根据业务需求灵活运用三者的拦截方法。

2. 配置拦截器

有了拦截器,我们还需知道要拦截的对象是谁,因此需要在spring-mvc.xml中配置我们的拦截器:

                    

以上的path就选择需要拦截的资源,class选择对这个资源使用什么拦截方法的类,当我们在这个配置文件中配置多个这段代码时,也就决定了不同拦截器的顺序,决定了拦截器链的连接方式。