jsp 中在session中存入一个对象,如何取出这个对象??在线等

zgd_post 2009-03-22 03:54:44
举例说:
定义了一个类
calss user
{
public String name;
public String pwd;
}
登录后将数据存入user中
然后
session.setAttribute("user",user);
现在用
user nowuser=new user();
nowuser=(user) session.getAttribute("user");
取出,但上面这句总是出错
,有高手指点一下
...全文
1454 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
javaforever_cn 2009-12-08
  • 打赏
  • 举报
回复
1)代码严重不符合规范。属性应该私有。
2)应该是2个jsp文件的Transfer包声明不一致。
导致类型转换异常
dingbh1918 2009-12-08
  • 打赏
  • 举报
回复
session 对象也有作用范围,你设定了吗?
JavaAlpha 2009-07-09
  • 打赏
  • 举报
回复
路过看看 学习 了
Sqlexpress 2009-06-06
  • 打赏
  • 举报
回复
错啦!应该是这样!
user nowuser=new user();
nowuser.SetName=(user)session.getAttribute("user");
默默_XL 2009-05-31
  • 打赏
  • 举报
回复
java.lang.ClassCastException: org.apache.jsp.vrbankjsp.WebRoot.transfer2_jsp$1Transfer cannot be cast to
这是类型强制转换错误
你说你的Transfer类是定义在jsp中?哪有这样定义的...如果你的Transfer类定义在你的jsp1页面中,你在jsp2中要使用Transfer去强转session所get的值,肯定会报错...因为找不到Transfer这个类啊...你如何在jsp2中导入你在jsp1中定义Transfer???
类的定义应该写在Model中吧起码
把Transfer类定义在jsp外 说白了就让你这么改,然后在你需要它的jsp中导入...
north86 2009-05-31
  • 打赏
  • 举报
回复
session.getAttribute("xxxxxx");
cfxinxin 2009-05-31
  • 打赏
  • 举报
回复
你这什么东西 我没看明白。。。

我一直都不是这么用的。。。

不在request上取吗?

request.getSession().setAttribute(arg0, arg1); //放入键值对
request.getSession().getAttribute(arg0); //取出键值对
邓臻昊 2009-05-31
  • 打赏
  • 举报
回复
jsp页面首先会转译成servlet来运行
这样你的Transfer就成了一个内部类
我试了一下,照你这样在jsp1页面中定义一个Transwer类,在jsp2页面中是调用不到Transwer类的,这样你当然无法把session中的tstemp属性强制转换成Transwer类型了
你应该把Transwer单独写成一个类文件里而不是jsp页面当中
在jsp页面中调用的时候可以使用<%@ page import="xxx.xxx.xx.Transwer"%>这种形式来使用Transwer类
hanslh 2009-05-31
  • 打赏
  • 举报
回复
我也是新手,大家共同学习吧,你先从最简单的session开始吧,不需要用到javabean

login.jsp
<%
String msg = "";
if (request.getMethod().equalsIgnoreCase("POST")) {
String un = request.getParameter("un");
String pw = request.getParameter("pw");
if (un.equalsIgnoreCase("用户名") && pw.equalsIgnoreCase("密码")) {
session.setAttribute("Login", un);
response.sendRedirect("index.jsp"); //成功的话转到index.jsp
return;
}
msg = "用户名或密码错误!"; //没成功的话打印错误信息
}
%>

<%@page contentType="text/html" pageEncoding="gb2312"%>
<!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</title>
</head>
<body>

<h1>title</h1>

<form id="login" action="login.jsp" method="post">
<p><%=msg%></p>
<input type="text" name="un" />
<input type="password" name="pw" />
<input type="submit" value="LOGIN" />
</form>

</body>
</html>


取出username.jsp

<%
String un = (String) session.getAttribute("Login"); //直接用String类型就可以了
if (un == null) response.sendRedirect("login.jsp"); //顺便可以检查一下,如果username为null就返回login.jsp
%>


希望能够帮到你,如果有空可以来看看的博客,我也是新手,所以把我遇到的问题收在了一起
http://lihui456.blogspot.com/
jinchun1234 2009-05-30
  • 打赏
  • 举报
