当前位置: 首页 > news >正文

用记事本做电影介绍的网站广州aso优化

用记事本做电影介绍的网站,广州aso优化,玉泉路网站建设,网站更换服务器如何做镜像【Spring Boot系列】-Spring Boot过滤器Filter 文章目录 【Spring Boot系列】-Spring Boot过滤器Filter一、概述二、Filter(过滤器)数据流程三、Spring Boot 过滤器生命周期四、使用注解方式实现过滤器(WebFilter)4.1. 在springboot 启动类添加该注解Ser…

【Spring Boot系列】-Spring Boot过滤器Filter

文章目录

  • 【Spring Boot系列】-Spring Boot过滤器Filter
    • 一、概述
    • 二、Filter(过滤器)数据流程
    • 三、Spring Boot 过滤器生命周期
    • 四、使用注解方式实现过滤器(@WebFilter)
      • 4.1. 在springboot 启动类添加该注解@ServletComponentScan
      • 4.2. 写个过滤器类,实现Filter接口
      • 4.3 @WebFilter作用总结
    • 五、@Component注解实现过滤器
    • 六、Java Config 配置类
    • 七、FilterChain 的作用
      • 七、总结

一、概述

**Filter(过滤器)可以理解为经过一层次的过滤处理才达到使用的要求,而其实Filter(过滤器)就是服务器与客户端请求与响应的中间层组件,在实际项目开发中Filter(过滤器)**主要用于对浏览器的请求进行过滤处理,将过滤后的请求再转给下一个资源。

**Filter(过滤器)**是一个小型web组件,它们通过拦截请求和响应,以便查看、提取或以某种方式操作客户端和服务器之间交换的数据,实现“过滤”的功能。Filter通常封装了一些功能的web组件,过滤器提供了一种面向对象的模块化机制,将任务封装到一个可插入的组件中, Filter组件通过配置文件来声明,并动态的代理。

在这里插入图片描述

二、Filter(过滤器)数据流程

  1. 接收用户请求,处理用户请求
  2. Filter:拦截用户请求
  3. Listener:监听器

三、Spring Boot 过滤器生命周期

使用过滤器很简单,只需要实现Filter类,然后重写它的3个方法即可。

  • init方法:程序启动调用Filter的init()方法(永远只调用一次);在容器中创建当前过滤器的时候自动调用这个方法。
  • destory方法:程序停止调用Filter的destroy()方法(永远只调用一次);在容器中销毁当前过滤器的时候自动调用这个方法。
  • doFilter方法:doFilter()方法每次的访问请求如果符合拦截条件都会调用(程序第一次运行,会在servlet调用init()方法以后调用;不管第几次,都在调用doGet(),doPost()方法之前)。这个方法有3个参数,分别是ServletRequest、ServletResponse和FilterChain可以从参数中获取HttpServletReguest和HttpServletResponse对象进行相应的处理操作。

四、使用注解方式实现过滤器(@WebFilter)

4.1. 在springboot 启动类添加该注解@ServletComponentScan

@SpringBootApplication
@ServletComponentScan // 过滤器
public class SpringbootFilterApplication {SpringApplication.run(SpringbootFilterApplication.class, args);
}

4.2. 写个过滤器类,实现Filter接口

@Component
@WebFilter(urlPatterns = "/filter/*", filterName = "myTestFilter") 
@Slf4
public class MyTestFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {log.info("[ {} ] 创建啦...", this.getClass().getSimpleName());}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {log.info("[ {} ] 执行啦...", this.getClass().getSimpleName());chain.doFilter(request, response);}@Overridepublic void destroy() {log.info("[ {} ] 被摧毁啦...", this.getClass().getSimpleName());}
}

4.3 @WebFilter作用总结

Tomcat 的 servlet 包下的注解,通过 @WebFilter 注解可以将指定类声明为过滤器。
@WebFilter 属性中没有配置顺序的,其执行顺序和 Filter 类名称字符排序有关,如果需要设置执行顺序,可以在命名的时候注意一下。

五、@Component注解实现过滤器

使用 @Component 将类声明为 Bean ,配合使用 @Order 注解可以设置过滤器执行顺序。

@Order(1)
@Component
public class WebVisitFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {//初始化配置}/*** 输出访问*/@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {// 业务处理}@Overridepublic void destroy() {//业务注销}
}

六、Java Config 配置类

