- 浏览: 456989 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (354)
- 面向对象分析设计/系统架构 (12)
- Mysql/Orcal11g (13)
- JSP/Java//Python/Xharbour (66)
- 软件测试 (21)
- 信息安全小知识 (1)
- Android (5)
- IT生活/哲学/兵法 (23)
- 软件工程/UML/需求分析学习与实践 (6)
- 操作系统/网络/组成原理 (9)
- 持续集成Maven/Hudson/自动化测试 (9)
- eBay /Paypal developer (10)
- Hadoop/HBase/Solr (0)
- 重构分析及其思考 (2)
- 企业架构 (7)
- 分析模式/设计模式 (4)
- SSH学习笔记 (1)
- Quartz及其JWatch监控 (0)
- Linux服务器 (0)
- ExtJs学习笔记 (1)
- 重读java编程思想 (3)
- ESB/SOA/WebServices (0)
- SpringMVC/Struts/Hibernate/Spring (7)
- Xharbour/Pelles C/ SQLite3 (0)
- Magento 电商 (1)
- Object C (1)
- note/redis (0)
- SpringBoot (0)
最新评论
-
snow8261:
太粗略了。
企业架构之数据架构 -
haithink:
面试成功没?
JVM 加载Class文件的原理及其机制 -
feisi0003731843:
不好意思我没有重启,重启后好多了,可有的地方回放还是不成功的。 ...
Selenium IDE测试ExtJs一种测试解决办法 -
feisi0003731843:
这个好像不行吧,我试过了不好使啊。还是用id来做的。不能用啊。 ...
Selenium IDE测试ExtJs一种测试解决办法 -
yuchensuifeng:
您好,静态页面是可以的,但是,我指定error-page为js ...
JSP创建错误处理页面
监听HTTp会话是利用Servlet监听程序。结合监听技术,来讨论获得当前平台中用户总数的方法。
在Web应用中,可以监听HTTP会话活动情况、HTTP会话中属性的设置情况,也可以监听HTTP会话的active、passivate情况等
可以通过HttpSessionListener接口监听HTTP会话创建、销毁的信息;通过HttpSessionActivationListener监听HTTP会话的active、passivate情况;通过HttpSessionBindingListener监听HTTP会话中对象的绑定信息;通过HttpSessionAttributeListener监听HTTP会话中属性的设置请求。
下面看个实例
该实例中,SessionListener实现了HttpSessionListener接口。SessionListener类还有一个属性,就是Hashtable用来保存所有的登录信息。当创建一个Session时,就调用sessionCreate()方法将登陆会话信息保存到Hashtable中;当销毁有关Session时,就调用sessionDestroyed()方法将登陆会话信息从Hashtable中移除,这样就实现了管理在线用户登录会话信息的目的。
我们还需要几个页面程序来测试这个监听器的工作并且深入体会下Session的会话管理机制。
测试程序如下:
当访问index.jsp时会出现一个类似登录框的会话描述页面,输入会话描述后进入display.jsp显示刚才输入的会话信息。
例如
单击管理会进入会话关联页面(session.jsp)单击“注销”会进入会话注销页面(logout.jsp)是HTTP会话无效,
例如:会话关联的程序
注销会话的程序(logout.jsp)
如果单击“销毁”,则可以强制将会话信息移除如下
最后将监听器部署到web.xml中去。如下
在Web应用中,可以监听HTTP会话活动情况、HTTP会话中属性的设置情况,也可以监听HTTP会话的active、passivate情况等
可以通过HttpSessionListener接口监听HTTP会话创建、销毁的信息;通过HttpSessionActivationListener监听HTTP会话的active、passivate情况;通过HttpSessionBindingListener监听HTTP会话中对象的绑定信息;通过HttpSessionAttributeListener监听HTTP会话中属性的设置请求。
下面看个实例
package com.test.ch9; import java.util.Hashtable; import java.util.Iterator; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; public class SessionListener implements HttpSessionListener{ //集合对象,保存session对象的引用 static Hashtable ht=new Hashtable(); //实现HttpSessionListener接口,完成session创建事件控制 public void sessionCreated(HttpSessionEvent arg0){ HttpSession session=arg0.getSession(); ht.put(session.getId(),session); System.out.println("create session:"+session.getId()); } //实现HttpSessionListener接口,完成session销毁事件控制 public void sessionDestroyed(HttpSessionEvent arg0){ HttpSession session=arg0.getSession(); System.out.println("destory session:"+session.getId()); ht.remove(session.getId()); } // 返回全部session对象集合 static public Iterator getSet(){ return ht.values().iterator(); } //依据session id返回指定的session对象 static public HttpSession getSession(String sessionId){ return (HttpSession)ht.get(sessionId); } }
该实例中,SessionListener实现了HttpSessionListener接口。SessionListener类还有一个属性,就是Hashtable用来保存所有的登录信息。当创建一个Session时,就调用sessionCreate()方法将登陆会话信息保存到Hashtable中;当销毁有关Session时,就调用sessionDestroyed()方法将登陆会话信息从Hashtable中移除,这样就实现了管理在线用户登录会话信息的目的。
我们还需要几个页面程序来测试这个监听器的工作并且深入体会下Session的会话管理机制。
测试程序如下:
<%@ page contentType="text/html;charset=gb2312"%> <% String strName=null; String strThing=null; try{ strName=request.getParameter("name"); strThing=request.getParameter("thing"); if((strName==null)||(strName.length()==0)){ throw new Exception("null strName"); } if((strThing==null)||(strThing.length()==0)) throw new Exception("null strThing"); session.setAttribute("name","strName"); session.setAttribute("thing","strThing"); response.sendRedirect("display.jsp"); } catch(Exception e){} %> <html> <head> <title>会话管理</title> </head> <body> <center>会话管理实例</center> <form action="" method="post"> <table> <tr> <td>名称:</td> <td><input name="name" type="input"/></td> </tr> <tr> <td>事件:</td> <td><input name="thing" type="input"/></td> </tr> <tr> <td align="right"></td> <td align="right"> <button type="submit">提交</button> <button type="reset">重置</button> </td> </tr> </table> </form> </body> </html>
当访问index.jsp时会出现一个类似登录框的会话描述页面,输入会话描述后进入display.jsp显示刚才输入的会话信息。
例如
<%@ page language="java" pageEncoding="GB2312"%> <!DOCTYPE HTML PUBLIC"-//w3c//dtd html 4.0 transitional//en"> <html> <head> <title>会话控制显示</title> </head> <body bgcolor="#FFFFFF"> <% if(session.isNew()==true){ response.sendRedirect("index.jsp") } out.println("name:"+session.getAttribute("name")+"<br>"); out.println("thing:"+session.getAttribute("thing")+"<br>"); out.println("session id:"+session.getId()+"<br>"); out.println("create time:"+session.getCreateTime()); %> <form> <table> <tr> <td><a href="session.jsp">管理</a></td> <td><a href="logout.jsp">注销</a></td> </tr> </table> </form> </body> </html>
单击管理会进入会话关联页面(session.jsp)单击“注销”会进入会话注销页面(logout.jsp)是HTTP会话无效,
例如:会话关联的程序
<%@ page language="java" pageEncoding="GB2312"%> <%@ page import="com.test.ch9.*, java.util.*"%> <!DOCTYPE HTML PUBLIC"-//w3c//dtd html 4.0 transitional//en"> <html> <head> <title>Manager session JSP</title> </head> <body bgcolor="#FFFFFF"> 会话管理 <br> <table border="1"> <tr bgcolor="yellow"> <td>会话Id</td> <td>用户名</td> <td>事件</td> <td>创建时间</td> <td>操作</td> </tr> <% Iterator iterator=SessionListener.getSet(); while(iterator.hasNext()){ try{ HttpSession session1=(HttpSession)iterator.next(); out.println("<tr>"); out.println("<td>"+session1.getId()+"</td>") out.println("<td>"+session1.getAttribute("name")+"</td>"); out.println("<td>"+session1.getAttribute("thing")+"</td>") out.println("<td>"+session1.getCreationTime()+"</td>"); %> <td><a href='end.jsp?sessionid=<%=session1.getId()%>'>销毁</a></td> <% out.println("</tr>"); System.out.println("sessionId"+session1.getId()); } catch(Exception ex){ ex.printStackTrace(); return; } } %> </table> </body> </html>
注销会话的程序(logout.jsp)
<%@ page language="java" pageEncoding="GB2312"%> <!DOCTYPE HTML PUBLIC"-//w3c//dtd html 4.0 transitional//en"> <html> <head> <title>会话控制</title> </head> <body bgcolor="#FFFFFF"> <% if(session.isNew()!=true){ session.invalidate(); } response.sendRedirect("index.jsp"); %> </body> </html>
如果单击“销毁”,则可以强制将会话信息移除如下
<%@ page language="java" pageEncoding="GB2312"%> <%@ page import="com.test.ch9.*, java.util.*"%> <!DOCTYPE HTML PUBLIC"-//w3c//dtd html 4.0 transitional//en"> <html> <head> <title>LL JSP</title> </head> <body bgcolor="#FFFFFF"> <% //关闭会话,释放资源 try{ String strSid=request.getParameter("sessionid"); HttpSession session1=SessionListener.getSession(strSid); if(session!=null){ session1.invalidate(); } } catch(Exception e){ e.printStackTrace(); } response.sendRedirect("session.jsp"); %> </body> </html>
最后将监听器部署到web.xml中去。如下
<web-app> <listener> <listener-class>com.test.ch9.SessionListener</listener-class> </listener> </web-app>
发表评论
-
java实现读取文件下所有的excel文件
2012-08-10 09:30 2089最近处理一个压缩包,里面有几百上千个excel文件。本来 ... -
在firefox浏览器下出现如果引用外部连接不存在会隐藏红叉
2012-07-23 15:38 993在firefox下引用出错的一些图片会隐藏红叉。而在IE下 ... -
java 字符替换的一些问题值得记录下
2011-09-30 16:40 884最近在处理一些字符串的替换中发生的一些问题。 最近需要临 ... -
ExtJs学习之弹出框,提示框,输入框等框
2011-06-23 22:13 93791.ExtJs之消息框: 语法:Ext.MessageB ... -
FreeMarker学习之概念
2010-08-04 10:12 860FreeMarker概述: 引用 1. ... -
HTML标准属性
2010-07-03 20:35 754核心属性(Core attributes) 以下标签 ... -
HTML标签
2010-07-03 20:14 1009HTML 4.01 / XHTML 1.0 参考手册 按字母 ... -
HTML基础
2010-07-03 00:54 772基于Web前端技术是有HTML静态语言向现在的JaveSc ... -
Struts2的开发规范和技巧
2010-05-28 14:56 1240基于Struts2的开发,如果没有足够的经验和规范做支撑,并不 ... -
第一次的Struts2的一个异常记录
2010-05-28 14:22 1051在配置正确struts.xml、web.xml、Action类 ... -
Java处理Excel全解一
2010-05-25 10:00 2190在获取客户需求的时候 ... -
Java EE 6 规范之平台概述
2010-05-22 21:28 2213JavaTM平台企业版(Java EETM)的概述 体系结构 ... -
Python3入门学习
2010-05-14 14:51 2237在学习一门计算机语言的时候,首先接触的入门程序基本上都是& ... -
Python3操作文件,目录和路径
2010-05-14 11:48 35081.遍历文件夹和文件 ... -
内存溢出
2010-04-22 14:23 1425java SE应用程序共同的问 ... -
JPA之ManyToMany的处理
2010-04-18 14:17 4513在处理关系中,最为麻烦的可能是多对多的关系处理,因为多对多 ... -
JPA之OneToOne关系处理
2010-04-18 14:05 3942在很早学习关系数据库的时候学过一对多,多对一,一对一,多对多的 ... -
JPA之OneToMany和ManyToOne处理
2010-04-18 13:52 18928前面介绍和总结了JPA ... -
JPA学习之二(入门篇)
2010-04-16 10:48 3762简单总结下,JPA的入门。在学习JPA的时候运用参考Hib ... -
JPA2.0的学习一
2010-04-15 17:18 8634Java EE 5平台引入了Java ...
相关推荐
3. **HttpSessionListener**:用于监听HTTP会话的创建和销毁事件,有助于管理会话状态,如记录用户登录状态、会话超时提醒等。 配置Servlet监听器通常在"web.xml"部署描述符文件中进行。以下是一个简单的例子: ``...
2. HttpSessionListener: 这个接口允许开发者监听HTTP会话的创建和销毁。在用户首次访问应用并创建会话时,sessionCreated()方法会被调用;当会话过期或者显式调用invalidate()方法时,sessionDestroyed()方法会被...
- HttpSessionListener:监听HTTP会话的创建和销毁: - sessionCreated(HttpSessionEvent): 用户新建会话时调用。 - sessionDestroyed(HttpSessionEvent): 用户会话结束或超时时调用。 - ...
`HttpSessionListener`是Java Servlet API的一部分,它允许开发者监听HTTP会话的创建和销毁事件,从而统计在线人数。 首先,我们需要创建一个简单的Java程序来存储和管理在线人数。这个程序叫做`OnlineCounter.java...
`HttpSessionAttributeListener`是Servlet规范定义的一种监听器接口,它允许我们监听HTTP会话中的属性变化。通过实现这个接口,我们可以捕获用户登录、注销等与会话相关的事件,从而动态维护登录用户列表,并在需要...
最后,`HttpSessionAttributeListener`接口允许我们监听HTTP会话中属性的变化。例如,当添加、移除或替换属性时,我们可以接收到通知。这在需要跟踪会话状态变化的场景中非常有用。实现该接口的方法有`...
例如,`HttpSessionListener`可以监听HTTP会话的创建和销毁,而`ServletContextListener`则可以在Web应用启动和停止时执行初始化和清理工作。以下是一个简单的`HttpSessionListener`示例: ```java @WebListener ...
其次,`HttpSessionListener`接口允许你监听HTTP会话的创建和销毁。在大型的Web应用中,管理会话是非常关键的,因为会话存储了用户的个人信息和状态。当用户首次访问网站并创建会话时,`sessionCreated`方法会被调用...
`DelegatingFilterProxy`用于代理其他过滤器,以及各种监听器如`HttpSessionListener`、`ServletContextListener`等,用于监听HTTP会话和Web应用上下文的生命周期事件。 - **日志记录与调试**:描述中还提到了日志...
1. **HttpSessionListener**:这个接口用于监听HTTP会话的创建和销毁。你可以实现这个接口,当新的会话创建时,系统会调用sessionCreated()方法,会话销毁时调用sessionDestroyed()方法。这在管理会话跟踪和资源分配...
2. **HttpSessionListener**:用于监听HTTP会话的创建和销毁事件。 3. **ServletRequestListener**:用于监听HTTP请求的初始化和销毁事件。 4. **其他更具体的监听器**:如**HttpSessionAttributeListener**(监听...
在Java Web开发中,`HttpSessionListener`和`HttpSessionBindingListener`都是用于监听HTTP会话生命周期的重要接口。它们分别用于不同的场景,并且有着各自特定的功能。了解这两种监听器的区别对于实现单点登录等...
- **作用**:用于监听HTTP会话中的属性变化情况。 5. **HttpSessionActivationListener** - **事件方法**: - `sessionDidActivate()`:在会话激活时调用。 - `sessionWillPassivate()`:在会话钝化前调用。 ...
除了`ServletRequestListener`之外,还有许多其他类型的监听器,例如`ServletContextListener`用于监听上下文的初始化和销毁,`HttpSessionListener`用于监听HTTP会话的创建和结束等。每个监听器都有其特定的生命...
`ViewerHttpSessionListener` 负责监听HTTP会话事件,确保每个用户的报表请求都在各自的会话中独立处理。 - **作用**:管理用户的会话状态,确保每个用户都有独立的数据环境。 - **关键步骤**: - 创建新的会话时...
- **监听器**:`ForumSessionListener` 实现了 `HttpSessionListener` 接口,用于监听HTTP会话的创建和销毁事件,特别是当一个会话结束时,该监听器会负责清理与该会话相关的数据。 - **过滤器**:`...
- **监听器(Listener)**: 监听特定事件的发生,并作出相应的处理,如监听HTTP会话的创建与销毁。 ##### 3. 数据库操作 - **JDBC**: Java访问数据库的标准接口,通过它可以执行SQL语句,实现对数据库的操作。 - **...