常用方式:在使用Jersey的过程中,与前端交互的数据大多是符合json格式的数据,然后前端使用eval方法把后台返回的符合json格式的String数据转换为json对象。其中的步骤大多是:
1.前端访问后台,后台获取数据要么使用JsonObject工具把数据转换为json格式的字符串,或者手工拼接把数据拼接成符合json格式的字符串;
2.前端获取到数据,然后使用eval方法把数据转换为json对象;
更好的方式:其实Jersey提供了自动返回application/json格式的数据,使用这种方法既省去了后台手工转换数据的过程,也省去了前端把符合json格式的字符串转换为json对象的过程;但是在使用系统自带的jar时,第一次部署系统启动后调数据会报一个异常:java.lang.ClassNotFoundException: org.codehaus.jackson.xc.JaxbAnnotationIntrospector,其实产生这个问题的原因是系统自带的jar包太久了,有一些新的class类不存在,使用最新的或者合适的jar就解决了。
package returnJson;
public class Student {
private String id;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package returnJson;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
@Path("student")
public class StudentResource {
/**
* 返回json格式的数据
* 常用方式:@Produces("text/plain")
* return 返回String,返回的是手工转换好的json字符串
* @return 返回对象,其实返回的是转换为key、value的json数据
*/
@GET
@Path("get")
@Produces("application/json")
public Student getStudent() {
Student student = new Student();
student.setId("110");
student.setName("police");
/**
* return 返回String,返回的是手工转换好的json字符串
* JSONObject json = new JSONObject();
* json.accumulate("result", student);
* return json.toString();
*/
return student;
}
public static void main(String[] args) {
Client client = Client.create();
WebResource resource = client.resource("http://localhost:8888/JS/services/student/get");
String str = resource.get(String.class);
System.out.println(str);
}
}
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Jersey json测试</title> </head> <script type="text/javascript" src="./js/jquery-1.7.1.js"></script> <script type="text/javascript"> $(function() { $.get('services/student/get', {}, function(result) { alert(result.name); }, 'json'); //常用方式 //$.get('services/student/get', {}, function(result) { //var data = eval('(' + result + ')'); //alert(data.result.name); //}); }); </script> <body> This is my JSP page. <br> </body> </html>