您当前的位置: 首页 >  spring

不讲废话,全程干货,0基础带你学习SpringMVC拦截处理器

发布时间:2021-10-14 19:51:33 ,浏览量:0

1 工作原理流程图

2 Spring Web MVC 的处理器拦截器
  • HandlerInterceptor 类似Servlet 开发中的过滤器Filter,用于对处理器进行预处理和后处理。

HandlerInterceptor接口定义了如下方法:

preHandle

该方法将在请求处理之前进行调用,只有当该方法返回true时,才会继续调用下一个Interceptor的preHandle(),如果已是最后一个Interceptor就会是调用当前请求的Controller

postHandle

该方法将在请求处理后,DispatcherServlet进行视图返回渲染之前进行调用,可以在这个方法中对Controller处理之后的ModelAndView对象进行操作(比如这里加入公用信息以便页面显示)

2.3 afterCompletion

该方法也是需要当前对应的Interceptor的preHandle方法的返回值为true时才会执行,该方法将在整个请求结束之后,也就是在DispatcherServlet渲染了对应的视图之后执行 用于资源清理

3 拦截器配置 3.1 针对某种mapping拦截器配置
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"> <property name="interceptors"> <list> <ref bean="handlerInterceptor1"/> <ref bean="handlerInterceptor2"/>  <mvc:interceptors>  <mvc:interceptor> <mvc:mapping path="/**"/> <bean class="com.sss.filter.HandlerInterceptor1"> @Override Public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //如果是登录页面则放行  if(request.getRequestURI().indexOf("login.action")>=0){ return true; } HttpSession session = request.getSession(); //如果用户已登录也放行  if(session.getAttribute("user")!=null){ return true; } //用户没有登录挑战到登录页面  request.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request, response); return false; } 
关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    115984博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.1166s