Spring 拦截器

这篇具有很好参考价值的文章主要介绍了Spring 拦截器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

Spring 拦截器今日良言:心若有所向往,何惧道阻且长

Spring 拦截器一、Spring 拦截器

1.拦截器简介

2.实现自定义拦截器


今日良言:心若有所向往,何惧道阻且长

Spring 拦截器

一、Spring 拦截器

1.拦截器简介

Spring Boot 拦截器是面向切面编程-----AOP 的具体实现,用于对请求做预处理。

正常情况下的调用顺序:

Spring 拦截器

 当有了拦截器之后,会对用户的请求进行预处理,也就是在Controller之前进行相应的业务处理,如下:

Spring 拦截器

2.实现自定义拦截器

实现一个自定义拦截器主要分为两步:

1).定义拦截器

   创建⾃定义拦截器,实现 HandlerInterceptor 接⼝的 preHandle(执⾏具体⽅法之前的预处理)方法。

代码如下:

/**
 * 自定义拦截器
 */
@Component // 存入spring容器中
public class LoginInterceptor implements HandlerInterceptor {
    // 调用目标方法之前执行的方法
    // 此方法返回boolean 类型的值
    // 如果返回的是true 表示拦截器拦截成功 继续走后面的流程  执行目标方法
    // 如果返回的是false 表示拦截器拦截失败, 验证不通过,后续的流程和目标方法不要执行了。
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        HttpSession session = request.getSession(false);// 没有就不创建session
        if (session != null && session.getAttribute("user") != null) {
            return true;
        }
        // 设置返回数据格式
        response.setContentType("application/json;charset=utf8");
        response.getWriter().println("{\"code\":-1,\"msg\":\"登录失败\",\"data\":\"\"}");
        return false;
    }
}

2),配置拦截规则

将⾃定义拦截器加⼊ WebMvcConfigurer 的 addInterceptors ⽅法中。

/**
 * @author 26568
 * @date 2023-05-15 20:11
 */
@Configuration   // 配置项 
public class MyConfig implements WebMvcConfigurer {
    @Autowired
    private LoginInterceptor loginInterceptor;
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(loginInterceptor)
                .addPathPatterns("/**")   // * 表示拦截一级URL ** 表示拦截所有URL
                .excludePathPatterns("/user/login")  // 排除url   /user/login 不拦截
                .excludePathPatterns("/user/reg")    // 排除url  /user/reg    不拦截
        ;
    }
}

在controller包下创建一个UserController来进行相关操作。

Spring 拦截器

 代码如下:

/**
 * @author 26568
 * @date 2023-05-15 20:15
 */
@RestController
@RequestMapping("/user")
public class UserController {
    @RequestMapping("/login")
    public String login() {
        return "login";
    }
    @RequestMapping("/reg")
    public Object register() {
        return "reg";
    }
    @RequestMapping("/index")
    public Object index() {
        return "index";
    }
}

然后启动项目,查看效果:

当访问url 为 127.0.0.1:8080/user/reg 和 127.0.0.1:8080/user/login 时,由于没有拦截,会看到返回结果:

Spring 拦截器

Spring 拦截器

 但是此时访问127.0.0.1:8080/user/index 时,会被拦截。

Spring 拦截器

 这里拦截以后返回的结果,就是之前定义拦截器返回的结果。由于这里是简单的代码,并没有session,所以会返回false,但是这里拦截成功了。文章来源地址https://www.toymoban.com/news/detail-447033.html

