当前位置:首页 > JSP教程 > JSP常见问题

JSP监听器用法分析

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



【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