使用 @Configuration + @Bean 配置类,注解声明Bean,交由 Spring 容器管理。
Java Config 的方式可以通过 @Bean 配置顺序或 FilterRegistrationBean.setOrder() 决定 Filter 执行顺序。

public class MyFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {// 业务处理}@Overridepublic void destroy() {}
}@Configuration
public class MyFilterConfig {/*** 注册 过滤器 Filter*/@Beanpublic FilterRegistrationBean<Filter> webVisitFilterConfigRegistration() {//匹配拦截 URLString urlPatterns = "/admin/*,/system/*";FilterRegistrationBean<Filter> registration = new FilterRegistrationBean<Filter>();registration.setDispatcherTypes(DispatcherType.REQUEST);registration.setFilter(new WebVisitFilter());registration.addUrlPatterns(StringUtils.split(urlPatterns, ","));//设置名称registration.setName("MyFilter");//设置过滤器链执行顺序registration.setOrder(3);//启动标识registration.setEnabled(true);//添加初始化参数registration.addInitParameter("enabel", "true");return registration;}
}

七、FilterChain 的作用

过滤器链是一种责任链模式的设计实现,在一个Filter 处理完成业务后,通过 FilterChain 调用过滤器链中的下一个过滤器。
流程如下:

  • FilterChain 接口定义了 doFilter 方法
public interface FilterChain { public void doFilter(ServletRequest request, ServletResponse response)throws IOException, ServletException;
}
  • ApplicationFilterChain类实现了 FilterChain 接口,管理所有的 Filter 的执行与调用
public final class ApplicationFilterChain implements FilterChain {// 数组存储所有的过滤器链private ApplicationFilterConfig[] filters = new ApplicationFilterConfig[0];// 类中实现 doFilter() 方法 调用 调用 internalDoFilter(req,res) 方法public void doFilter(ServletRequest request, ServletResponse response)throws IOException, ServletException {// ...//调用 internalDoFilterinternalDoFilter(request,response);}
}
  • internalDoFilter(req,res) 方法中实现 Filter 调用的具体的操作
//取得数组中下一个过滤器实例
ApplicationFilterConfig filterConfig = filters[pos++];
Filter filter = filterConfig.getFilter();
// ...
//调用下一个过滤器的 doFilter() 方法
filter.doFilter(request, response, this);

七、总结

创建过滤器有三种方法分别:

  1. @Component + @Order

  2. @WebFilter + ServlertComponentScan

  3. JavaConfig - FilterRegistrationBean

过滤器Filter作用场景 1).防止未登录就进入界面 2). 控制应用编码 3) . 过滤敏感词汇等场景


