求解决方法:jsp --servlet--jsp间传值问题。

dongtianjie 2006-03-02 01:39:06
需求:
概述:在一个页面中可以将输入的部分信息累计的显示在一个类表中。即,输入数据后,点击添加
列表出现一项数据(是输入数据的一个显示)。再输入,再添加,类表显示两个数据。
**用HttpSession对象可以得到效果,可是session保持数据的时间太长,下次打开页面还有上次的数据。



我的实现的思路:(可能不正确,希望得到更好的建议。)
1、jsp文件提交数据到servlet
2、servlet处理数据,将得到的信息封装的一个List对象中。
3、通过servlet指派到jsp页面,把List对象放到request.setAttribute中
4、jsp页面将获得对象连同重新得到的页面的输入信息一起再提交给servlet
5、重复3的操作



实现部分
问题:在servlet中不能得到jsp页面指定的对象,返回的为空值。


下面是主要的代码:
jsp file:---------------------------------------------------------

<jsp:useBean id="data" class="java.util.ArrayList" scope="request" />

<%

if(data!=null){

java.util.ArrayList arrList=(java.util.ArrayList)data;
request.setAttribute("data",arrList);
}
%>


servlet文件:---------------------------------------------------
ArrayList testAL=null;
System.out.println("the boolean of data is "+req.getAttribute("data11"));


在这里每次得到的都是Null.所以也就没有办法将本次传入的数据封装后add到ArrayList中了
故每次得到的都是当前输入的,而没有原来输入的纪录。

大家有没有类似的问题的办法。给点启示。
本人愚钝,想了两天了........
...全文
569 点赞 收藏 16
写回复
16 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
dongtianjie 2006-03-06
谢谢帮忙。
在页面中设定setAttribute
在页面的form action中设定到响应的servlet.
这时在servlet中试图获得getAttribute,返回null

这样的一个流程已经不是在一个request请求的过程了吗?????
回复
jspfans 2006-03-06
koma_wind()
request.setAttribute();我觉得尽量不要放在session中传值

严重同意!!我的第一个程序就是放在session里传数据,当时觉得很方便,但是效率相当低,服务器经常死机!!
回复
jspfans 2006-03-06
楼主被禁言了,我来顶!!
回复
dongtianjie 2006-03-06
查了下资料,好像在页面的 request.setAttribute只能在两个jsp页面间传递。
如果真的是这样的话,那么从jsp到servlet之间传递对象该如何来实现呢????


高人指点。。。。
回复
dongtianjie 2006-03-06
神呀, 救救我吧,都好几天了。还是没搞顶呀。
回复
dongtianjie 2006-03-06
谢谢各位的支持。
首先我的跳转的是没有什么问题的。

请问一下,在jsp页面中用
request.setAttribute("name",obj);
这样的格式,然后将jsp文件提交到servlet。
在servlet中应该是可以用 request.getAttribute("name")来得到页面提交的对象吧。
在这个步骤中,应注意些什么。
回复
yrsheng 2006-03-06
request.setAttribute("data",data);//data为要传对象
request.getServletContext().getRequestDispatcher("servlet的url").forward(request, response);
这样就将所有东西传给你的servlet啦!
回复
koma_wind 2006-03-04
你是怎么跳转的.试一下这个


public void forward(String jspFile, HttpServletRequest request,
HttpServletResponse response) throws IOException, ServletException {
ServletContext context = this.getServletContext();
RequestDispatcher dispatcher = context.getRequestDispatcher(jspFile);
dispatcher.forward(request, response);
}

使用 this.forward("跳转的页面",request,response);
跳转前首先
request.setAttribute();我觉得尽量不要放在session中传值
回复
xiemingmei 2006-03-03
JSP与Servlet之间不可以传递Obj,
只能通过JSP内置对象的一些容器如 application session request来作为通讯区域,
可以保存在application 或session中,这样可以了
但保存在request也可以,但是必须是共用同一请求。
回复
dongtianjie 2006-03-03
to小胖,您说的用session在下一次进入页面,
这个条件如何来很好的判断呢??
回复
dongtianjie 2006-03-03
各位大侠,
现在遇到的问题是,从servlet 用req.setAttribute("data",obj)
可以将数据传得页面,页面也能正常显示。

现在如何将页面得到的这个对象在封装送到servlet呢??


我在页面中用
<jsp:useBean id="data" class="java.util.ArrayList" scope="request" />
<%request.setAttribute("pagadata",data)%>

在servlet中用 req.getAttribute("pagadata") 返回的结果是null

如果在form 中加入隐藏的对象
<input type="hidden" name="pagedata" value="<%=data%>">
在servlet中 返回的是一个字符串的对象,无法将它转化为ArrayList对象。
是不是通过form传递的只能是字符串的对象呀。

不知道问题到底出在什么地方?????
回复
dongtianjie 2006-03-02
这里搭错了, servlet是data , 不是data11.
是刚才考成了测试的代码了
回复
725137 2006-03-02
request.setAttribute("data",arrList);//你这里是放入一个data
}
%>


servlet文件:---------------------------------------------------
ArrayList testAL=null;
System.out.println("the boolean of data is "+req.getAttribute("data11"));//这里是取出data11怎么会对呢

回复
zhmain 2006-03-02
在form中hidden一个变量来接受request.setAttribute("data",arrList),然后提交的时候去取这个值
另外用session也可以但是要记得下次进该页面之前一定要session.removeAttribute("xxx",xxx)
回复
dongtianjie 2006-03-02
自己顶
回复
dongtianjie 2006-03-02
怎么没有人帮忙呀!!!!
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2006-03-02 01:39
社区公告
暂无公告