springbboot拦截器,过滤器,监听器及执行流程

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

执行流程

过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的。请求结束返回也是,是在servlet处理完后,返回给前端之前

springbboot拦截器,过滤器,监听器及执行流程,java基础(前后端),java,过滤器
请求按照上图进入conteoller后执行完再返回

过滤器(Filter):

过滤器是Servlet规范中定义的一种组件,可以用于在请求进入Web应用程序之前或响应离开Web应用程序之前对请求进行预处理或后处理。过滤器的应用方式是通过在web.xml或Servlet注解中配置。

执行流程:
请求进入Web容器 → 过滤器预处理请求 → 请求传递给下一个过滤器或目标Servlet → 响应离开Web容器之前过滤器后处理响应。

拦截器(Interceptor):

拦截器是Spring框架提供的一种组件,可以用于在请求进入控制器(Controller)之前或渲染视图之前执行自定义逻辑。拦截器的应用方式是通过实现HandlerInterceptor接口并注册到Spring容器中。

执行流程:
请求进入DispatcherServlet → 拦截器预处理请求 → 请求传递给下一个拦截器或控制器 → 控制器处理请求 → 渲染视图 → 拦截器后处理响应。

监听器(Listener):

监听器是Servlet规范中定义的一种组件,可以用于监听Web应用程序中的事件,例如应用程序启动、请求到达、会话创建和销毁等。监听器的应用方式是通过在web.xml或Servlet注解中配置。

执行流程:
监听器注册到Web容器中 → 监听器监听特定事件发生并执行相应逻辑。

拦截器的使用

创建一个拦截器类:
首先,您需要创建一个实现HandlerInterceptor接口的拦截器类。该接口定义了在请求处理的不同阶段执行的方法,例如在请求之前、请求处理之后以及请求完成之后。

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CustomInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 在请求之前执行的逻辑
        return true; // 返回true继续执行请求,返回false中断请求
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        // 在请求处理之后执行的逻辑
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        // 在请求完成之后执行的逻辑
    }
}

注册拦截器:
接下来,您需要将拦截器注册到Spring Boot应用程序中。可以通过创建一个配置类来完成这一步,使用WebMvcConfigurer接口的addInterceptors()方法注册拦截器。

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class InterceptorConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new CustomInterceptor())
                .addPathPatterns("/**"); // 可以指定拦截的路径,例如 "/api/**"
    }
}

过滤器的使用

创建一个过滤器类:
创建一个实现javax.servlet.Filter接口的过滤器类,实现过滤器的逻辑。

import javax.servlet.*;
import java.io.IOException;

public class CustomFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        // 初始化过滤器(可选)
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        // 过滤逻辑
        chain.doFilter(request, response); // 传递请求给下一个过滤器或目标Servlet
    }

    @Override
    public void destroy() {
        // 销毁过滤器(可选)
    }
}

注册过滤器:
在Spring Boot项目中,您可以使用@WebFilter注解来注册过滤器。在您想要应用过滤器的类上添加该注解,并设置过滤器的URL模式。

import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

@Component
@WebFilter(urlPatterns = "/api/*") // 指定过滤的URL模式
@Order(1) // 指定过滤器顺序
public class CustomFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        // 初始化过滤器(可选)
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        // 过滤逻辑
        chain.doFilter(request, response); // 传递请求给下一个过滤器或目标Servlet
    }

    @Override
    public void destroy() {
        // 销毁过滤器(可选)
    }
}

启动应用程序:
在启动Spring Boot应用程序时,过滤器将自动注册并应用于相应的URL模式。

请注意,当使用注解进行过滤器的注册时,需要确保在Spring Boot主类上添加@ServletComponentScan注解,以扫描和加载@WebFilter注解。

这样,您就可以在Spring Boot项目中使用过滤器了。过滤器可以用于各种场景,如请求日志记录、字符编码设置、安全验证等。根据您的需求,您可以在过滤器的doFilter()方法中编写相应的逻辑。文章来源地址https://www.toymoban.com/news/detail-537085.html

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

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

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

