Java监听器中ServletRequestListener监听Request的创建和销毁
HttpServletRequest
客户端浏览器发出的请求被封装成为一个HttpServletRequest
对象。对象包含了客户端请求信息包括请求的地址,请求的参数,提交的数据,上传的文件客户端的ip甚至客户端操作系统都包含在其内。
工作原理:当HTTP
转发给Web
容器处理时,Web
容器会收集相关信息,并产生HttpServletRequest
对象,使用这个对象可以取得所有HTTP
请求中的信息,可以在Servlet
中进行处理,也可以转发给其他的Servlet/Jsp
处理。
ServletRequestListener
用于监听ServletRequest
对象的创建和销毁,一个ServletRequest
可以注册多个ServletRequestListener
接口,request
创建时调用requestInitialized()
,request
销毁时调用requestDestroyed()
ServletRequestListener源码
publicinterfaceServletRequestListenerextendsEventListener{defaultvoidrequestDestroyed(ServletRequestEvent sre){
}
defaultvoidrequestInitialized(ServletRequestEvent sre){
}
}
HttpSessionListener监听器实现代码
非SpringBoot下
publicclassRequestListenerimplementsServletRequestListener{privatefinalLogger log =LoggerFactory.getLogger(getClass());
@Override
publicvoidrequestInitialized(ServletRequestEvent sre){
log.info("请求发送");
}
@Override
publicvoidrequestDestroyed(ServletRequestEvent sre){
log.info("请求销毁");
}
}
然后在web.xml
中配置监听器
<listener><listener-class>监听器类所在路径.监听器名字</listener-class>
</listener>
在SpringBoot中需要加上@WebListener
@WebListenerpublicclassRequestListenerimplementsServletRequestListener{
privatefinalLogger log =LoggerFactory.getLogger(getClass());
@Override
publicvoidrequestInitialized(ServletRequestEvent sre){
log.info("请求发送");
}
@Override
publicvoidrequestDestroyed(ServletRequestEvent sre){
log.info("请求销毁");
}
}
需要在启动类加上@ServletComponentScan
controller
层演示发送请求
@RestControllerpublicclass IndexController {
@RequestMapping("/hello")
public String hello(){
return"hello";
}
}
启动测试
访问http://localhost:8080/hello,刷新再请求次
image.png
控制台输出
image.png
Request(HttpServletRequest)
request
是表示一个请求,只要发出一个请求就会创建一个request
,
它的作用域:仅在当前请求中有效。(比session
和application
小)
只在一次请求上(转发不算请求,因为转发是服务器端的行为)生效,当把信息返回给客户端,该对象就被摧毁
HttpServletRequest
具体方法和使用可参考官方文档:
https://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/http/HttpServletRequest.html
作者:意识流丶
链接:https://www.jianshu.com/p/378c5d035fb9
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
以上是 Java监听器中ServletRequestListener监听Request的创建和销毁 的全部内容, 来源链接: utcz.com/z/513025.html