Java Listener-(Java 监听器)

来源:互联网 发布:首付不够怎么买房知乎 编辑:程序博客网 时间:2024/06/05 15:38


前言
 在上篇文章中,简要的总结了过滤器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

原创粉丝点击