将action得到的值,通过request显示到页面中

本文通过解决一个具体问题来阐述了Struts框架中Forward与Redirect的区别。作者在尝试将数据从Action传递到JSP页面的过程中遇到了难题,发现使用redirect属性为true时无法在目标页面获取到request中的数据,而将redirect设为false则可以解决问题。文章详细解释了forward与redirect的工作原理及其对request范围数据的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[b][url=http://www.bestown.cn]百事通信息网[/url][/b]


今天又遇到一个问题,将action得到的记录集(ArrayList)存到request中,再将其转到jsp页面,该页面居然在request中找不到这个记录集,将其存放到servletContext中便可以得到该记录集(^O^).
还是跟往常一样,遇到问题首先想到的是Baidu and Google,不过这次他们二位"仁兄"也帮不上忙,于是去各大论坛求助,唉......了一个多小时,无人问径,郁闷哪!凡事得靠自已呀,经过几个小时的查阅资料,最终问题得以解决,心情舒畅哪!

action中代码片段:
[code] ......
ArrayList arlist=(ArrayList)this.ius.getUsers();
request.setAttribute("users", arlist);
return mapping.findForward("success");
......[/code]

页面代码片段:
[code] ......
<logic:present name="users">
<table>
<logic:iterate id="user" name="users" indexId="number">
<tr>
<td>
<bean:write name="number" />
<bean:write name="user" property="userid" />
<bean:write name="user" property="username" />
</td>
</tr>
</logic:iterate>
</table>
</logic:present>
......[/code]
struts配置文件代码片段:
[code] ......
<action path="/listUser" type="org.springframework.web.struts.DelegatingActionProxy" validate="false" >
<forward name="success" path="/listUser.jsp" redirect="true" />
</action>
......[/code]
问题的关键就出在redirect="true",将值改为false就可以了.

那什么到底有何区别呢?
当元素有redirect=“false”属性或redirect属性不存在的时候,RequestDispatcher.forward(…)被执行;当redirect=“true”是,将调用sendRedirect(…)方法。
--------------------------------------------------------------------------
forward是服务器内部重定向,也就是说服务器得到请求后重定向到本应用的另一个程序(页面),在此过程中并没有通知客户端,所以在跳转的叶面中,request作用域的变量都能生效.
redirect是外部(自已理解的)重定向方式,服务器得到请求后先是通知道客户端,客户端再次发送请求,此时request不被保留.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值