JSP页面循环保存数据的问题?

whlusha720 2008-07-19 10:51:15
a.jsp

String [] str = new String [30];
String [] dbData = new String [6];
String sql = "select a.username,a.password, b.username, age, sex, tel from spume0710 a, spume0711 b where a.userid=b.userid";

int count = 0;
while(rs.next()){
for(int i = 1; i <= rs.getMetaData().getColumnCount(); i++){
str[count] = rs.getString(i);
count++;
}
}

for(int j = 0; j < str.length; j++){
if(uname.equals(str[j]) && psw.equals(str[j+1])){
for(int m = 0; m < dbData.length; m++){
request.setAttribute("dbData[" + m + "]", str[m*j+m]);
}
b = true; break;
}else{
b = false;
}
}




b.jsp
<p>姓名:<%=request.getAttribute("dbData[2]")%></p> // 值为null
<p>年龄:<%=request.getAttribute("dbData[3]")%></p> // 值为null
<p>性别:<%=request.getAttribute("dbData[4]")%></p> // 值为null
<p>电话:<%=request.getAttribute("dbData[5]")%></p> // 值为null


请问为什么保存不了值 ??
...全文
239 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
hujing101 2008-07-26
  • 打赏
  • 举报
回复
楼上说的都是和请求,会话有关的 你能不能先看看你在数据库去数据的时候是否都已经取出来了呢~
whlusha720 2008-07-26
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 mike1980 的回复:]
引用 21 楼 whlusha720 的回复:
谢谢哦 我也想规范一点 但这个项目很小 而且对struts不是很熟 JSP表单的action="???"也不是很清楚到底和 web.xml的配置有什么关联 所有只能2个页面间跳转 也属于无奈

不一定要struts啊,没有struts之前都是JSP跳转到servlet,servlet处理完数据后跳转到JSP。
你先写个bean,把Servlet处理好的数据存放到bean里,如果是多个不同类型的数据就放到一个bean里(如:人的姓名、年龄等)…
[/Quote]

非常感谢 因为你说的模式 我还不熟 所以要花点时间研究一下

有什么不懂的再来请教你 呵呵
dsn21 2008-07-25
  • 打赏
  • 举报
回复
request 的只保存一次 如果楼主因为内存消耗不想用session,
那么就可在另一个页面中也用request保存住。。这样来回循环保存
mike1980 2008-07-25
  • 打赏
  • 举报
回复
你是a.JSP跳转到b.JSP?你用JSP页面文件做类文件做的事?

我建议你用类文件写业务和数据库操作,并将查询得到的结果保存到bean中,再将bean存放到request中,
然后跳转到显示页面,用EL表达式提取bean中的数据,这样做比较符合JAVA的规范。

你可以试着这样做一下,我继续关注你有什么问题。

PS:你把数据都丢到session中在页面读取,那么那些数据你不删除吗?
多做几次这样的操作,那服务器内存就塞满了。
tonybao 2008-07-25
  • 打赏
  • 举报
回复
把你的session().setAttribute("dbData[" + m + "]", str[m*j+m]); 改成:
session.setAttribute("dbData[" + m + "]", str[m*j+m]);

cool已经跟你说了呀。。。
whlusha720 2008-07-25
  • 打赏
  • 举报
回复
session().setAttribute("dbData[" + m + "]", str[m*j+m]); 这样也保存不了

好像"dbData[" + m + "]" 的写法不对

有知道的朋友吗 ??
mike1980 2008-07-25
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 whlusha720 的回复:]
谢谢哦 我也想规范一点 但这个项目很小 而且对struts不是很熟 JSP表单的action="???"也不是很清楚到底和 web.xml的配置有什么关联 所有只能2个页面间跳转 也属于无奈
[/Quote]
不一定要struts啊,没有struts之前都是JSP跳转到servlet,servlet处理完数据后跳转到JSP。
你先写个bean,把Servlet处理好的数据存放到bean里,如果是多个不同类型的数据就放到一个bean里(如:人的姓名、年龄等),如果是有类似的数据就用List存放多个bean(如:多个人的姓名、年龄等);然后将List或bean存放到request中,在页面用EL表达式读取这些数据。
如:
bean:
public class People{
private String name;
private int age;

PS:getter和setter我就不写了。
}

servlet:
People p = new People();
将数据存入P中。
request.setAttribute("pop",p);
然后跳转到页面。

JSP:
名称:${pop.name}

