簡體   English   中英

在jsp中顯示來自servlet的數據,但不覆蓋當前值

[英]show data from servlet in jsp but without override the current value

我需要在jsp頁面中顯示來自servlet的數據。 目前,我有這個:

SERVLET:

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

JSP:

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

在JSP中,有一個簡單的文本框和一個發送按鈕。 在我按下發送按鈕的那一刻,響應被錯誤地覆蓋了。

如何在每次搜索后都在換行符中看到結果? 我還想查看以前的搜索...

非常感謝!

您有兩種選擇:

  1. 將當前值發送到服務器,進行搜索並將新結果附加到服務器,然后將整個字符串發送回Request的JSP,以再次顯示所有內容。 如果您仍想在<p>而不是作為輸入字段顯示data ,則必須將值包裝在<input>標記中,可能是<input type="hidden">

    JSP:

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

    Servlet的:

     Object newData = text; Object oldData = request.getParameter("oldData"); request.setAttribute("data", oldData + "<br/>" + newData); request.getRequestDispatcher("index.jsp").forward(request, response); 
  2. 將所有datadata在會話作用域中,然后從servlet附加到它。 JSP必須從會話范圍而不是請求中輸出值。 在此示例中,值存儲在唯一的級聯String 將每個datadata在數據結構(如List ,然后在JSP中對其進行迭代,以便分隔符保留在視圖中,可能會更好。

    JSP:

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

    Servlet的:

     Object newData = text; Object oldData = request.getSession().getAttribute("data"); request.getSession().setAttribute("data", oldData + "<br/>" + newData); request.getRequestDispatcher("index.jsp").forward(request, response); 

1。在servlet中使用數組而不是簡單對象

  1. 用新值填充數組:Servlet

  2. 遍歷數組並在要顯示為新行的地方顯示每個項目

您要將數據放入RequestScope ,必須將其添加到SessionScope中才能查看先前的結果。

請參見以下示例: http : //viralpatel.net/blogs/jsp-servlet-session-listener-tutorial-example-in-eclipse-tomcat/

JSP編寫Java代碼不是很好的做法,因此您希望將邏輯移到servlet中。 但是此示例描述了您需要的要點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM