请教有关sessionListener的问题? 能不能把你那个实现sessionListener接口的类的代码贴出来看看 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 package bean.include;import java.io.*;import java.util.*;import javax.servlet.*;import javax.servlet.http.*;import javax.servlet.http.HttpSession;import org.DbConn;import bean.include.OutString;//监听登录的整个过程public class SessionListener implements HttpSessionBindingListener{ public String privateInfo=""; //生成监听器的初始化参数字符串 private String logString=""; //日志记录字符串 private int count=0; //登录人数计数器 private String userId=""; //用户ID private String sessionId=""; //SessionId private String flag=""; //标志位 private String Sql=""; private String remoteHost=""; private String time=""; public DbConn dc2; public OutString os=null; public HttpSession session = null; public HttpSession getSession() { return this.session; } public void setSession(HttpSession seion) { this.session = seion; } public String getUserId() { return this.userId; } public void setUserId(String id) { this.userId=id; } public String getRemoteHost() { return this.remoteHost; } public void setRemoteHost(String ip) { this.remoteHost=ip; } public String getFlag() { return this.flag; } public void setFlag(String flag) { this.flag=flag; } public String getSessionId() { return this.sessionId; } public void setSessionId(String sessionId) { this.sessionId=sessionId; } public SessionListener() { // this.privateInfo=info; } public int getCount() { return count; } public void creSession(HttpServletRequest request) throws ServletException, IOException { session = request.getSession(true); } public void valueBound(HttpSessionBindingEvent event) { os = new OutString(); this.time=os.getOracleDate(); if(this.flag == "" || this.flag == null) this.Sql="insert into T_onLineUserInfo values('"+this.userId+"','"+this.remoteHost+"',to_date('"+this.time+"','YYYY-MM-DD,HH24:MI:SS'),to_date('"+this.time+"','YYYY-MM-DD,HH24:MI:SS'),'0')"; else this.Sql ="update T_onLineUserInfo set F_Remote_Host='"+this.remoteHost+"',F_flag='0',F_login_time=to_date('" +this.time + "','YYYY-MM-DD,HH24:MI:SS') where F_ID='" +this.userId + "'"; updateSql(this.Sql); } public void updateSql(String sql) { try { dc2 = new DbConn(); dc2.executeUpdate(sql); dc2.Commit(); } catch(Exception e) { System.out.println("SessionListener:updateSql() ="+e); } finally { dc2.Close(); } } public void valueUnbound(HttpSessionBindingEvent event) { this.session.removeAttribute("listener"); this.Sql="update T_onLineUserInfo set F_flag='1',F_exit_time=to_date('"+this.time+"','YYYY-MM-DD,HH24:MI:SS') where F_ID='"+this.userId+"'"; updateSql(this.Sql); }} 呵呵,我看了几句就知道问题了你不应该实现HttpSessionBindingListener接口而应该实现HttpSessionListener接口和其中的sessionCreated()和sessionDestroyed()的方法第一个接口是用来和你这个类绑定的,当你这个类被垃圾回收的时候就会调用valueUnbound()方法,你的问题就在这 public class SessionListener implements HttpSessionBindingListener,java.io.Serializable{.........} 楼上的这么一说我就没底了我想请教一下实现java.io.Serializable是什么作用而他这代码为什么是这个问题?真心求教!谢谢 jFresH_MaN,你好!针对你所说的,我贴出来的代码是否只需做如下修改: 1.将HttpSessionBindingListener改为HttpSessionListener 2.将valueBound()改为sessionCreated() 3.将valueUnbound()改为sessionDestroyed() 4.将HttpSessionBindingEvent 改为HttpSessionEvent 请赐教! 你试试吧,我是这么想的但我看楼上那个星的东东贴的好象也有道理因为报错有一句tried to place an on-serializable attribute stonecsdn,你好!你所说的方法已解决我程序中存在的问题,非常感谢! 整型二维数组赋值给多个textfield JAVA GUI按钮添加背景图片的问题 怎样使画面上的组件,能看见,但不能响应键盘或鼠标事件 请教数据压缩的问题! 急!用javaapi测试自定义类的疑惑!高分相送 java应该提供“销毁对象”的方法吧 DashO Pro 为什么不能用java.exe 在命令行下运行Server.class ?? java有没有输入时间的图形化控件呢,急用,最高加到可以300分!! 怎么在窗口内改变字体和字号? 在调试中出现 "row index out of change"?怎么解决?求助! 没有主类的class文件怎么打包?
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.http.HttpSession;
import org.DbConn;
import bean.include.OutString;//监听登录的整个过程
public class SessionListener implements HttpSessionBindingListener
{
public String privateInfo=""; //生成监听器的初始化参数字符串
private String logString=""; //日志记录字符串
private int count=0; //登录人数计数器
private String userId=""; //用户ID
private String sessionId=""; //SessionId
private String flag=""; //标志位
private String Sql="";
private String remoteHost="";
private String time="";
public DbConn dc2;
public OutString os=null;
public HttpSession session = null; public HttpSession getSession()
{
return this.session;
}
public void setSession(HttpSession seion)
{
this.session = seion;
} public String getUserId()
{
return this.userId;
}
public void setUserId(String id)
{
this.userId=id;
} public String getRemoteHost()
{
return this.remoteHost;
}
public void setRemoteHost(String ip)
{
this.remoteHost=ip;
} public String getFlag()
{
return this.flag;
}
public void setFlag(String flag)
{
this.flag=flag;
} public String getSessionId()
{
return this.sessionId;
}
public void setSessionId(String sessionId)
{
this.sessionId=sessionId;
} public SessionListener()
{
// this.privateInfo=info;
} public int getCount()
{
return count;
} public void creSession(HttpServletRequest request) throws ServletException, IOException
{
session = request.getSession(true);
} public void valueBound(HttpSessionBindingEvent event)
{
os = new OutString();
this.time=os.getOracleDate();
if(this.flag == "" || this.flag == null)
this.Sql="insert into T_onLineUserInfo values('"+this.userId+"','"+this.remoteHost+"',to_date('"+this.time+"','YYYY-MM-DD,HH24:MI:SS'),to_date('"+this.time+"','YYYY-MM-DD,HH24:MI:SS'),'0')";
else
this.Sql ="update T_onLineUserInfo set F_Remote_Host='"+this.remoteHost+"',F_flag='0',F_login_time=to_date('" +this.time + "','YYYY-MM-DD,HH24:MI:SS') where F_ID='" +this.userId + "'";
updateSql(this.Sql);
} public void updateSql(String sql)
{
try
{
dc2 = new DbConn();
dc2.executeUpdate(sql);
dc2.Commit();
}
catch(Exception e)
{
System.out.println("SessionListener:updateSql() ="+e);
}
finally
{
dc2.Close();
}
} public void valueUnbound(HttpSessionBindingEvent event)
{
this.session.removeAttribute("listener");
this.Sql="update T_onLineUserInfo set F_flag='1',F_exit_time=to_date('"+this.time+"','YYYY-MM-DD,HH24:MI:SS') where F_ID='"+this.userId+"'";
updateSql(this.Sql);
}
}
你不应该实现HttpSessionBindingListener接口
而应该实现HttpSessionListener接口和其中的sessionCreated()和sessionDestroyed()的方法第一个接口是用来和你这个类绑定的,当你这个类被垃圾回收的时候就会调用valueUnbound()方法,你的问题就在这
.........
}
我想请教一下实现java.io.Serializable是什么作用
而他这代码为什么是这个问题?
真心求教!谢谢
1.将HttpSessionBindingListener改为HttpSessionListener
2.将valueBound()改为sessionCreated()
3.将valueUnbound()改为sessionDestroyed()
4.将HttpSessionBindingEvent 改为HttpSessionEvent
请赐教!
但我看楼上那个星的东东贴的好象也有道理
因为报错有一句tried to place an on-serializable attribute