如何将JSON数据发送到服务器并使用JSP获取JSON/XML作为响应
我是一个Web应用程序的初学者。我在glassfish服务器上使用java EE创建了一个动态Web项目。现在我想让客户端使用json将数据发送到服务器,并使用json或xml从服务器接收数据。通过在线搜索,我现在清楚如何在服务器端进行编程。现在我使用ajax发送json数据。但是,也许这是很容易在服务器上编码,我找不到任何与服务器相关的代码。我的服务器端应该使用JSP读取json数据,使用bean(已完成)生成一些数据并将数据发回。这里是代码,我不知道问题在哪里。任何人都可以给我任何建议吗?你的帮助对我来说意义重大!如何将JSON数据发送到服务器并使用JSP获取JSON/XML作为响应
这是客户端的ajax代码。我派了两个输入数量从形式
$(function() {
$("#myform").submit(function() {
var lat = $("#num1").val();
var lon = $("#num2").val();
alert("form");
if (num1 == '' || num2 == '') {
$('.success').fadeOut(200).hide();
$('.error').fadeOut(200).show();
} else {
$.ajax({
type : "POST",
url : "marker.jsp",
contenttype : 'application/json; charset=utf-8',
data : {
"num1" : "wtf",
"num2" : $("#num2").val(),
},
success : function(msg) {
$('.success').fadeIn(200).show();
$('.error').fadeOut(200).hide();
alert(msg);
}
});
}
return false;
});
});
但之后,我切换到jsp页面,我只发现了两个空值显示,这里的服务器上的代码,我计划在开始发送XML和我不确定request.getParameter是否可以工作,以及如何发回这些xml数据或使用json格式发回数据。帮帮我!
<?xml version="1.0" encoding="UTF-8"?>
<%@ page contentType="text/xml" %>
<%@ page import="javax.naming.InitialContext,net.roseindia.ejb3.stateless.*,javax.ejb.EJB,java.util.*"%>
<%
try {
String s1 = request.getParameter("num1");
String s2 = request.getParameter("num2");
%>
<%=s1%>
<%=s1%>
<%
if (s1 != null && s2 != null) {
List<String> textdatas = cal.GetTextResults(s1, s2);
for (String textdata : textdatas) {
String textLocation= "("+textdata.split("\\t",2)[0]+")";
System.out.println(textLocation);
%>
<text>
<location><%=textLocation%></location>
<event> <%=textdata.split("\\t",2)[1]%></event>
</text>
<%
}
List<String> images = cal.getImage();
for(String image: images){
System.out.println(image);
%>
<image>
<imglocation><%=image.split("\\t",2)[0]%></imglocation>>
<path><%=image.split("\\t",2)[0]%></path>
</image>
<%
}
}
}// end of try
catch (Exception e) {
e.printStackTrace();
//result = "Not valid";
}
%>
如果你没有使用任何MVC框架,我建议你采用一个。从JSP中渲染XML/JSON似乎不是一种好的/简单的做法。它不难看出你的代码变得太麻烦了......并不是说它可能不是有效的代码。
我建议你采用MVC框架 - 我使用VRaptor这是一个相当不错的,简单的一个,让你开发RESTful Web应用程序,甚至没有意识到这一点。请务必检查这one minute guide !!!这个封装了ThoughWorks XStream Framework的框架使得它简单地完成你的任务。看看就需要对请求与JSON对象回应什么:
import static br.com.caelum.vraptor.view.Results.*;
@Resource
public class ClientsController {
private final Result result;
private final ClientDao dao;
//result and dao parameters gets inject by VRaptor that
//by its turn lets you chose which Dependency Injection framework
//you wouldd like to be using with - pretty much as a plugin
public ClientsController(Result result, ClientDao dao) {
this.result = result;
this.dao = dao;
}
@Get("/client/json")
public void loadJson(MyParam param) {
result.use(json()).from(dao.getClient(param.id)).serialize();
}
@Get("/client/xml")
public void loadXml(MyParam param) {
result.use(xml()).from(dao.getClient(param.id)).serialize();
}
}
注意Vraptor从反序列化JSON对象MyParam并且还注入到控制器的动作请求到达!
本例取自this page!
谢谢。但遗憾的是,我忘了提及我使用j2ee和glassfish服务器 – 2012-07-12 06:14:05
它不是问题,您也可以通过此配置运行mvc框架! :) – renatoargh 2012-07-12 06:39:48