Java Listener-(Java 监听器),
Java Listener-(Java 监听器),
前言
在上篇文章中,简要的总结了过滤器Filter,过滤器这个名字已经很形象了。补充说明三点:
第一,在doFilter方法中一般都会先进行强制类型转换,
HttpServletRequest req=(HttpServletRequest) request;
HttpServletResponse resp=(HttpServletResponse) response;
第二,过滤器经常用来给Servlet 的请求对象和响应对象设置编码,
req.setCharacterEncoding("utf-8");
resp.setHeader("content-type", "text/html;charset=utf-8");
第三,可以有多个过滤器同时作用到一个Servlet,作用的顺序与过滤器在web.xml中配置顺序有关:先配置先作用。
下面简要介绍监听器。
一、含义
Java 监听器可以监听web资源的变化,如监听Servlet三大作用域对象等。
二、如何使用
1.监听request对象
1)监听request对象的初始化和销毁状态
public class TestRequestListener implements ServletRequestListener{
@Override
public void requestDestroyed(ServletRequestEvent sre) {
System.out.println("一个请求销毁了!");
HttpServletRequest request=(HttpServletRequest) sre.getServletRequest();
System.out.println(request.getParameter("uname"));
}
@Override
public void requestInitialized(ServletRequestEvent sre) {
System.out.println("一个请求产生了!");
HttpServletRequest request=(HttpServletRequest) sre.getServletRequest();
System.out.println(request.getParameter("uname"));
}
}
2)监听request的属性状态
public class TestRequestListener2 implements ServletRequestAttributeListener{
@Override
public void attributeAdded(ServletRequestAttributeEvent srae) {
System.out.println("存了个值");
//获取键
String name=srae.getName();
//获取值
String value=(String) srae.getValue();
System.out.println(name+"--"+value);
}
@Override
public void attributeRemoved(ServletRequestAttributeEvent srae) {
System.out.println("移出了个值");
//获取键
String name=srae.getName();
//获取值
String value=(String) srae.getValue();
System.out.println(name+"--"+value);
}
@Override
public void attributeReplaced(ServletRequestAttributeEvent srae) {
System.out.println("替换了个值");
//获取键
String name=srae.getName();
//获取的值是替换之前的值
String value=(String) srae.getValue();
System.out.println("替换前的键值对:"+name+"--"+value);
//获取 替换之后的值
HttpServletRequest req=(HttpServletRequest) srae.getServletRequest();
String value2=(String) req.getAttribute(name);
System.out.println("替换后的键值对:"+name+"--"+value2);
}
}
2.监听其他对象
另外对Application对象和Session对象监听,操作与request类似。
3.在web.xml中配置监听器
<listener>
<listener-class>包名+监听器的类名</listener-class>//设置监听器,设置后默认监听所有资源
</listener>
三、生命周期
与Java Filter基本相同。
详细介绍请参考:http://blog.csdn.net/csh624366188/article/details/7423215
相关文章
- 暂无相关文章
用户点评