首页 > 其他分享 >Servlet_3_监听器

Servlet_3_监听器

时间:2023-02-13 18:34:46浏览次数:34  
标签:srae 对象 request public 获取 监听器 Servlet 监听

对于作用域内对象(request、session、application)的监听,当他们发送变动时能够进行相应的处理。

 


一、使用步骤

  1、编写监听器类:实现对应的接口,重写对应的方法,在方法内进行过滤操作。

  2、在web.xml中配置此过滤器的生效范围。


二、监听器的接口

1、监听request对象,实现接口:ServletRequestListener

2、监听request对象的属性,实现接口:ServletRequestAttributeListener

 

3、监听session对象,实现接口:HttpSessionListener

4、监听session对象的属性,实现接口:HttpSessionAttributeListener

 

5、监听application对象,实现接口:ServletContextListener

6、监听application对象的属性,实现接口:ServletContextAttributeListener


在具体实现的方法中

  1、可以获取到监听的对象

//获取request对象
HttpServletRequest request = (HttpServletRequest) sre.getServletRequest();
//获取session对象
HttpSession session = se.getSession();
//获取application对象
ServletContext servletContext = sce.getServletContext();

  2、可以获取到属性的内容

//获取键名
String key = srae.getName();
//获取值
Object value = srae.getValue();

 三、例子

web.xml中配置监听器:

    <!--配置监听器-->
    <listener>
        <listener-class>com.lurenjia.listener.MainListener</listener-class>
    </listener>

例子1:

  实现了监听 request 的状态,可以获取到此request对象。

public class MainListener implements ServletRequestListener {
    @Override
    public void requestDestroyed(ServletRequestEvent sre) {
        //request对象被销毁的时候执行
        ServletRequestListener.super.requestDestroyed(sre);
    }

    @Override
    public void requestInitialized(ServletRequestEvent sre) {
        //获取到request对象
        HttpServletRequest request = (HttpServletRequest) sre.getServletRequest();
        //request对象被创建的时候执行
        ServletRequestListener.super.requestInitialized(sre);
    }
}

例子2:

  实现了监听request对象作用域的状态,可以获取到作用域内的内容。

public class MainListener implements ServletRequestAttributeListener {
    @Override
    public void attributeAdded(ServletRequestAttributeEvent srae) {
        //新增属性时候出发
        //获取属性的键名,值
        String key = srae.getName();
        Object value = srae.getValue();
        ServletRequestAttributeListener.super.attributeAdded(srae);
    }

    @Override
    public void attributeRemoved(ServletRequestAttributeEvent srae) {
        //移除属性时触发
        ServletRequestAttributeListener.super.attributeRemoved(srae);
    }

    @Override
    public void attributeReplaced(ServletRequestAttributeEvent srae) {
        //修改属性时触发
        ServletRequestAttributeListener.super.attributeReplaced(srae);
    }
}

 

标签:srae,对象,request,public,获取,监听器,Servlet,监听
From: https://www.cnblogs.com/lurenjia-bky/p/17117326.html

相关文章