Servlet 监听器----ServletRequest

ServletRuquest监听器

在ServletRequest级别上有3个监听器接口:
    ServletRequestListener
    ServletRequestAttributeListener
    AsyncListener

1. ServletRequestListener

ServletRequestListener对Servlet的创建和销毁做出响应。在Servlet中的通过池来重启ServletRequest的,创建ServletRequest的时间花费相当于从池中获取它的时间,销毁时间则相当于它返回到池的时间。

ServletRequestListener接口定义两个方法
创建ServletRequest是调用:
    void requestInitialized(ServletRequestEvent event)
销毁ServletRequest是调用:
    void requestDestroyed(ServletRequestEvent event)

例子:

public class ServletRequestTest implements ServletRequestListener{

    @Override
    public void requestDestroyed(ServletRequestEvent sre) {
        // TODO Auto-generated method stub
        ServletRequest servletRequest = sre.getServletRequest();
        Long  start = (Long) servletRequest.getAttribute("start");
        Long end = System.nanoTime();
        HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
        StringBuffer uri = httpServletRequest.getRequestURL();
        System.out.println("time taken to execute" + uri+":"+((end-start)/1000)+"microseconds");
    }

    @Override
    public void requestInitialized(ServletRequestEvent sre) {
        // TODO Auto-generated method stub
        ServletRequest servletRequest =  sre.getServletRequest();
        servletRequest.setAttribute("start", System.nanoTime());
    }

}

注册

    <listener>
        <listener-class>listener.ServletRequestTest</listener-class>
    </listener>

结果:
这里写图片描述

2. ServletRequestAttributeListener

每当HttpRequest中添加,删除或替换了某个属性时,ServletRequestAttributeListener的实现都会收到通知,
该监听器接口种有三个方法:
void attributeAdded(HttpRequestBindingEvent event)
void attributeRemoveed(HttpRequestBindingEvent event)
void attributeReplaced(HttpRequestBindingEvent event)
获取属性名和属性值,使用以下两个方法
java.lang.String getName()
java.lang.Object getValue()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值