Servlet监视器是Servlet规范中定义的特殊类。它用于监视ServletContext,Httpsession和ServletRequest等域对象的创建和破坏,以及监视这些域对象中属性的事件。侦听器是观察者模式的应用。它注意特定事物并等待机会,因此听众具有异步特征。
servlet侦听器监视三个主要域对象的创建和破坏。这三个主要对象是:
Servlet规范设计监视器的作用是在事件发生前后执行一些处理。通常可以用来计算在线用户和在线用户的数量,统计网站访问卷以及系统启动时的初始化信息。当容器启动时,我们可以初始化log4j信息,添加我们自己对容器状态的监视,并初始化弹簧组件。
创建ServletRequest侦听器(其他听众类似于创建)
将@servletcomponentscan添加到启动类中以进行自动注册。
过滤器是可重复使用的代码,可以转换HTTP请求,响应和头部信息。用流行的术语,可以在请求服务器之前先进行过滤器。在响应内容到达客户端之前,到达服务器的响应后处理。根据此定义,不难理解为什么它是侦听器的下游,Servlet的上游是Servlet的上游?启动容器后的请求,因此在侦听器之后执行;在请求到达服务之前,它正在预处理,因此它处于服务之前的位置。从命名中可以理解它已被过滤以根据请求和响应数据的内容过滤。前端数据并非全部收到,而是原则上的过滤,以确保后端服务器业务的安全性。
Servlet 3.1中定义了几个常见的滤波器组件:
班级;触发资源访问事件的过滤器:触发资源访问事件类;XSL/T过滤器会转换XML内容:XML文件转换类;MIME型链文件文件;缓存过滤器:或者我们需要有一个缓存类:可以将过滤器用于敏感单词。过滤器的主要功能是它可以更改请求内容。
过滤器是servlet的实用技术。- 处理requests.next,如何在Springboot中实现过滤器功能。
1.1实施方法1:使用WebFilter注释配置
@WebFilter是Servlet 3.0的新添加注释。原始过滤器最初是实现的,需要在Web.xml中配置。现在,通过此注释,它将在启动时自动扫描和注册。
写出过滤器类:
然后,将@servletcomponentscan添加到启动类中。使用此方法,当注册多个过滤器时,如果无法指定执行订单,则在web.xml配置的过滤器时,执行订单可以 @order),所以让我们将过滤器介绍到过滤器中通过FilterRegificationBean。
- 提示 - 过滤器的Java类名称是按顺序制作的,例如LogFilter和Authfilter。目前,Authfilter将首先执行比LogFilter执行,因为第一个字母A比L更好。
1.2.FilterRegulationBean方法FilterRegistrationBean由Springboot提供。这样的setOrder方法可以为过滤器设置排序值,以便在对Web过滤器进行排序之前按顺序注册。首先,您需要重写过滤器,实际上,除了@webfilter Annotations。在开始课程中注册过滤器RregificationBean
在注册多重滤镜registrationBean时,效果与第一个相同。
当Java程序员在10年前进行Web开发时,所有请求均被Servlet接受并响应。east请求必须写一个Servlet。此方法非常麻烦。每个人都希望根据请求路径和参数映射到不同的方法。这可以在Servlet类中处理多个请求。每个请求都是方法。此想法后来发展为结构和SpringMVC。
目前,Servlet使用的场景已被SpringMVC架构完全介绍。但是,尚未排除将旧项目搬迁到Spring Boot项目需要支持服务状况的情况。
让我们看一下如何在Spring Boot中实现服务。
然后将@servletcomponentscan添加到启动类中。
servlet规范中没有拦截器的概念。它是切割面向编程的应用程序:在方法中需要增强该方法的情况,例如,在方法调用之前执行一部分代码,或在完成方法完成后执行额外的操作。Interceptor是动态的代理。这本质上是不同的概念。这是不可比的。它位于过滤器的下游,面向servlet方法。
AOP编程想法面临水平切割表面,而不是垂直业务。在一个简单的示例中,在每个方法处理过程中,除了业务逻辑外,我们将进行一些相同的操作:参数验证,日志打印等。尽管这些处理代码不是多少,必须以这种方式编写每种方法来编写此书。对于事物,工作量不小。您可以使用程序均匀地添加此操作而没有程序员自己的手写?这是剪切-Off的应用编程想法。使用Java代理,在调用真实方法之前或之后添加一些其他增强功能。
上述过滤器和听众都是服务的API。当我们在开发过程中处理上述过滤器Web请求时,我们还可以使用Spring提供的拦截器来控制更多的精细控制。
编写自定义拦截器类
通过继承WebMVCCONFIGURERADAPTER注册的拦截器。WebMVCCONFIGURERADAPTER类已被放弃,请实现WebMVCCONFIGURER接口的注册以完成拦截器。
自定义事件和自定义监视类别自定义事件:从ApplicationEvent继承抽象类,然后定义您自己的构造函数自定义监视
Springboot有四种监视事件的方法。1.将监视器添加到ApplicationContext 2.将监视设备净值到弹簧容器中3.在应用程序中配置监视器。
让我们谈谈四个事件监视的特定实施
首先创建mylistener1类别
然后在Springboot应用程序启动类中获取ConfigurableApplicationContext上下文,加载监视
创建myListener2,并使用@component注释将此类加载到弹簧容器中
首先创建mylistener3类别
然后在应用程序中配置监视器。
创建myListener4类别,此类型不需要实现ApplicationListener界面,请使用装饰@EventListener的特定方法
自定义事件代码如下:
使用ApplicationContext,我想发布该事件在哪里发布活动
启动后,将日志打印为如下。(下面的屏幕截图是发布启动类后的屏幕截图。在单位测试中,无法听到监视器1,并且发出了执行顺序):
从日志打印中可以看出,Springboot的四个事件的实现是有序的。
以上介绍了聆听,过滤器,servlet,拦截器以及#自定义事件和自定义监视类的过程。通过学习上述操作,您可以在特殊情况下完成一些功能。