【问题标题】:How to go about passing the data from Java Servlet to JavaScript [duplicate]如何将数据从 Java Servlet 传递到 JavaScript [重复]
【发布时间】:2018-01-04 23:45:53
【问题描述】:

我有这个代码:

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 格式传回。

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

【问题讨论】:

    标签: javascript java servlets


    【解决方案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
    
    
    }
    

    【讨论】:

    • response.println(arrayObj.toString()); ??这是做什么的?打印?
    • @dark_illusion_909099 抱歉,应该是 printWriter 我在回复中已更正
    • 我得到 500(内部服务器错误)但是我不确定它的原因是什么
    • 对不起,我错过了 json jar,这就是我收到错误的原因
    【解决方案2】:

    你有很多问题:

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

    编辑

    附加信息。

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

    【讨论】:

    • 你能举个例子吗?
    • 哪个步骤的示例?
    • 你上面提到的所有步骤
    • @DwB 我想你很困惑......也许我很困惑(?)。请求参数是客户端设置的,不是servlet,还是?除非你重定向 URL...
    • @ControlAltDel 你很困惑。如果要将数据从 Servlet 传递到资源,则 Servlet 需要将数据添加到请求中。
    猜你喜欢
    • 2011-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多