如何高效实现SpringBoot2中拦截器快速集成技巧?

2026-06-10 10:501阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计629个文字,预计阅读时间需要3分钟。

如何高效实现SpringBoot2中拦截器快速集成技巧?

概述+首先声明一下,这里所说的拦截器是SpringMVC的拦截器(HandlerInterceptor)。使用SpringMVC拦截器需要进行以下操作:+创建拦截器类需要实现HandlerInterceptor接口+在xml配置文件中配置该拦截器

概述

首先声明一下,这里所说的拦截器是 SpringMVC 的拦截器(HandlerInterceptor)。使用SpringMVC 拦截器需要做如下操作:

创建拦截器类需要实现 HandlerInterceptor

在 xml 配置文件中配置该拦截器,具体配置代码如下:

<mvc:interceptors> <mvc:interceptor> <!-- /test/** 这个是拦截路径以/test开头的所有的URL--> <mvc:mapping path="/**"/><!—这个是拦截所有的路径--> <!-- 配置拦截器类路径--> <bean class="cn.ljk.springmvc.controller.MyInterceptor"></bean> <!-- 配置不拦截器URL路径--> <mvc:exclude-mapping path="/fore/**"/> </mvc:interceptor> </mvc:interceptors>

因为在SpringBoot 中没有 xml 文件,所以SpringBoot 为我们提供 Java Config 的方式来配置拦截器。配置方式有2种:

  1. 继承 WebMvcConfigurerAdapter (官方已经不建议使用)
  2. 实现 WebMvcConfigurer

接下来开始 SpringBoot 整合拦截器操作详细介绍!

整合拦截器实战操作

第一步:声明拦截器类

通过实现 HandlerInterceptor 来完成。具体代码如下:

public class LoginInterceptor implements HandlerInterceptor{}

第二步:实现 HandlerInterceptor 3 个拦截方法

  • preHandle:Controller逻辑执行之前进行拦截
  • postHandle:Controller逻辑执行完毕但是视图解析器还未进行解析之前进行拦截
  • afterCompletion:Controller逻辑和视图解析器执行完毕进行拦截

实际开发中 preHandle 使用频率比较高,postHandle 和 afterCompletion操作相对比较少。在下面的代码中 preHandle 方法中定义拦截所有访问项目 url 并进行日志信息记录。

postHandle 中在视图解析前进行拦截,通过 Model 再次添加数据到 Request域中。

afterCompletion 暂时没有想到使用场景,如果有使用过的场景可以在下面评论区中进行评论。

拦截器详细代码如下:

public class LoginInterceptor implements HandlerInterceptor{ private Logger log = LoggerFactory.getLogger(LoginInterceptor.class); //ControllerController逻辑执行之前 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { log.info("preHandle...."); String uri = request.getRequestURI(); log.info("uri:"+ uri); if (handler instanceof HandlerMethod) { HandlerMethod handlerMethod = (HandlerMethod) handler; log.info("拦截 Controller:"+ handlerMethod.getBean().getClass().getName()); log.info("拦截方法:"+handlerMethod.getMethod().getName()); } return true; } //Controller逻辑执行完毕但是视图解析器还未进行解析之前 @Override public void postHandle(HttpServletRequest github.com/zhuoqianmingyue/springbootexamples

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。

如何高效实现SpringBoot2中拦截器快速集成技巧?
标签:方法

本文共计629个文字,预计阅读时间需要3分钟。

如何高效实现SpringBoot2中拦截器快速集成技巧?

概述+首先声明一下,这里所说的拦截器是SpringMVC的拦截器(HandlerInterceptor)。使用SpringMVC拦截器需要进行以下操作:+创建拦截器类需要实现HandlerInterceptor接口+在xml配置文件中配置该拦截器

概述

首先声明一下,这里所说的拦截器是 SpringMVC 的拦截器(HandlerInterceptor)。使用SpringMVC 拦截器需要做如下操作:

创建拦截器类需要实现 HandlerInterceptor

在 xml 配置文件中配置该拦截器,具体配置代码如下:

<mvc:interceptors> <mvc:interceptor> <!-- /test/** 这个是拦截路径以/test开头的所有的URL--> <mvc:mapping path="/**"/><!—这个是拦截所有的路径--> <!-- 配置拦截器类路径--> <bean class="cn.ljk.springmvc.controller.MyInterceptor"></bean> <!-- 配置不拦截器URL路径--> <mvc:exclude-mapping path="/fore/**"/> </mvc:interceptor> </mvc:interceptors>

因为在SpringBoot 中没有 xml 文件,所以SpringBoot 为我们提供 Java Config 的方式来配置拦截器。配置方式有2种:

  1. 继承 WebMvcConfigurerAdapter (官方已经不建议使用)
  2. 实现 WebMvcConfigurer

接下来开始 SpringBoot 整合拦截器操作详细介绍!

整合拦截器实战操作

第一步:声明拦截器类

通过实现 HandlerInterceptor 来完成。具体代码如下:

public class LoginInterceptor implements HandlerInterceptor{}

第二步:实现 HandlerInterceptor 3 个拦截方法

  • preHandle:Controller逻辑执行之前进行拦截
  • postHandle:Controller逻辑执行完毕但是视图解析器还未进行解析之前进行拦截
  • afterCompletion:Controller逻辑和视图解析器执行完毕进行拦截

实际开发中 preHandle 使用频率比较高,postHandle 和 afterCompletion操作相对比较少。在下面的代码中 preHandle 方法中定义拦截所有访问项目 url 并进行日志信息记录。

postHandle 中在视图解析前进行拦截,通过 Model 再次添加数据到 Request域中。

afterCompletion 暂时没有想到使用场景,如果有使用过的场景可以在下面评论区中进行评论。

拦截器详细代码如下:

public class LoginInterceptor implements HandlerInterceptor{ private Logger log = LoggerFactory.getLogger(LoginInterceptor.class); //ControllerController逻辑执行之前 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { log.info("preHandle...."); String uri = request.getRequestURI(); log.info("uri:"+ uri); if (handler instanceof HandlerMethod) { HandlerMethod handlerMethod = (HandlerMethod) handler; log.info("拦截 Controller:"+ handlerMethod.getBean().getClass().getName()); log.info("拦截方法:"+handlerMethod.getMethod().getName()); } return true; } //Controller逻辑执行完毕但是视图解析器还未进行解析之前 @Override public void postHandle(HttpServletRequest github.com/zhuoqianmingyue/springbootexamples

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。

如何高效实现SpringBoot2中拦截器快速集成技巧?
标签:方法