【问题标题】:How to retrieve the data from database in every submit action of the same page如何在同一页面的每个提交操作中从数据库中检索数据
【发布时间】:2013-11-24 08:06:04
【问题描述】:

我对 Struts 2 有疑问。

  1. 从数据库中检索必要的数据。
  2. 在 JSP 中显示数据
  3. 在 JSP 中,我会提交表单。
  4. 检索到的数据在 JSP 页面中不存在。
  5. 为了显示,我需要再次从数据库中检索数据。

因此,我需要在同一页面的每个提交操作中从数据库中检索数据。 但我不想像这样检索。 如何在提交操作中维护数据?


JSP 页面:

<s:form name="XXXXXX" action="XXXXXXXX" method="post">
<div align="right" style="width: 80%">
    <display:table name="userSearchForms" pagesize="${pageSize}" 
        cellpadding="5px;" cellspacing="5px;" requestURI=""
        class="displayTable" id="displayTable"
        style="border: 3px solid #D9D9D9; border-collapse: collapse; width: 100%;height: 100%;align: right;border: 3px solid #D9D9D9;">
        <display:column title="#" style="border:1px solid black;">
            <input type="radio" name="prep"
                onclick="selectRadio(this.form, '<s:property value="#attr.displayTable.companyId"/>','<s:property value="#attr.displayTable.userId"/>')">
        </display:column>
        <display:column title="companyName" property="companyName" value="companyName"
            style="border:1px solid black;"></display:column>
        <display:column title="departmentName" property="departmentName" value="departmentName"
            style="border:1px solid black;"></display:column>
        <display:column title="userName" property="userName" value="userName"
            style="border:1px solid black;"></display:column>
        <display:column title="email" property="email" value="email"
            style="border:1px solid black;"></display:column>
    </display:table>
</div>

<div style="margin-left: 10%; width: 80%; text-align: right;">
    <s:submit value="Register" action="OtherAction1"/> 
    <s:submit value="Update" action="OtherAction2" /> 
    <s:submit value="Delete" action="OtherAction3"/>
</div>

</s:form>

动作类:

public class sampleAction extends ActionSupport{
private List<searchForm> userSearchForms;
public List<searchForm> getUserSearchForms() {
        if (userSearchForms == null) {
            userSearchForms = new ArrayList<searchForm>();
        }
        return userSearchForms;
    }

public void setUserSearchForms(List<searchForm> userSearchForms) {
        this.userSearchForms = userSearchForms;
    }

public String execute(){
 // Retrieve the data from database;
 // Set to the userSearchForms;
 return SUCCESS;
}

public String OtherAction1(){
  // Other Program Logic;
  return SUCCESS;
}

public String OtherAction2(){
  // Other Program Logic;
  return SUCCESS;
}

public String OtherAction3(){
  // Other Program Logic;
  return SUCCESS;
}

}

我需要在OtherAction1OtherAction2OtherAction3 方法中从数据库中检索数据。

【问题讨论】:

    标签: java jsp struts2


    【解决方案1】:

    您必须从数据库中检索数据。这就是 Web 应用程序的工作方式,它会保留一些数据以从内存中卸载。将此类数据保存在内存中的成本很高,因为内存本身很昂贵,而且服务器的物理内存容量有限。如果数据依赖于正在浏览的用户,则卸载数据成为需求#1,因为在应用程序中同时工作的可能用户数量可能会有所不同,并且内存需求可能会增加。

    提交表单是将用户输入的数据传递给 Web 应用程序的常用过程。在提交之前,JSP 可能会呈现一些数据以供用户查看。如果所需数据未加载,则表示 Web 应用程序存在错误,应予以解决。

    您应该考虑到使用服务器操作内存的成本很高。如果您将此类数据保存在会话或应用程序范围内,则数据将保存在操作内存中。您在这些范围内保存的数据越多,需要的内存就越多。在设计 Web 应用程序时请牢记这一点。

    【讨论】:

    • 感谢您的回答。正如您所解释的,我也不希望将数据保留在应用程序服务器中。现在,我无法提交数据。我可以提交textbox的数据,但是我不能提交Struts2的s:select和display:table。
    • 请检查修改后的问题并建议我。
    • 查看this 示例。您应该在操作返回 JSP 之前初始化 userSearchForms 列表。
    • 我首先在执行动作中初始化了 userSearchForms。我是否需要在其他操作(1,2,3)中再次初始化?请建议我。
    • 如果您想使用不同的操作与同一个 JSP 一起使用,您可能应该阅读this 的答案以获取预初始化的值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    • 2013-04-23
    • 2018-01-28
    • 1970-01-01
    相关资源
    最近更新 更多