一尘不染

将数据从servlet传递到Ajax应用程序中的javascript代码?

jsp

我有一个简单的jsp /
servlet应用程序,我想向该应用程序添加AJAX功能。我使用JQuery,但是我使用什么javascript框架都没关系。这是我的代码:

<script type="text/javascript">

        function callbackFunction(data){
            $('#content').html(data);
        }
        $('document').ready(function(){

            $('#x').click(function() {
              $.post('/ajax_2/servlet',callbackFunction)

            });
        });
    </script>
    <body>
        <a href="#" id="x">Increase it</a>
        <div id="content"></div>

    </body>
</html>

Servlet

    HttpSession session = request.getSession();
    Integer myInteger = (Integer)session.getAttribute("myInteger");
    if(myInteger == null)
        myInteger = new Integer(0);
    else
        myInteger = new Integer(myInteger+1);
    session.setAttribute("myInteger", myInteger);
    response.getWriter().println(myInteger);

问题:

我使用 out.print 将数据从servlet传输到javascript代码(ajax代码),但是如果我有一个复杂的结构,例如 Vector
of Objects
或类似的东西,那么传输数据的最佳方法是什么?那么 XML 文件 JSON 呢?是否有任何 特殊的 jsp/ servlets库将数据从servlet传输到ajax应用程序?如何在 callbackFunction中 解析此数据?


阅读 305

收藏
2020-06-10

共1个答案

一尘不染

最好的方法是使用JSON。有几种Java库可以将完全有价值的Java对象转换为JSON字符串,反之亦然。可以使用Javascript以完全自然的方式访问其他JSON,而无需以另一种格式来回转换/按摩数据。

至于服务器端部分,我强烈建议选择Google Gson作为JSON序列化器。Gson是首选,因为它支持将复杂的Javabean和数组,它们的集合和映射转换为JSON,反之亦然,而无需花费任何代码即可。它甚至支持泛型。基本上,您需要做的是以下几点:

String json = new Gson().toJson(object);

查看用户指南以了解有关Gson功能的更多信息。

总而言之,服务器端的以下内容就足够了:

public static void writeJson(HttpServletResponse response, Object object) throws IOException {
    response.setContentType("application/json");
    response.setCharacterEncoding("UTF-8");
    response.getWriter().write(new Gson().toJson(object));
}
2020-06-10