我有一个简单的 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代码),但是如果我有一个复杂的结构,例如对象向量或像这样的事情,传输数据的最佳方式是什么? 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);
检查user guide了解有关 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));
}
关于jquery - 在 Ajax 应用程序中将数据从 servlet 传递到 javascript 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2589047/