相关文章

  • 过滤器和拦截器的辨析

    过滤器和拦截器都是为了在请求到达目标处理器(Servlet或Controller)之前或者之后插入自定义的处理逻辑 过滤器 : 遵循AOP(面向切面编程)思想实现,基于Servlet规范提供的Filter接口,它是位于客户端请求与服务器响应之间的一个组件,依赖于Servlet容器。当请求到达服务器时,过滤器

    2024年03月11日
    浏览(7)
  • 【SpringBoot篇】Interceptor拦截器 | 拦截器和过滤器的区别

    【SpringBoot篇】Interceptor拦截器 | 拦截器和过滤器的区别

    拦截器(Interceptor)是一种软件设计模式,用于在应用程序处理请求或响应时对其进行拦截和修改。拦截器可以在整个应用程序中使用,用于执行跨越多个层的通用任务,如身份验证、授权、缓存、日志记录、性能计量等。 在Web开发中,拦截器通常用于在请求到达控制器之前

    2024年02月04日
    浏览(10)
  • JAVA中的拦截器、过滤器

    JAVA中的拦截器、过滤器

    相关解释:拦截器依赖于页面有访问controller的操作,且属于SpringMVC体系的动态拦截调用机制,是java中AOP思想的运用。 来看看源码作者的注释: 其中倒数第二段话,描述其类似于过滤器,但其特点只允许使用自定义预处理,不能处理程序本身。此处可体现AOP思想。 过滤器是

    2024年02月13日
    浏览(7)
  • 过滤器Filter,拦截器Interceptor

    过滤器Filter,拦截器Interceptor

    过滤器Filter 快速入门   详情 登录校验-Filter 拦截器Interceptor 简介快速入门 定义拦截器 配置拦截器 详解(拦截路径,执行流程) 登录校验-Interceptor

    2024年02月07日
    浏览(10)
  • spring boot 过滤器&拦截器与aop

    spring boot 过滤器&拦截器与aop

    在使用 Spring 框架时,可以通过在 web.xml 配置文件中注册过滤器,使其在请求进入 Spring 前就能够进行预处理。这样可以在请求进入 Spring MVC 的 DispatcherServlet 之前,对请求进行拦截、修改或者过滤。 过滤器在 Spring 中的应用场景包括但不限于: 字符编码过滤:通过过滤器,在

    2024年02月01日
    浏览(6)
  • 登录页面jwt密钥,过滤器,拦截器,异常处理

    需求: 用户未登录时,访问其他也没面,操作添加、删除等操作时,强行跳转至登录页面。 实现方法: 1.使用Cookie,登录后后端添加一个cookie,每次页面判断是否有cookie, 2。使用session,原理同上,只不过session是存储在服务器里的,cookie是在浏览器里。 3。使用jwt令牌,登

    2023年04月25日
    浏览(10)
  • Spring Boot拦截器与过滤器的区别

    Spring Boot拦截器与过滤器的区别

    在使用Spring Boot开发Web应用程序时,您可能需要在处理请求之前或之后执行某些操作。这些操作可以包括身份验证、日志记录、性能监测等。在这种情况下,您可以使用两种不同的机制:拦截器和过滤器。本文将介绍这两种机制及其区别,并提供一些示例代码来演示如何在S

    2024年02月08日
    浏览(7)
  • 过滤器(Filter)和拦截器(Interceptor)有什么不同?

    过滤器(Filter)和拦截器(Interceptor)有什么不同?

    过滤器(Filter)和拦截器(Interceptor)是用于处理请求和响应的中间件组件,但它们在实现方式和应用场景上有一些不同。 过滤器 是Servlet规范中定义的一种组件,通常以Java类的形式实现。过滤器通过在 web.xml 配置文件中声明来注册,并在Web应用程序的请求和响应链中拦截请

    2024年02月07日
    浏览(9)
  • 详解过滤器Filter和拦截器Interceptor的区别和联系

    详解过滤器Filter和拦截器Interceptor的区别和联系

    目录 前言 区别 联系 过滤器(Filter)和拦截器(Interceptor)都是用于在Web应用程序中处理请求和响应的组件,但它们在实现方式和功能上有一些区别。 1. 实现方式: - 过滤器是基于Servlet规范的组件,通过实现 javax.servlet.Filter接口 来定义。过滤器可以在请求被处理之前和响应被发送

    2024年02月11日
    浏览(13)
  • 75.SpringMVC的拦截器和过滤器有什么区别?执行顺序?

    75.SpringMVC的拦截器和过滤器有什么区别?执行顺序?

    拦截器不依赖与servlet容器,过滤器依赖与servlet容器。 拦截器只能对action请求(DispatcherServlet 映射的请求)起作用,而过滤器则可以对几乎所有的请求起作用。 拦截器可以访问容器中的Bean(DI),而过滤器不能访问(基于spring注册的过滤器也可以访问容器中的bean)。 过滤器 和 拦

    2024年02月22日
    浏览(10)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包