我按书本来进行一个例子的测试,但发现在在session中添加值时也没有调用到valueBound()此方法。
请各位多多指教。。
谢谢。。程序代码如下:
/******************UserTrace.java*********************/
package test1;import test1.UserList;
import java.util.*;
import javax.servlet.http.*;
import java.io.*;
public class UserTrace implements
javax.servlet.http.HttpSessionBindingListener{
private String user_name;
private UserList Container=UserList.getInstance();
public String getUserName(){
return user_name;
}
public void setUserName(String name){
user_name=name;
}
public void valueBound(HttpSessionBindingEvent Event){
System.out.println("weiming");
}
public void valueUnbound(HttpSessionBindingEvent Event){
Container.removeUser(user_name);
}
}/******************UserList.jsp***************************/
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.util.*"%>
<%@ page import="test1.*"%>
<%!
UserList userlist=UserList.getInstance();
%>
<jsp:useBean id="usertrace" class="test1.UserTrace" scope="session"/>
<%
String user_id=request.getParameter("user_id");
usertrace.setUserName(user_id);
session.setAttribute("usertrace",usertrace);
out.print("after session!");
userlist.addUser(usertrace.getUserName());
session.setMaxInactiveInterval(10);
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head><body>
<textarea rows="10">
<%
Enumeration elements =userlist.getList();
while(elements.hasMoreElements()){
String name=(String)elements.nextElement();
out.println(name);
}
%>
</textarea>
</body>
</html>/*****************UserList.java******************/
package test1;
import java.util.*;
public class UserList{
private Vector Container;
private static UserList instance=new UserList();
private UserList()
{
Container=new Vector();
}
public static UserList getInstance(){
return instance;
}
public void addUser(String user){
if(user!=null){
Container.addElement(user);
}
}
public Enumeration getList(){
return Container.elements();
}
public void removeUser(String user){
if(user!=null){
Container.removeElement(user);
}
}
}
请各位多多指教。。
谢谢。。程序代码如下:
/******************UserTrace.java*********************/
package test1;import test1.UserList;
import java.util.*;
import javax.servlet.http.*;
import java.io.*;
public class UserTrace implements
javax.servlet.http.HttpSessionBindingListener{
private String user_name;
private UserList Container=UserList.getInstance();
public String getUserName(){
return user_name;
}
public void setUserName(String name){
user_name=name;
}
public void valueBound(HttpSessionBindingEvent Event){
System.out.println("weiming");
}
public void valueUnbound(HttpSessionBindingEvent Event){
Container.removeUser(user_name);
}
}/******************UserList.jsp***************************/
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.util.*"%>
<%@ page import="test1.*"%>
<%!
UserList userlist=UserList.getInstance();
%>
<jsp:useBean id="usertrace" class="test1.UserTrace" scope="session"/>
<%
String user_id=request.getParameter("user_id");
usertrace.setUserName(user_id);
session.setAttribute("usertrace",usertrace);
out.print("after session!");
userlist.addUser(usertrace.getUserName());
session.setMaxInactiveInterval(10);
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head><body>
<textarea rows="10">
<%
Enumeration elements =userlist.getList();
while(elements.hasMoreElements()){
String name=(String)elements.nextElement();
out.println(name);
}
%>
</textarea>
</body>
</html>/*****************UserList.java******************/
package test1;
import java.util.*;
public class UserList{
private Vector Container;
private static UserList instance=new UserList();
private UserList()
{
Container=new Vector();
}
public static UserList getInstance(){
return instance;
}
public void addUser(String user){
if(user!=null){
Container.addElement(user);
}
}
public Enumeration getList(){
return Container.elements();
}
public void removeUser(String user){
if(user!=null){
Container.removeElement(user);
}
}
}
解决方案 »
- 同一IP地址,不同端口的两个Server间post后引起的Session丢失的问题
- 铁道部的订票系统大家觉得是用什么技术做的呢
- 如何修改DOM树中的一个结点值
- 为什么上传后的excel POI无法读取,无法导入数据库。不上传的excel POI就可以读取和导入数据库呢?请看源程序!
- 远程调试端口一连接就关闭
- File 如何重命文件和复制到别一目录?
- 高仿代码
- 高手们我在2000系统对SQL操作数据库对数据操做没有问题!换在XP机子上做SQL2000操作就出现问题!对于这个问题要怎么解决???
- java里怎么转型啊?
- 安装tomcat4的问题
- !!!!!都!!!!!来!!!!!看!!!!!啊!!!!!!-------我都受不啦!!!!!
- j2sdk-1_4_2_10与jdk-1_5_0_05有什么不同
session.setAttribute("",obj)的时候将根据obj是否实现HttpSessionBindingListener来执行valueBound事件;
同样的Object obj=session.removeAttribute("");的时候将根据obj是否实现HttpSessionBindingListener来执行valueUnbound事件;
特别的当session中"abc"已经对应一个obj1时,setAttribute("abc",obj2)将调用obj1.valueUnbound事件和obj2的valueBound事件.
你可以直接使用test1.UserTrace usertrace=new test1.UserTrace()来试试.