簡體   English   中英

如何從Servlet發送數據到JSP?

[英]How to send Data to JSP from a Servlet?

我正在一個只有一個頁面(index.jsp)的項目中,該頁面的初始加載正在發送Ajax請求並檢索JSON數據。 發送到我的Servlet和Servlet的AJAX調用返回JSON數據,而我只有一個Servlet。 我試圖將一些數據發送到我的JSP頁面進行填充,所以這就是我編寫Servlet的方式...

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws  ServletException, IOException {
    response.setContentType("text/html");
    PrintWriter out =response.getWriter();
    String queryString = request.getQueryString();
            ResourceBundle props = ResourceBundle.getBundle("jira");

    XmlMerge xmlMerge = new XmlMerge();
    String mergeFiles=xmlMerge.getJsonData();

    out.println(mergeFiles);
    out.close();
         //Debug Statement
        System.out.println(xmlMerge.getTodo());
        // *THIS IS THE WAY I AM SEND DATA TO JSP PAGE.*
    request.setAttribute("todo", xmlMerge.getTodo());
    request.getRequestDispatcher("/index.jsp").forward(request, response);
}

在我的index.jsp中

<%=(String)request.getAttribute("todo")%>

我正在嘗試輸出結果。

怎么了?

我剛剛執行了此更改,它顯示您需要的內容:

  protected void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
    response.setContentType("text/html");
    request.setAttribute("todo", "10");
    request.getRequestDispatcher("/index.jsp").forward(request, response);
  }

這是生成的index.jsp:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

<%=(String)request.getAttribute("todo")%>

</body>
</html>

您的getTodo()可能有問題。.我不知道它是如何工作的,但這也許可以幫助您:

...
XmlMerge xmlMerge = new XmlMerge();
String todo = xmlMerge.getTodo();
...
request.setAttribute("todo", todo);

更新:

PrintWriter out = response.getWriter();
out.println(...);
out.close();

這是您的問題...您正在獲取資源並關閉它。 這可能會導致非法的狀態異常問題。

您“不需要”將分派器分配給index.jsp ..如果不使用分派器,但是要呈現頁面,則可以使用如下代碼:

  protected void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

    response.setContentType("text/html");
    response.getWriter().write("<html><body>"+getSomething()+"</body></html>");
  }

為什么index.jsp不是默認調用? 因為可能甚至不存在index.jsp文件,並且它可能是另一個servlet的調用。 您可以具有將對index.jsp的調用映射到servlet的配置。

http://tutorials.jenkov.com/java-servlets/web-xml.html

我仍然不知道使用out.println的目的是什么,但是如果您希望將其顯示在jsp中,則可以將其作為參數發送為“ todo”:

 request.setAttribute("mergeFiles", mergeFiles);

然后在jsp中將其打印為“ todo”。

暫無
暫無

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

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