从Struts 1.3 Action子类传递到JSP页面的大数据

从Struts 1.3 Action子类传递到JSP页面的大数据,jsp,struts,action,Jsp,Struts,Action,我想从Action子类向JSP页面发送大量数据 我的问题是: 在Struts中,将数据从Action子类发送到JSP页面的最有效方法是什么 这样做我会面临什么问题 如果我使用request.setAttribute()在一个请求上放置两个大的ArrayLists,并在JSP页面上读取该请求,会怎么样 在Struts 1/2中,当您从action向JSP返回大量数据时,您并不是通过网络发送数据。它不是重定向,而是转发。这意味着从操作返回的数据将在JSP中通过引用可用。不涉及复制和网络传输。当然,如

我想从Action子类向JSP页面发送大量数据

我的问题是:

  • 在Struts中,将数据从Action子类发送到JSP页面的最有效方法是什么

  • 这样做我会面临什么问题

  • 如果我使用
    request.setAttribute()
    在一个请求上放置两个大的
    ArrayList
    s,并在JSP页面上读取该请求,会怎么样


  • 在Struts 1/2中,当您从action向JSP返回大量数据时,您并不是通过网络发送数据。它不是重定向,而是转发。这意味着从操作返回的数据将在JSP中通过引用可用。不涉及复制和网络传输。当然,如果您使用JSP和您提供的模型呈现大量内容,那么将其发送回客户端将花费大量时间。但是在处理一个请求的过程中,操作和视图(JSP)之间的通信本身发生在内存中。没什么好担心的

    我认为这适用于将模型从控制器返回到视图的每个框架——没有复制任何内容,只是传递引用。另外,使用
    request.setAttribute不复制任何内容,不涉及克隆


    警告:这不适用于会话属性,会话属性在请求之间是持久的,可能会被序列化和复制,等等。但是请求属性对于大型对象来说很好,只要您确实需要它们(?)

    非常感谢您的澄清。我想知道的另一件事是如何在Struts中设计模型?我正在开发的应用程序为不同的用户存储了大量数据,从视图端进行规划很困难,因此我想先创建模型来开始规划。这样做的最佳方法是什么?首先,您应该记住,始终使用大型模型对象将对负载下的内存消耗产生巨大影响。你不应该在内存中保存太多,只需要满足一个特定的请求。还要明智地使用分页和缓存。就我所记得的,
    ActionForm
    是Struts 1模型的化身,没有其他方法。