回复
你应该使用javabean呀,你这样不能保存对象到session中吧,你把session.getAttribute("tstemp")打印出来看看是不是空
吴勉之 2009-05-30
  • 打赏
  • 举报
回复
不明白。。。
Istenderfoot 2009-05-29
  • 打赏
  • 举报
回复
在目标文件直接访问会话,您看可以不
<s:property value="#session.user"/>
yzshijun 2009-03-23
  • 打赏
  • 举报
回复
ts=(Transfer)session.getAttribute("tstemp");
前面的键值对应的语句屏蔽了吗?
zgd_post 2009-03-23
  • 打赏
  • 举报
回复
ts=(Transfer)session.getAttribute("tstemp");
前面的键值对应的语句屏蔽了吗?

这位仁兄说的前面的键值指的是什么?我刚学着用jsp,好多术语还不明白
zgd_post 2009-03-22
  • 打赏
  • 举报
回复
问题补充,Transfer那个类就是在jsp页面里定义的。
zgd_post 2009-03-22
  • 打赏
  • 举报
回复
全部的错误页面
type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: An exception occurred processing JSP page /vrbankjsp/WebRoot/tradeeztoken.jsp at line 7

4: //transfer ts=new transfer();
5: //session.setAttribute("tstemp",ts);
6: Transfer ts=new Transfer();
7: ts=(Transfer)session.getAttribute("tstemp");
8: String password=(String) request.getAttribute("otp");
9: String userid=(String) session.getAttribute("userid");
10:


Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


root cause

java.lang.ClassCastException: org.apache.jsp.vrbankjsp.WebRoot.transfer2_jsp$1Transfer cannot be cast to org.apache.jsp.vrbankjsp.WebRoot.tradeeztoken_jsp$1Transfer
org.apache.jsp.vrbankjsp.WebRoot.tradeeztoken_jsp._jspService(tradeeztoken_jsp.java:93)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


note The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.
还请各位大侠指正

huguang 2009-03-22
  • 打赏
  • 举报
回复
你的错误信息贴的不全,关键信息在下边呢,再贴多点儿
yjw3160 2009-03-22
  • 打赏
  • 举报
回复
class Transfer 你这个类不是public的?你怎么把这个类导入到jsp的 ?
zgd_post 2009-03-22
  • 打赏
  • 举报
回复
类名大写了,但还是出错,我把完整代码贴过来
class Transfer
{
public String payAccounts;
public String AcceptAccounts;
public String AcceptName;
public double money;
public int tradeId;
public int UserID;
public String date;
public String Currency;
public double charges;
}
在jsp1页面
Transfer ts=new Transfer();
ts.payAccounts= (String) request.getParameter("payaccounts");
ts.AcceptName= (String) request.getParameter("newaccname");
ts.AcceptAccounts= (String) request.getParameter("AcceptAccounts");
ts.money= Double.parseDouble((String) request.getParameter("txtTranAmt"));
ts.Currency= (String) request.getParameter("Currency");
//获取当前时间
java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.util.Date currentTime = new java.util.Date();//得到当前系统时间
String str_date1 = formatter.format(currentTime); //将日期时间格式化
String str_date2 = currentTime.toString(); //将Date型日期时间转换成字符串形式
ts.date=str_date2;
//计算费用
ts.charges=ts.money*0.001;
if (ts.charges>20)
{
ts.charges=20;
}
session.setAttribute("tstemp",ts);
在jsp2页面想调用session中的tstemp
Transfer ts=(Transfer)session.getAttribute("tstemp");
结果一运行总出错:
type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: An exception occurred processing JSP page /vrbankjsp/WebRoot/tradeeztoken.jsp at line 7

4: //transfer ts=new transfer();
5: //session.setAttribute("tstemp",ts);
6:
7: Transfer ts=(Transfer)session.getAttribute("tstemp");




huguang 2009-03-22
  • 打赏
  • 举报
回复
出什么错?
另外建议类名改一下,遵循命名规范,首字母大些

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