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

我有一个简单的jsp / servlet应用程序,我想为这个应用程序添加AJAXfunction。 我使用JQuery,但我使用的javascript框架并不重要。 这是我的代码:

 function callbackFunction(data){ $('#content').html(data); } $('document').ready(function(){ $('#x').click(function() { $.post('/ajax_2/servlet',callbackFunction) }); });   Increase it 

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或类似的东西,那么传输数据的最佳方法是什么? 怎么样的XML文件, JSON ? 是否有任何特殊的 jsp / servlets库将数据从servlet传输到ajax应用程序? 如何在callbackFunction中解析这些数据?

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

至于服务器端部分,我强烈建议选择Google Gson作为JSON序列化程序。 Gson是首选,因为它支持将复杂的Javabeans和数组,集合和映射转换为JSON,反之亦然,而不需要在一行代码中轻松完成。 它甚至支持generics。 基本上你需要做的就是以下几点:

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

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

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

 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)); }