站内搜索: 请输入搜索关键词

当前页面: 开发资料首页JSP 专题关于SESSION里面存对象,高手请进!~

关于SESSION里面存对象,高手请进!~

摘要: 关于SESSION里面存对象,高手请进!~


首先请看session里面存的对象的类,它是用来记录用户信息的
package com.cdgk.scdy.model;

public class UserInfo {

private String yjgbh1="";//地区YJGBH
private String yjgbh2="";//社区组织机构代码
private String yjgid="";//ld_jgsqxz表 ld_jgsqxz_id字段

public UserInfo(boolean login, boolean isCenter, String dataSource,String userName, String czyxm) {
super();
// TODO Auto-generated constructor stub
this.login = login;
this.isCenter = isCenter;
this.dataSource = dataSource;
this.userName = userName;
this.czyxm = czyxm;
}
/**
* 操作员姓名
*/
private String czyxm="";
private boolean login = false;
private boolean isCenter = false;
private String dataSource = "";
private String userName="";

public String getDataSource() {
return dataSource;
}
public boolean getIsCenter() {
return isCenter;
}
public boolean getLogin() {
return login;
}
public String getUserName() {
return userName;
}
public String getCzyxm() {
return czyxm;
}
public String getYjgbh1() {
return yjgbh1;
}
public void setYjgbh1(String yjgbh1) {
this.yjgbh1 = yjgbh1;
}
public String getYjgbh2() {
return yjgbh2;
}
public void setYjgbh2(String yjgbh2) {
this.yjgbh2 = yjgbh2;
}
public String getYjgid() {
return yjgid;
}
public void setYjgid(String yjgid) {
this.yjgid = yjgid;
}


}
=================================================================================

平时运行正常
但是当我修改当前调用页面的JAVABEAN的时候,就会出现ClassCastException

跟踪发现问题出在 UserInfo userInfo = (UserInfo) session.getAttribute("userInfo");

不知道为什么就不能转换了?



关注


session存的时候是怎么存的撒?


UserInfo userInfo = (UserInfo)request.getSession().getAttribute("userInfo");
会又这种问题,用这个试试


把你对象存进session代码发出来看看



1是存的时候是什么样的?
2是session实例是怎么得到的?


UserInfo userInfo = (UserInfo) session.getAttribute("userInfo");
UserInfo userInfo = (UserInfo)request.getSession().getAttribute("userInfo");

这两个有区别吗?



取得时候这样应该是没有问题。。。?


zuguanqun(小群) ( ) 信誉:100 Blog 2006-10-17 13:27:00 得分: 0


UserInfo userInfo = (UserInfo)request.getSession().getAttribute("userInfo");
会又这种问题,用这个试试


这个中不?


存的时候使用的是 session.setAttribute("userInfo",userInfo1);
userInfo1是 UserInfo类的一个对象。

UserInfo userInfo = (UserInfo)request.getSession().getAttribute("userInfo");
跟 UserInfo userInfo = (UserInfo)session.getAttribute("userInfo");
有什么区别吗?问题依旧吧



Pily(编程游戏) 我的session实例是通过 request.getSession()得到的,

有一点我需要说明的是,如果我的程序的javaBean不修改,运行就完全正常。
只要我修改 程序调用的JAVABEAN 刷新页面就会出现这个classCastException
当重新启动IE(注意是IE) 就又完全能正常运行


setAttribute(String,String)
存的时候使用的是 session.setAttribute("userInfo",userInfo1);
实际上相当于 session.setAttribute("userInfo",userInfo1.toString());
存进去的时候是字符串,
UserInfo userInfo = (UserInfo)session.getAttribute("userInfo");
硬要把字符串转成UserInfo
就出现了ClassCastException


Session里多存几个字段就是了

存~
setAttribute("User-yjgbh1","");
setAttribute("User-yjgbh2","");
setAttribute("User-yjgid","");

取~
(String)session.getAttribute("User-yjgbh1");
(String)session.getAttribute("User-yjgbh2");
(String)session.getAttribute("User-yjgid");


但是当我修改当前调用页面的JAVABEAN的时候?????????????什么意思?


哦,tomcat reload后,我试过int和String类的信息可以保存,自己写的对象无法reload.
现在是我先在session里存一个用户名,如果发现用户been不存在就重建一个。

估计如果该类可以串行化的话也能保存,但没试过,楼主可以找找相关资料看看。

http://www-128.ibm.com/developerworks/tw/library/j-jtp07294.html
中有一句话可能有用。
所以如果是建立一個分散式應用程式,應當保只將可序列化物件放到 Session 中。


jf


改过BEAN之后,一般都必须关掉再重启TOMCAT,然后再走一遍存和取USERINFO的操作流程,才能保证存取一致啊


就是这个了:
UserInfo userInfo = (UserInfo)request.getSession().getAttribute("userInfo");


改BEAN一般不需要重起TOMCAT,要改了SVLT就必须重起了。


haimeijiejue?


问题还没有解决
ftiger(哈哈鱼) 你理解到我出现的问题的,能详细讲讲吗?
联系我QQ:348761853
email:sophitia212@163.com



问题解决!
只需要把UserInfo 类序列化(实现Serializable接口 加入private static final long serialVersionUID = 1L; 属性),问题就解决了。
非常感谢 ftiger(哈哈鱼).


↑返回目录
前一篇: struts里有多个文本输入框的属性指向同一个ActionForm的String[],编译过不去,要怎么办呢?
后一篇: 求助 按纽按下一次后, 如何变为无效.