我有一个简单的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中 解析此数据?
最好的方法是使用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)); }