ServletRequestListener用于监听用户请求的到达和结束。
ServletRequestAttributeListener用于监听ServletRequest(request)范围内属性的变化。
package com.xxx.listener;
import javax.servlet.ServletRequest;
import javax.servlet.ServletRequestAttributeEvent;
import javax.servlet.ServletRequestAttributeListener;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpServletRequest;
@WebListener
public class MyRequestListener implements ServletRequestListener,ServletRequestAttributeListener {
//当用户请求到达,被初始化时触发该方法
@Override
public void requestInitialized(ServletRequestEvent arg0) {
HttpServletRequest request=(HttpServletRequest) arg0.getServletRequest();
System.out.println("----发向"+request.getRequestURI()+"请求被初始化");
}
//当用户请求结束,被销毁时触发该方法
@Override
public void requestDestroyed(ServletRequestEvent arg0) {
HttpServletRequest request=(HttpServletRequest) arg0.getServletRequest();
System.out.println("----发向"+request.getRequestURI()+"请求被销毁");
}
//当向request范围添加属性时触发该方法
@Override
public void attributeAdded(ServletRequestAttributeEvent arg0) {
ServletRequest request=arg0.getServletRequest();
//获取添加的属性名和属性值
String name=arg0.getName();
Object value=arg0.getValue();
System.out.println(request+"范围添加了名为"+name+"值为"+value+"的属性");
}
//当request范围的属性被删除时触发该方法
@Override
public void attributeRemoved(ServletRequestAttributeEvent arg0) {
ServletRequest request=arg0.getServletRequest();
//获取被删除的属性名和属性值
String name=arg0.getName();
Object value=arg0.getValue();
System.out.println(request+"范围 名为"+name+"值为"+value+"的属性被删除了");
}
//当request范围的属性被替换时触发该方法
@Override
public void attributeReplaced(ServletRequestAttributeEvent arg0) {
ServletRequest request=arg0.getServletRequest();
//获取被替换的属性名和属性值
String name=arg0.getName();
Object value=arg0.getValue();
System.out.println(request+"范围 名为"+name+"值为"+value+"的属性被删除了");
}
}