到了这里,关于Spring 拦截器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • spring boot 拦截器例子

    在Spring Boot中,拦截器是通过实现`HandlerInterceptor`接口来实现的。它允许你在请求到达控制器方法之前和之后执行自定义的逻辑。下面我将为你提供一个简单的Spring Boot拦截器的例子。 假设我们有一个简单的控制器类`UserController`,其中有两个请求处理方法:`getUser`和`saveUser`,

    2024年02月15日
    浏览(38)
  • Spring拦截器实现鉴权

    拦截器(Interceptor)类似于Servlet中的过滤器,主要用于拦截用户请求并做出相应的处理,例如拦截器可以进行权限验证、记录请求信息的日志、判断用户是否登录等。拦截器允许自定义预处理(Pre-Processing),在其中可以选择禁止对应Handler 的执行;也允许自定义后处理(Post-Pre

    2024年02月11日
    浏览(36)
  • Spring Boot 配置拦截器

    通过拦截器,我们可以针对特定 URI 做拦截,做相关业务处理,比如检查用户是否登录,打印每个请求的处理耗时等。 新建登录验证类  LoginValidationInterceptor.java : 定义一个拦截器类后,您需要实现  HandlerInterceptor  接口,其有三个方法可以重写: preHandle : 在调用 Controller 方

    2024年02月08日
    浏览(56)
  • Spring 统一功能处理(拦截器)

    SpringBoot统一功能处理。也就是AOP的具体实现。 最原始的用户登录验证方法,我们通过封装了一个方法来判断用户是否登录,但如果实现的功能多了,那么每一个需要登录的功能都要在对应的接口中来调用这个函数来判读是否登录。 上面的代码虽然已经封装成了方法,但是如

    2024年02月03日
    浏览(52)
  • Spring MVC学习之——拦截器

    Spring MVC中的拦截器(Interceptor)类似于Servlet中的过滤器(Filter),它主要用于拦截用户请求并作相应的处理。例如通过拦截器可以进行权限验证、判断用户是否登录等。 ​ 拦截器依赖于web框架,在实现上基于Java的反射机制,属于面向切面编程(AOP)的一种运用。 Spring的拦

    2024年01月20日
    浏览(46)
  • 【Spring Boot系列】- Spring Boot拦截器

    拦截器(Interceptor)是在面向切面编程中应用的,就是在service或者一个方法前调用一个方法,或者在方法后调用一个方法。是基于JAVA的反射机制。可以根据 URL 对请求进行拦截,主要应用于登陆校验、权限验证、乱码解决、性能监控和异常处理等功能。 在 Spring Boot 项目中,

    2024年02月13日
    浏览(38)
  • Spring Boot统一处理功能——拦截器

    ⽤户登录权限的发展从之前每个⽅法中⾃⼰验证⽤户登录权限,到现在统⼀的⽤户登录验证处理,它是⼀个逐渐完善和逐渐优化的过程。 我们先来回顾⼀下最初⽤户登录验证的实现⽅法: 从上述代码可以看出,每个⽅法中都有相同的⽤户登录验证权限,它的缺点是: 1. 每个

    2024年02月13日
    浏览(34)
  • Spring Boot拦截器(Interceptor)详解

    **拦截器(Interceptor)**同 Filter 过滤器一样,它俩都是面向切面编程——AOP 的具体实现(AOP切面编程只是一种编程思想而已)。 你可以使用 Interceptor 来执行某些任务,例如在 Controller 处理请求之前编写日志,添加或更新配置…… 在 Spring 中,当请求发送到 Controller 时,在被 Contr

    2024年02月03日
    浏览(39)
  • 【Spring Boot】拦截器与统一功能处理

    博主简介:想进大厂的打工人 博主主页: @xyk: 所属专栏: JavaEE进阶   上一篇文章我们讲解了Spring AOP是一个基于面向切面编程的框架,用于将某方面具体问题集中处理,通过代理对象来进行传递,但使用原生Spring AOP实现统一的拦截是非常繁琐的。而在本节,我们将使用一种

    2024年02月14日
    浏览(39)
  • Spring中添加打印请求头的拦截器

    因为最近这个项目没有调用链监控系统的支持,但是,本地PostMan调试的时候又需要请求头才能正常调试。 喊ChatGPT实现一下能够打印所有请求头的拦截器,然后,集成到已有代码即可。 在Springboot的配置类中集成上面的拦截器即可。 这就是简单使用HandlerInterceptor,实现自己的

    2024年02月09日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包