iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Springboot中filter的原理与注册方法是什么
  • 245
分享到

Springboot中filter的原理与注册方法是什么

2023-07-05 06:07:07 245人浏览 独家记忆
摘要

今天小编给大家分享一下SpringBoot中filter的原理与注册方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

今天小编给大家分享一下SpringBoot中filter的原理与注册方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

    1、filter

    先看下WEB服务器的filter所处的位置。filter是一个前后连接的链,前面处理完成之后传递给下一个filter处理。

    Springboot中filter的原理与注册方法是什么

    1.1 filter的接口定义

    public interface Filter {    //初始化方法,整个生命周期中只执行一次。    //在init方法成功(失败如抛异常等)执行完前,不能提供过滤服务。    //参数FilterConfig用于获取初始化参数    public void init(FilterConfig filterConfig) throws ServletException;     //执行过滤任务的方法,参数FilterChain表示过滤器链,doFilter方法中只有执行chain.doFilter()后才能调用下一个过滤器的doFilter方法    //才能将请求交经下一个Filter或Servlet执行    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException;     //销毁方法,当移出服务时由web容器调用。整个生命周期中destroy方法只会执行一次    //destroy方法可用于释放持有的资源,如内存、文件句柄等    public void destroy();}

    filter的入参是request和response,filter一般是用来做一些预处理工作,比如做一些检查,验证等工作。

    1.2 自定义filter

    public class LoginFilter implements Filter {    @Override    public void destroy() {        System.out.println("filter destroy method");    }    @Override    public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain filterChain)            throws IOException, ServletException {        System.out.println("filter doFilter method ");        // 继续传递下去        filterChain.doFilter(arg0,arg1);    }    @Override    public void init(FilterConfig arg0) throws ServletException {        System.out.println("filter init method");    }}

    2、springboot中filter注册几种方式

    2.1 手动注册

    @Configurationpublic class FilterConfig {    @Bean    public FilterReGIStrationBean indexFilterRegistration() {        FilterRegistrationBean registration = new FilterRegistrationBean(new LoginFilter());        registration.addUrlPatterns("/");        return registration;    }}

    2.2 注解注册

    2.2.1 在filter上增加注解@WebFilter

    @WebFilter(urlPatterns = "/",filterName = "filter1")@Order(1)public class LoginFilter implements Filter {    @Override    public void destroy() {        System.out.println("filter destroy method");    }     @Override    public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain filterChain)            throws IOException, ServletException {        System.out.println("filter doFilter method   1   ");        filterChain.doFilter(arg0,arg1);    }     @Override    public void init(FilterConfig arg0) throws ServletException {        System.out.println("filter init method");    }}

    2.2.2 在启动类上增加注解@ServletComponentScan

    @SpringBootApplication@ServletComponentScanpublic class FilterTestApplication {    public static void main(String[] args) {        SpringApplication.run(FilterTestApplication.class, args);    }}

    注:

    @ServletComponentScan 会扫描所有的带有@WebFilter的类,并且注册为servlet。

    如果启动类不添加此注解,在filter上添加Component注解也可以注册为filter

    order注解可以调整filter的顺序

    2.3 通过servletContext 注册

    @Autowired ServletContext servletContext; servletContext.addFilter()

    3、原理

    3.1 ServletContext

    Web容器在启动时会为每个web应用创建一个ServletContext对象,而这个ServletContext对象就代表当前这个web应用。

    一个ServletContext对象代表一个web应用,web应用中所有的Servlet和其他资源都共享一个ServletContext对象,

    如果有必要我们就可以通过ServletContext对象进行Servlet之间的通讯。

    ServletContext,是一个全局的储存信息的空间,服务器开始,其就存在,服务器关闭,其才释放。request,一个用户可有多个;session,一个用户一个;而servletContext,所有用户共用一个。

    Springboot中filter的原理与注册方法是什么

    ApplicationContext 是ServletContext的实现类,可以看到里面有相应的注册的方法

    在程序中获取ServletContext

    3.1.1 使用自动注入

    @Autowired private ServletContext servletContext;

    3.1.2 request获取servletContext

    ServletContext servletContext = request.getServletContext();

    3.1.3 实现 ServletContextListener

    @Componentpublic class TestListener implements ServletContextListener {    @Override    public void contextInitialized(ServletContextEvent sce) {        System.out.println(sce);    }}

    3.2 ServletRegistrationBean

    看下Filter的定义,可以看到和webfilter注解内容一样

    public class ServletRegistrationBean<T extends Servlet> extends DynamicRegistrationBean<ServletRegistration.Dynamic> {    private static final String[] DEFAULT_MAPPINGS = new String[]{"/*"};    private T servlet;    private Set<String> urlMappings;    private boolean alwaysMapUrl;    private int loadOnStartup;    private MultipartConfigElement multipartConfig;    ......    }

    开发中一般使用他的子类FilterRegistrationBean,使用上面2.1 手动注册。

    以上就是“Springboot中filter的原理与注册方法是什么”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网精选频道。

    --结束END--

    本文标题: Springboot中filter的原理与注册方法是什么

    本文链接: https://www.lsjlt.com/news/350147.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • Springboot中filter的原理与注册方法是什么
      今天小编给大家分享一下Springboot中filter的原理与注册方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。...
      99+
      2023-07-05
    • 一文详解Springboot中filter的原理与注册
      目录1、filter1.1 filter的接口定义1.2 自定义filter2、springboot中filter注册几种方式2.1 手动注册2.2 注解注册2.3 通过servle...
      99+
      2023-02-27
      Springboot filter原理 Springboot filter注册 Springboot filter
    • Java中Zookeeper注册中心原理是什么
      本篇内容主要讲解“Java中Zookeeper注册中心原理是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java中Zookeeper注册中心原理是什么”吧!RPC框架中有3个重要的角色:注...
      99+
      2023-06-20
    • Servlet中Filter的实现原理是什么
      这篇文章主要讲解了“Servlet中Filter的实现原理是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Servlet中Filter的实现原理是什么”...
      99+
      2024-04-02
    • c#中filter的工作原理是什么
      在C#中,filter通常指的是LINQ中的Where方法,用于筛选集合中符合条件的元素。其工作原理是通过传入一个谓词(P...
      99+
      2024-04-02
    • win7系统注册表的清理方法是什么
      这篇文章将为大家详细讲解有关win7系统注册表的清理方法是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。我们都知道,电脑使用的时间越长,注册表信息就越多。为了电脑的性能和安全,需要定期清...
      99+
      2023-06-28
    • vue注册组件的方法是什么
      今天小编给大家分享一下vue注册组件的方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1、全局注册(这种方式注册组件...
      99+
      2023-07-04
    • c#中filter的使用方法是什么
      在C#中,可以使用LINQ(Language Integrated Query)来实现过滤数据,其中filter的功能由Wher&#...
      99+
      2024-04-02
    • 中文域名注册查询的方法是什么
      要查询中文域名的注册情况,可以按照以下步骤进行:1. 打开域名注册机构的网站,例如中国互联网络信息中心(CNNIC)的网站(www....
      99+
      2023-06-10
      中文域名 域名
    • 便宜域名注册的方法是什么
      以下是一些便宜域名注册的方法:1. 寻找促销活动:许多域名注册商会在特定的节日或促销活动期间提供折扣优惠。2. 注册长期域名:许多域...
      99+
      2023-06-03
      便宜域名 域名
    • 长春域名注册的方法是什么
      长春域名注册的方法如下:1. 在域名注册网站上搜索想要注册的域名,确认域名是否可用。2. 选择一个可靠的域名注册商,填写注册信息,包...
      99+
      2023-06-12
      长春域名注册 域名
    • 注册虚拟主机的方法是什么
      注册虚拟主机的方法通常如下:1、选择虚拟主机提供商首先需要选择一家可靠的虚拟主机提供商,根据自己的需求选择适合自己的虚拟主机服务。2...
      99+
      2023-03-19
      注册虚拟主机 虚拟主机
    • 域名注册查询的方法是什么
      要查询一个域名是否已经被注册,可以使用以下方法:1. 在域名注册商的网站上进行查询:大部分域名注册商都提供了域名查询功能,用户可以在...
      99+
      2023-06-08
      域名注册查询 域名
    • 厦门域名注册的方法是什么
      厦门域名注册的方法如下:1. 在域名注册网站上搜索所需的域名,确认域名是否可用。2. 选择合适的域名后,填写注册信息,包括个人或企业...
      99+
      2023-06-14
      厦门域名注册 域名
    • win10重置注册表的方法是什么
      重置注册表的方法有以下几种:1. 使用系统还原:在Windows 10中,可以使用系统还原功能将系统恢复到之前的某个时间点,以还原注...
      99+
      2023-09-12
      win10
    • C++中线程的原理与实现方法是什么
      这篇文章主要介绍“C++中线程的原理与实现方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++中线程的原理与实现方法是什么”文章能帮助大家解决问题。在C++中有多种实现线程的方式C++11...
      99+
      2023-07-05
    • JUC中wait与notify方法的实现原理是什么
      今天小编给大家分享一下JUC中wait与notify方法的实现原理是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.O...
      99+
      2023-07-05
    • 便宜域名注册方法是什么
      以下是一些便宜域名注册的方法:1. 在促销时购买:许多域名注册商会定期举行促销活动,例如打折、赠送优惠券等。可以关注官方网站或社交媒...
      99+
      2023-06-11
      便宜域名注册 域名
    • es6 filter方法的参数是什么
      这篇文章主要讲解了“es6 filter方法的参数是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“es6 filter方法的参数是什么”吧! ...
      99+
      2024-04-02
    • SpringBoot中处理异常的方法是什么
      在SpringBoot中处理异常的方法有以下几种: 使用@ControllerAdvice注解和@ExceptionHandle...
      99+
      2024-03-07
      SpringBoot
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作