对于作用域内对象(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