当前位置: 移动技术网 > IT编程>开发语言>Java > JSP监听器用法分析

JSP监听器用法分析

2017年12月08日  | 移动技术网IT编程  | 我要评论

本文实例讲述了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程序设计有所帮助。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网