关于struts1 action的scope的问题

xrealx 2008-09-13 10:08:35
谁能详细说明下<action ...... scope="session|request"...中session和request的区别和使用场合举例~~~~?
...全文
256 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengfeng925 2008-09-13
  • 打赏
  • 举报
回复
关于生命周期,一般request就是一次请求,如果你请求变了,再次请就就不可以了。而session是这个会话中的,如果你浏览器不关,就会一直有的。
fengfeng925 2008-09-13
  • 打赏
  • 举报
回复
<action path="/..."
type="...."
scope="session/scope"
.../>
<forward name="..." path="..."/>
</action>

这个scope,默认情况下是session,也就是在整个回话中,ActionServlet自动为你创建一个session,会把form里的数据自动设置到session里面,这个session的名字就是你的action关联的form类的名字。场合一般就是一个页面需要向下一个页面传值是,得把scope设置成session的,因为你请求到下一个页面,需要在这个页面把上一个页面的数据取出来,就得用session了。
可是通常情况下我们都是用的reques,一次请求就够了。通常的场合是,我们在这个action里调用完模型层后,意思就是把值从数据库里面取出来后,需要把结果放到另一个JSP页面展示出来。这时候一般的做法就是把scope设置为request。直接在这个action里request.setAttribute("",""),然后再JSP页面里通过标签把结果取出来进行展示。因为如果你默认session的话,session里面会存放的越来越多,就得每次调用完模型层后就清空session里面的数据,后者在form类里重写reset方法。所以如果不是页面直接连续的传值得话,一般我们设置scope为request的。

xrealx 2008-09-13
  • 打赏
  • 举报
回复
补充下..能解释下2者生命周期更好~~

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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