美文网首页
Java监听器中ServletRequestListener监听

Java监听器中ServletRequestListener监听

作者: 意识流丶 | 来源:发表于2018-11-27 00:40 被阅读54次

ServletRequestHttpServletRequest的区别

HttpServletRequestServletRequest都是接口,HttpServletRequest继承自ServletRequest
HttpServletRequestServletRequest多了一些针对于Http协议的方法。如getHeader()getMethod()getSession()等等。

HttpServletRequest

客户端浏览器发出的请求被封装成为一个HttpServletRequest对象。对象包含了客户端请求信息包括请求的地址,请求的参数,提交的数据,上传的文件客户端的ip甚至客户端操作系统都包含在其内。

工作原理:当HTTP转发给Web容器处理时,Web容器会收集相关信息,并产生HttpServletRequest对象,使用这个对象可以取得所有HTTP请求中的信息,可以在Servlet中进行处理,也可以转发给其他的Servlet/Jsp处理。

ServletRequestListener

用于监听ServletRequest对象的创建和销毁,一个ServletRequest可以注册多个ServletRequestListener接口,request创建时调用requestInitialized()request销毁时调用requestDestroyed()

ServletRequestListener源码

public interface ServletRequestListener extends EventListener {
    default void requestDestroyed(ServletRequestEvent sre) {
    }
    default void requestInitialized(ServletRequestEvent sre) {
    }
}

HttpSessionListener监听器实现代码

非SpringBoot下

public class RequestListener implements ServletRequestListener{
    private final Logger log = LoggerFactory.getLogger(getClass());
    @Override
    public void requestInitialized(ServletRequestEvent sre) {
        log.info("请求发送");
    }
    @Override
    public void requestDestroyed(ServletRequestEvent sre) {
        log.info("请求销毁");
    }
}

然后在web.xml中配置监听器

<listener>
      <listener-class>监听器类所在路径.监听器名字</listener-class>
</listener>

在SpringBoot中需要加上@WebListener

@WebListener
public class RequestListener implements ServletRequestListener{
    private final Logger log = LoggerFactory.getLogger(getClass());
    @Override
    public void requestInitialized(ServletRequestEvent sre) {
        log.info("请求发送");
    }
    @Override
    public void requestDestroyed(ServletRequestEvent sre) {
        log.info("请求销毁");
    }
}

需要在启动类加上@ServletComponentScan

controller层演示发送请求

@RestController
public class IndexController {
    @RequestMapping("/hello")
    public String hello(){
        return "hello";
    }
}

启动测试

访问http://localhost:8080/hello,刷新再请求次

image.png

控制台输出

image.png

Request(HttpServletRequest)

request是表示一个请求,只要发出一个请求就会创建一个request
它的作用域:仅在当前请求中有效。(比sessionapplication小)
只在一次请求上(转发不算请求,因为转发是服务器端的行为)生效,当把信息返回给客户端,该对象就被摧毁

HttpServletRequest具体方法和使用可参考官方文档:
https://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/http/HttpServletRequest.html

相关文章

  • Java监听器中ServletRequestListener监听

    ServletRequest和HttpServletRequest的区别 HttpServletRequest和S...

  • 监听器

    监听器种类 1. ServletContextListener 2. ServletRequestListener...

  • Java web监听器Listener初步了解

    什么是java监听器? java监听器,也叫做Listener,是Servlet的监听器。它可以监听客户端的请求,...

  • tomcat内存马Listener篇

    什么是监听器 监听器类型 java共有三种类型的监听器 ServletContext对象的监听器 它能够监听 Se...

  • JavaWeb Listener

    Java Web开发中,监听器常用与监听HttpServletRequest、HttpSession和Servle...

  • javaweb 监听器

    1. java web中监听器的阐述 Listener是Servlet的监听器,它可以监听客户端的请求,服务端的操...

  • 监听器/过滤器(Servlet Listener / Filte

    监听器(listener) 监听器简介 :监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个...

  • Java Web 之监听器

    前言 学一学Java Web 三大组件之一监听器。 Servlet监听器 监听器主要用来监听事件的创建和销毁以及属...

  • Java 监听器

    Java 监听器简介 监听器是Servlet规范定义的一种特殊类,用于监听ServletContext,HttpS...

  • Listener

    监听器是实现特定的接口的java类,用来监听web应用中ServletContext,ServletRequest...

网友评论

      本文标题:Java监听器中ServletRequestListener监听

      本文链接:https://www.haomeiwen.com/subject/krqwqqtx.html