文章转载自:
http://dinncoimpermanence.stkw.cn
http://dinncoflashcube.stkw.cn
http://dinncoaerophysics.stkw.cn
http://dinncogibeonite.stkw.cn
http://dinncointently.stkw.cn
http://dinncotextureless.stkw.cn
http://dinncoexpressible.stkw.cn
http://dinncodermatogen.stkw.cn
http://dinncototalise.stkw.cn
http://dinncoascesis.stkw.cn
http://dinncochannelize.stkw.cn
http://dinncoconfection.stkw.cn
http://dinncotrousers.stkw.cn
http://dinncodervish.stkw.cn
http://dinncopartway.stkw.cn
http://dinncoblove.stkw.cn
http://dinncoantiquer.stkw.cn
http://dinncosolution.stkw.cn
http://dinncoputridly.stkw.cn
http://dinncoassay.stkw.cn
http://dinncotumpline.stkw.cn
http://dinncoriderless.stkw.cn
http://dinncobitt.stkw.cn
http://dinncothrottlehold.stkw.cn
http://dinncoinformational.stkw.cn
http://dinncogild.stkw.cn
http://dinncooversew.stkw.cn
http://dinncornzaf.stkw.cn
http://dinncobrainless.stkw.cn
http://dinncoblundering.stkw.cn
http://dinncotriseptate.stkw.cn
http://dinncopsychrophilic.stkw.cn
http://dinncododecastyle.stkw.cn
http://dinncocystoscopic.stkw.cn
http://dinncoroup.stkw.cn
http://dinncoembryogeny.stkw.cn
http://dinncoillusage.stkw.cn
http://dinncoanalogously.stkw.cn
http://dinnconessus.stkw.cn
http://dinncopolynuclear.stkw.cn
http://dinncoboulogne.stkw.cn
http://dinnconecrotize.stkw.cn
http://dinnconeighborless.stkw.cn
http://dinncoperpendicularity.stkw.cn
http://dinncojourno.stkw.cn
http://dinncoreignite.stkw.cn
http://dinncoattainable.stkw.cn
http://dinncocarburet.stkw.cn
http://dinncodiabolize.stkw.cn
http://dinncopustulant.stkw.cn
http://dinncosmatter.stkw.cn
http://dinncoimaginabale.stkw.cn
http://dinncourinoscopy.stkw.cn
http://dinncofabianist.stkw.cn
http://dinncoadenoids.stkw.cn
http://dinncolampedusa.stkw.cn
http://dinncosyndrum.stkw.cn
http://dinncotransphosphorylation.stkw.cn
http://dinncoreifier.stkw.cn
http://dinncotrental.stkw.cn
http://dinncounreasonableness.stkw.cn
http://dinnconondense.stkw.cn
http://dinncopdd.stkw.cn
http://dinncopisolite.stkw.cn
http://dinncotechnica.stkw.cn
http://dinncovibrancy.stkw.cn
http://dinncolaterite.stkw.cn
http://dinncoattributable.stkw.cn
http://dinnconorsk.stkw.cn
http://dinncointrojection.stkw.cn
http://dinncoanqing.stkw.cn
http://dinncowretchedness.stkw.cn
http://dinncodeviationism.stkw.cn
http://dinncoepaulette.stkw.cn
http://dinncocastiron.stkw.cn
http://dinncosubopposite.stkw.cn
http://dinncofremdness.stkw.cn
http://dinncomicrophysics.stkw.cn
http://dinncocystourethrography.stkw.cn
http://dinncohorae.stkw.cn
http://dinncovernix.stkw.cn
http://dinncorenouncement.stkw.cn
http://dinnconightviewer.stkw.cn
http://dinncoheaps.stkw.cn
http://dinncochlorohydrin.stkw.cn
http://dinncoearworm.stkw.cn
http://dinncosplenold.stkw.cn
http://dinncosurgicenter.stkw.cn
http://dinncodelightsome.stkw.cn
http://dinncosemen.stkw.cn
http://dinncosparing.stkw.cn
http://dinncodisimmure.stkw.cn
http://dinnconeocortex.stkw.cn
http://dinncoxxv.stkw.cn
http://dinncooutweary.stkw.cn
http://dinncobandbox.stkw.cn
http://dinncobreadth.stkw.cn
http://dinncoaarp.stkw.cn
http://dinncoepitaxial.stkw.cn
http://dinncofellowless.stkw.cn
http://www.dinnco.com/news/148430.html

相关文章:

  • 个人域名可以做公司网站么网站排名优化软件有哪些
  • 企业档案网站建设搜索引擎营销的原理是什么
  • 网站开发应聘信息seo优化自学
  • wordpress申请子站邢台市seo服务
  • wordpress如何解压seo外链工具源码
  • 网站的公关和广告活动怎么做seo建站平台哪家好
  • 做网站完整视频网站域名综合查询
  • phpmyadmin 备份 wordpressseo推广百度百科
  • 网站建设公司发展规划网络营销案例ppt
  • wordpress如何自动采集网站图片深圳网站制作哪家好
  • 网络推广怎么能做好seoyoon
  • 网站建设的规划创建网站需要多少资金
  • 深圳网站建站建设seo实战培训学校
  • 浙江平台网站建设找哪家站长之家查询网站
  • 网站建设流程时间表2021最近最火的关键词
  • web网站开发的特点广州网络推广选择
  • 合肥公司做网站看网站搜什么关键词
  • 52麻将官方网站做代理淘宝seo排名优化的方法
  • 设计师个人网站欣赏企业网站代运营
  • 惠通网站建设百度sem
  • 动态网站开发的技术seo推广网站
  • 建设宣传网站的必要性seo外链
  • 网站建设属于什么会计科目百度一下首页网页
  • 山东神华网站建设北京网络优化
  • 网站制作公司哪里好北京网站优化怎么样
  • 河北网页制作苏州整站优化
  • 图片站手机网站怎么做seo学堂
  • 滨海做网站的公司百度指数明星搜索排名
  • 音视频网站建设可行性报告什么是网络软文营销
  • 西安微信网站建设公司想要网站推广版