如何将数据从Java Servlet传递到JavaScript

时间:2017-07-28 19:51:23

标签: javascript java servlets

我有这段代码:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    PrintWriter printWriter = response.getWriter();
    JSONArray arrayObj=new JSONArray();

    TimeTableDAO timeTable = new TimeTableDAO();
    ArrayList<String[]> data = timeTable.getTimeTableData();

    for (int i = 0; i < data.size(); i++){
        for (int j = 0; j < data.get(i).length; j++){
            printWriter.print("Token  " + data.get(i)[j] + "\n");

        }
    }

    response.sendRedirect("script.js");
    response.getWriter().write(data.toString());
}

在我的javascript文件中, 一旦页面被加载并且所有内容都被呈现,它将触发它:

$(window).on('load', function() {
$.get("TeacherServlet", function(response) {
    console.log(response);
});
});

我正在尝试将我在servlet中的数据传递回javascript,以便我可以使用Jquery对数据执行其他操作。 但是我希望这些数据作为JSON格式传回。

请有人帮我这样做。在此先感谢:)

2 个答案:

答案 0 :(得分:1)

然后将所有内容添加到JSONArray中,然后将其写入响应

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    PrintWriter printWriter = response.getWriter();
    JSONArray arrayObj=new JSONArray();

    TimeTableDAO timeTable = new TimeTableDAO();
    ArrayList<String[]> data = timeTable.getTimeTableData();

    for (int i = 0; i < data.size(); i++){
        for (int j = 0; j < data.get(i).length; j++){
            arrayObj.put(data.get(i)[j]); // instead of writing directly, add it to the JSONArray.
        }
    }
    printWriter.println(arrayObj.toString()); //write the JSONArray to the response
    response.sendRedirect("script.js");
    //response.getWriter().write(data.toString()); //this doesn't do what you want


}

答案 1 :(得分:0)

您有很多问题:

  1. 将要从Servlet传输的数据作为请求属性添加到目标页面。
  2. 不要重定向到js文件。相反,在Servlet中,从RequestDispatcher对象获取request并将请求分派给目标资源(在您的情况下,是js文件)。
  3. 在js文件中,您需要从请求中检索参数值。
  4. 修改

    其他信息。

    1. 阅读有关Java Servlet开发的一些内容。考虑谷歌搜索“java servlet开发教程”。
    2. JEE JavaDoc添加书签并进行阅读。 HttpServletRequest是一个很好的起点。
    3. request.setAttribute(attributeName, attributeValue);
    4. request.getRequestDispatcher(stringPathToTargetResource);
    5. 对于JS代码,您可以自己动手。尝试使用谷歌搜索“使用javascript获取请求属性”。以下是讨论此主题的StackOverflow post