2

我需要在 jsp 页面中显示来自 servlet 的数据。目前我有这个:

伺服器:

Object data = text;
request.setAttribute("data", data);
request.getRequestDispatcher("index.jsp").forward(request, response);

JSP:

<p>result: ${data}</p>

在 JSP 中有一个简单的文本框和一个发送按钮。在我按下发送按钮的那一刻,每次都会覆盖响应。

我怎样才能在每次搜索后在新行中看到结果?我还想看看以前的搜索...

非常感谢!

4

3 回答 3

1

你有几个选择:

  1. 将当前值发送到服务器,进行搜索并将新结果附加到那里,然后将整个字符串发送回 JSP 中Request以再次显示它。您必须将值包装在<input>标签中,<input type="hidden">如果您仍想data在 a中显示<p>而不是作为输入字段显示。

    JSP:

    <input type="hidden" name="oldData" value="${data}"/>
    <p>result: ${data}</p>
    

    小服务程序:

    Object newData = text;
    Object oldData = request.getParameter("oldData");
    request.setAttribute("data", oldData + "<br/>" + newData);
    request.getRequestDispatcher("index.jsp").forward(request, response);
    
  2. 将所有值存储data在会话范围内,然后从您的 servlet 附加到它。JSP 必须从会话范围而不是请求中输出值。在此示例中,值存储在唯一的串联String中。将 的每个值存储data在数据结构中可能会更好,例如 a List,然后在 JSP 中对其进行迭代,以便分隔符保留在视图中。

    JSP:

    <c:if test="${not empty sessionScope.data}">
        <p>result: ${sessionScope.data}</p>
    </c:if>
    

    小服务程序:

    Object newData = text;
    Object oldData = request.getSession().getAttribute("data");
    request.getSession().setAttribute("data", oldData + "<br/>" + newData);
    request.getRequestDispatcher("index.jsp").forward(request, response);
    
于 2012-09-14T10:50:40.487 回答
0

1.在servlet中使用数组而不是简单的对象

  1. 用新值填充数组:Servlet

  2. 遍历数组并将每个项目显示为新行

于 2012-09-14T10:50:06.550 回答
0

您将数据放入其中,RequestScope您必须将它们添加到其中SessionScope才能看到以前的结果。

请参阅此示例:http: //viralpatel.net/blogs/jsp-servlet-session-listener-tutorial-example-in-eclipse-tomcat/

在 中编写 java 代码不是很好的做法JSP,因此您可能希望将逻辑移动到 servlet。但是这个例子描述了你需要的点。

于 2012-09-14T10:50:37.660 回答