SpringMVC拦截器

深碍√TFBOYSˉ_ 2022-04-06 02:56 215阅读 0赞

编写拦截器

  1. package com.platform.interceptor;
  2. import javax.servlet.http.HttpServletRequest;
  3. import javax.servlet.http.HttpServletResponse;
  4. import org.slf4j.Logger;
  5. import org.slf4j.LoggerFactory;
  6. import org.springframework.web.servlet.HandlerInterceptor;
  7. import org.springframework.web.servlet.ModelAndView;
  8. /**
  9. * 测试SpringMVC拦截器
  10. *
  11. * @author Joey
  12. * @project:copyright_platform
  13. * @date:2017年4月27日
  14. *
  15. */
  16. public class TestInterceptor implements HandlerInterceptor {
  17. private Logger logger = LoggerFactory.getLogger(getClass());
  18. /**
  19. * 在业务处理器处理请求之前被调用 如果返回false 从当前的拦截器往回执行所有拦截器的afterCompletion(),再退出拦截器链
  20. *
  21. * 如果返回true 执行下一个拦截器,直到所有的拦截器都执行完毕 再执行被拦截的Controller 然后进入拦截器链,
  22. * 从最后一个拦截器往回执行所有的postHandle() 接着再从最后一个拦截器往回执行所有的afterCompletion()
  23. */
  24. @Override
  25. public boolean preHandle(HttpServletRequest request,
  26. HttpServletResponse response, Object handler) throws Exception {
  27. logger.info("==============执行顺序: 1、preHandle================");
  28. String url = request.getRequestURL().toString();
  29. if (url.matches("admim/login")) {
  30. request.getRequestDispatcher("/admin/login.html").forward(request,
  31. response);
  32. return false;
  33. }
  34. return true;
  35. }
  36. /**
  37. * 在业务处理器处理请求执行完成后,生成视图之前执行的动作
  38. */
  39. @Override
  40. public void postHandle(HttpServletRequest request,
  41. HttpServletResponse response, Object handler,
  42. ModelAndView modelAndView) throws Exception {
  43. logger.info("==============执行顺序: 2、postHandle================");
  44. }
  45. /**
  46. * 在DispatcherServlet完全处理完请求后被调用
  47. *
  48. * 当有拦截器抛出异常时,会从当前拦截器往回执行所有的拦截器的afterCompletion()
  49. */
  50. @Override
  51. public void afterCompletion(HttpServletRequest request,
  52. HttpServletResponse response, Object handler, Exception ex)
  53. throws Exception {
  54. logger.info("==============执行顺序: 3、afterCompletion================");
  55. }
  56. }

简单的就是进行日志的一个打印功能!

可以自己实现想要的功能

SpringMVC的配置文件:

  1. <!-- 在实际开发中通常都需配置 mvc:annotation-driven标签,这个标签是开启注解 -->
  2. <mvc:annotation-driven></mvc:annotation-driven>
  3. <mvc:interceptors>
  4. <mvc:interceptor>
  5. <mvc:mapping path="/admin/**" />
  6. <mvc:exclude-mapping path="admin/sys/login" />
  7. <bean class="com.platform.interceptor.TestInterceptor" />
  8. </mvc:interceptor>
  9. </mvc:interceptors>

mvc:mapping是你要映射的拦截路径 可以有多个

mvc:exclude-mapping 是你排除映射的拦截路径,也可以有多个

下面那个bean 就是你自定义的拦截器了

发表评论

表情:
评论列表 (有 0 条评论,215人围观)

还没有评论,来说两句吧...

相关阅读

    相关 SpringMVC:拦截

    简介: 拦截器本身并不重要,但在源码中很重要。 拦截器用于拦截请求,用于在处理器执行前进行预处理或者处理执行完进行尾处理。 其作用类似于过滤器,不同的是过滤器是ser

    相关 springmvc拦截

    1. springmvc拦截器使用和原理理解 1.1 作用 与struts2类似,springmvc的拦截器主要作用也是在服务端真正处理请求前后进行一些相关的操作