这样就可以了。
如果是List就用JSTL标签迭代一下。
whlusha720 2008-07-25
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 mike1980 的回复:]
你是a.JSP跳转到b.JSP?你用JSP页面文件做类文件做的事?

我建议你用类文件写业务和数据库操作,并将查询得到的结果保存到bean中,再将bean存放到request中,
然后跳转到显示页面,用EL表达式提取bean中的数据,这样做比较符合JAVA的规范。

你可以试着这样做一下,我继续关注你有什么问题。

PS:你把数据都丢到session中在页面读取,那么那些数据你不删除吗?
多做几次这样的操作,那服务器内存就塞满了。
[/Quote]

谢谢哦 我也想规范一点 但这个项目很小 而且对struts不是很熟 JSP表单的action="???"也不是很清楚到底和 web.xml的配置有什么关联 所有只能2个页面间跳转 也属于无奈

希望能有个比较规范的项目例子可以好好学习一下 呵呵
whlusha720 2008-07-25
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 tonybao 的回复:]
把你的session().setAttribute("dbData[" + m + "]", str[m*j+m]); 改成:
session.setAttribute("dbData[" + m + "]", str[m*j+m]);

cool已经跟你说了呀。。。
[/Quote]


谢谢这位朋友 我一直用的session.setAttribute("dbData[" + m + "]", str[m*j+m]);
而不是session().setAttribute("dbData[" + m + "]", str[m*j+m]);

因为session().会报错的
whlusha720 2008-07-19
  • 打赏
  • 举报
回复
可是换成
session.setAttribute("dbData[" + m + "]", str[m*j+m]);



<p>姓名: <%=session.getAttribute("dbData[2]")%> </p> // 值为null
<p>年龄: <%=session.getAttribute("dbData[3]")%> </p> // 值为null
<p>性别: <%=session.getAttribute("dbData[4]")%> </p> // 值为null
<p>电话: <%=session.getAttribute("dbData[5]")%> </p> // 值为null



还是得不到值 !

那么在session里面怎么用循环保存数据呢??
limon758 2008-07-19
  • 打赏
  • 举报
回复
request只转发一次
DreamerX2004 2008-07-19
  • 打赏
  • 举报
回复
我觉得form提交以后request的内容才能生效,然后转入b.jsp才能得到request中的数据
请问楼主是通过何种方式提交a.jsp的form的呢?
pilishou 2008-07-19
  • 打赏
  • 举报
回复
把数组换成list集合
whlusha720 2008-07-19
  • 打赏
  • 举报
回复
可是用session保存太费内存资源了
我只是实现页面之间值的传递


a.jsp 后面的不分 已经有转向了

if(b){
session.setAttribute("userName", uname);
response.sendRedirect("ok.jsp");
}else{
response.sendRedirect("error.jsp");
}
zhangshudo 2008-07-19
  • 打赏
  • 举报
回复
request是提交后,b页面才可以拿到~

所以,你用session应该可以保存和得到的`

或者你用jsp的forward转到b.jsp页面,可以试下~

总觉得,你这样写怪怪的~呵呵~
whlusha720 2008-07-19
  • 打赏
  • 举报
回复
没有报错 因为dbData[] 已经定义过了 所以初始值都是null
最后得到的值也是null
推测是没有把值保存到session里
welcom20080808 2008-07-19
  • 打赏
  • 举报
回复
用session.getSession()得值.
request.getParameter()也可以取到.
但你用到session的话就得用上面的.
cool_scorpion 2008-07-19
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 whlusha720 的回复:]
谢谢8楼的朋友
可是 session().setAttribute("dbData[" + m + "]", str[m*j+m]);  这样也保存不了

session().setAttribute("aa", aa); 第一个参数是字符串常量 第二个参数是字符串
所以在b.jsp  取到的 <%=session.getAttribute("dbData[2]")%> </p>    值为null
[/Quote]


写错了,,session()改为 session
zhuhong110450 2008-07-19
  • 打赏
  • 举报
回复
是不是报500错误?有没有包错?
whlusha720 2008-07-19
  • 打赏
  • 举报
回复
谢谢8楼的朋友
可是 session().setAttribute("dbData[" + m + "]", str[m*j+m]); 这样也保存不了

session().setAttribute("aa", aa); 第一个参数是字符串常量 第二个参数是字符串
所以在b.jsp 取到的 <%=session.getAttribute("dbData[2]")%> </p> 值为null
加载更多回复(3)

81,092

社区成员

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

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