ServletRequestListener简介说明

欢喜 Servlet 发布时间:2025-06-04 17:02:46 阅读数:13219 1
下文笔者讲述“ServletRequestlistener简介说明”,如下所示

ServletRequestListener简介

`ServletRequestListener`是Java Web应用中
   用于监听HTTP请求(ServletRequest)生命周期事件
     监听器接口
   属于Servlet规范一部分
   它适用于需要在请求开始和结束时执行某些逻辑的场景

ServletRequestListener作用

`ServletRequestListener` 主要用于:
	-记录请求日志(如 IP、访问路径、耗时等)
	-初始化请求级别的资源(如数据库连接、上下文变量)
	-统计请求次数或并发量
	-清理请求结束后占用的资源

ServletRequestListener核心方法

方法 调用时机 说明
requestInitialized(ServletRequestEvent sre)每次HTTP请求到达服务器时调用可用于初始化请求相关资源
requestDestroyed(ServletRequestEvent sre)HTTP请求处理完成后调用(无论是否异常)可用于释放资源、记录日志

记录请求信息与耗时

public class RequestLoggingListener implements ServletRequestListener {

    @Override
    public void requestInitialized(ServletRequestEvent sre) {
        HttpServletRequest request = (HttpServletRequest) sre.getServletRequest();
        System.out.println("请求开始: " + request.getMethod() + " " + request.getRequestURI());
        // 存储开始时间,供销毁时计算耗时
        request.setAttribute("startTime", System.currentTimeMillis());
    }

    @Override
    public void requestDestroyed(ServletRequestEvent sre) {
        HttpServletRequest request = (HttpServletRequest) sre.getServletRequest();
        long startTime = (Long) request.getAttribute("startTime");
        long duration = System.currentTimeMillis() - startTime;
        System.out.println("请求结束: " + request.getRequestURI() + ", 耗时: " + duration + "ms");
    }
}

web.xml注册监听器

<listener>
    <listener-class>com.example.RequestLoggingListener</listener-class>
</listener>

与其他监听器对比

监听器类型 接口名 监听对象 典型用途
`ServletRequestListener` `javax.servlet.ServletRequestListener` `ServletRequest` 请求开始/结束处理
`HttpSessionListener` `javax.servlet.http.HttpSessionListener` `HttpSession` 会话创建/销毁处理
`ServletContextListener` `javax.servlet.ServletContextListener` `ServletContext` 应用启动/关闭处理

ServletRequestListener注意事项

注意点 说明
线程安全 每个请求由独立线程处理,
但仍需注意共享变量
性能影响 避免在监听器中执行耗时操作,
影响请求响应速度
请求范围 适用于所有类型的请求(GET、POST 等)
单例性 所有`ServletRequestListener`实现类
由容器管理为单例
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/Servlet/202506/331.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者