多语言展示
当前在线:537今日阅读:23今日分享:25

spring mvc拦截器的编写

拦截器验证是否登录,以及跳转
方法/步骤
1

拦截器的编写必须实现HandleIntegerCeptor接口,在xml配置文件中 添加或者使用注解@EnableWebMvc时,系统就会初始化ConversionServiceInterceptor,他是一个开始就被springmvc系统默加载的拦截器,他的主要作用就是根据配置在控制器上的注解来完成对应的功能。

2

客户端发送请求,首先经过prehandle方法,此时获取绑定的数据,如果已经登录并且绑定数据则返回true,如果没有登录绑定数据则返回false并且跳转到其他的页面

3

public class LoginIntercepter extends HandlerInterceptorAdapter{ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)   throws Exception {  HttpSession session = request.getSession();  User u = (User) session.getAttribute('user');

4

if(u!=null){   System.out.println('拦截器验证登录');   return true;  }  System.out.println('拦截器验证未登录');  response.sendRedirect('login.do');  return false; }

5

此方法只有在请求期间发生异常时执行@Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,   ModelAndView modelAndView) throws Exception {  System.out.println('异常时执行');  super.postHandle(request, response, handler, modelAndView); }

6

@Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)   throws Exception {  System.out.println('拦截器执行完毕');  super.afterCompletion(request, response, handler, ex); }此方法会在拦截器成功时执行,如果发生异常则不执行此方法,该方法的执行依赖对应的preHandle 方法的返回值为true 时才会执行;

7

整个拦截器的模式责任链模式,(在一个请求或者链上有多个处理拦截)(个人理解),这种开发模式可以认为是责任链模式;

推荐信息