对Request的监听分生命周期的监听,和Request上Attribute变化的监听两部分。
- 编写 RequestListener
RequestListener 实现接口 ServletRequestListener和ServletRequestAttributeListener
当新创建了一个Request的时候触发,只要访问了服务端的资源,就会创建一个Request,无论是jsp,servlet还是htmlrequestInitialized()
当本次请求结束的时候触发requestDestroyed()
当有新增属性时触发attributeAdded
当有替换属性时触发attributeReplaced
当有移除属性时触发attributeRemoved
package listener; import javax.servlet.ServletRequestAttributeEvent; import javax.servlet.ServletRequestAttributeListener; import javax.servlet.ServletRequestEvent; import javax.servlet.ServletRequestListener; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; public class RequestListener implements ServletRequestListener, ServletRequestAttributeListener { @Override public void requestDestroyed(ServletRequestEvent arg0) { System.out.println("销毁了一个Request "); } @Override public void requestInitialized(ServletRequestEvent arg0) { System.out.println("创建了一个Request "); } @Override public void attributeAdded(ServletRequestAttributeEvent e) { System.out.println("request 增加属性 "); System.out.println("属性是" + e.getName()); System.out.println("值是" + e.getValue()); } @Override public void attributeRemoved(ServletRequestAttributeEvent arg0) { System.out.println("request 移除属性 "); } @Override public void attributeReplaced(ServletRequestAttributeEvent arg0) { System.out.println("request 替换属性 "); } }
- 配置web.xml
<listener> <listener-class>listener.RequestListener</listener-class> </listener>
- testRequest.jsp
测试页面,先在request中设置test,然后替换,最后移出掉test
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% request.setAttribute("test", 1); request.setAttribute("test", 2); request.removeAttribute("test"); %>
- 测试
访问页面
http://127.0.0.1/testRequest.jsp
观察测试结果