0

我正在开发一个基本的 Web 应用程序,在我的 first.jsp 文件中添加一些输入数据后,数据通过 servlet(比如 AnalyzeServlet.java)进行处理,结果数据显示在 results.jsp 中。这是我在 results.jsp 文件中显示输出的方式:

    <c:when test="${userChoice == 'student'}">
    <table border="1" width=100%>
    <th> STUDENT NUMBER</th>
    <th> STUDENT NAME</th>
    <th> STUDENT ADDRESS </th>
    <c:forEach items="${results}" var="result">
        <tr>
            <td>${result.number}</td>
            <td>${result.name}</td>
            <td>${result.address}</td>
         </tr>
    </c:forEach>
   </table>
  </c:when>

下面是输入输入的文本框,单击提交应该会获得其他内容。

     <div id="resultPageForm1">
<form name="BForm1" action="NewServlet" method="POST">
    <input type="hidden" name="bChoice" value="grades">
    <h3> Paste name of a student in the text box and click on Submit to get grades</h3>
    <input type="text" name="input">
    <input type="submit" class="button" value="GET GRADES">
</form>
</div>
<h3>Grades are displayed below</h3>
<p>${Output1}</p>

我为用户提供了一个选项,可以将学生姓名从上述输出输入到文本框中,单击提交后,本学期的成绩应显示在文本框(即 div)中。然而,关键是现有的输出(即学号、地址、姓名的列表)应该仍然可见。但是,目前,成绩正在显示,上面的数据丢失了,我必须按浏览器上的后退箭头来检索这些数据。所以我的问题是如何更新已经有一些动态生成内容的当前页面而不丢失它?

4

1 回答 1

2

有几种方法可以做到这一点。

  1. 一种方法是使用 AJAX。AJAX 是一种无需重新加载网页即可从服务器检索数据的技术。因此,您将拥有一个包含表单和结果部分的页面。表单提交按钮将向您的 servlet 提交 AJAX 调用以检索结果。然后,您将使用 JavaScript 动态更新页面的结果部分。鉴于您现在所拥有的,这将是一个重大变化。另外,你不懂 AJAX 和 Javascript,这对你来说会很困难。

  2. 一种可能更适合您所拥有的(表单 JSP、结果 JSP 和 servlet)的方法是使用 HTML 框架。这是一种较旧的技术,在视觉上可能不那么令人愉悦,但它应该可以完成工作。这是一个非常快速的概述:

a) 创建一个框架集作为您的主页。在页面上将用于提交表单。一帧将用于显示结果:

<frameset rows="50%,50%">
    <frame  name="resultsFrame">
    <frame src="f2.html" name="formFrame">
</frameset>

b)在您的formFrame中,放置您的表单。将target属性设置为指向 resultsFrame:

<form name="BForm1" action="NewServlet" method="POST" target="resultsFrame">
    <input type="hidden" name="bChoice" value="grades">
    <h3> Paste name of a student in the text box and click on Submit to get grades</h3>
    <input type="text" name="input">
    <input type="submit" class="button" value="GET GRADES">
</form>

当您提交表单时,结果将出现在另一个框架中。

于 2013-11-08T03:48:17.783 回答