【发布时间】:2011-02-23 05:40:47
【问题描述】:
我想从 Action 子类向 JSP 页面发送大量数据。
我的问题:
在 Struts 中将数据从 Action 子类发送到 JSP 页面最有效的方法是什么?
这样做会遇到什么问题?
如果我将两个大的
ArrayLists 放在使用request.setAttribute()的请求上并在JSP 页面上读取该请求会怎样?
【问题讨论】:
我想从 Action 子类向 JSP 页面发送大量数据。
我的问题:
在 Struts 中将数据从 Action 子类发送到 JSP 页面最有效的方法是什么?
这样做会遇到什么问题?
如果我将两个大的ArrayLists 放在使用request.setAttribute() 的请求上并在JSP 页面上读取该请求会怎样?
【问题讨论】:
当您在 Struts 1/2 中将大量数据从动作返回到 JSP 时,您不会通过网络发送数据。它不是重定向,而是转发。这意味着从动作返回的数据将在 JSP 中通过引用获得。不涉及复制和网络传输。当然,如果您使用 JSP 和您提供的模型渲染大量内容,则将其发送回客户端将花费大量时间。但动作和视图 (JSP) 之间的通信本身在处理一个请求期间发生在内存中。没什么好担心的。
我认为这适用于将模型从控制器返回到视图的每个框架 - 没有任何内容被复制,只是引用传递。同样使用request.setAttribute 不会复制任何内容,不涉及克隆。
警告:这不适用于会话属性,这些属性在请求之间是持久的,可能会被序列化和复制等。但是请求属性对于大对象来说很好,只要你真的需要它们(?)
【讨论】:
ActionForm 是 Struts 1' 模型的化身,没有其他方法。