欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JSP监听器用法分析

程序员文章站 2023-11-17 21:14:40
本文实例讲述了jsp监听器用法。分享给大家供大家参考,具体如下: 监听器也叫listener,是servlet服务的监听器。它可以监听客户端的请求,服务端的操作等。比如统...

本文实例讲述了jsp监听器用法。分享给大家供大家参考,具体如下:

监听器也叫listener,是servlet服务的监听器。它可以监听客户端的请求,服务端的操作等。比如统计在线用户数量。每当增加一个httpsession时,就会触发sessioncreate(httpsessionevent se)方法,这样就可以给在线人数加1.常用的监听器接口如下:

1. servletcontextattributelistener监听对servletcontext属性的操作。比如增加,删除,修改属性。

2. servletcontextlistener监听servletcontext。当创建servletcontext时,激发contextinitialized(servletcontextevent   sce)方法;当销毁servletcontext时,激发contextdestroyed(servletcontextevent   sce)方法。

3. httpsessionlistener监听httpsession的操作。当创建一个session时,激发session   created(httpsessionevent   se)方法;当销毁一个session时,激发sessiondestroyed   (httpsessionevent   se)方法。
4. httpsessionattributelistener监听httpsession中的属性的操作。当在session增加一个属性时,激发attributeadded(httpsessionbindingevent   se)   方法;

当在session删除一个属性时,激发attributeremoved(httpsessionbindingevent se)方法;

当在session属性被重新设置时,激发attributereplaced(httpsessionbindingevent se) 方法。

一个在线统计的例子:

public class online implements servletcontextlistener,httpsessionlistener,httpsessionattributelistener(){
private servletcontext application = null;
 public void contextinitialized(servletcontextevent arg0) {
 //根据响应事件参数初始化servletcontext
 this.application = arg0.getservletcontext();
 //在servletcontext中存放一个空的用户信息列表
 application.setattribute("users", new arraylist());
 }
 public void sessiondestroyed(httpsessionevent arg0) {
 list list = (list)application.getattribute("users");
 string name = arg0.getsession().getattribute("name").tostring();
 list.remove(name);
 application.setattribute("users", list);
 }
 public void attributeadded(httpsessionbindingevent arg0) {
 list list = (list)application.getattribute("users");
 if(arg0.getname().equals("name")){
  list.add(arg0.getvalue().tostring());
 }
 application.setattribute("users", list);
 }
}

web.xml文件中配置:

<listener>
   <listener-class>package.classname</listener-class>
</listener>

附:session在何时被创建?

常见的误解是session在有客户端访问时就被创建,然而事实是某server端调用httpservletrequest.getsession(true)这样的语句时才被创建。注意如果jsp页面没有显式的使用<%page session="false"%>来关闭session,则在jsp页面编译成servlet页面时会自动加上httpservletrequest.getsession(true)这句话。这也是jsp中隐藏对象session的来历。

希望本文所述对大家jsp程序设计有所帮助。