Jersey返回对象以json格式呈现,java.lang.ClassNotFoundException: org.codehaus.jackson.xc.Ja

       常用方式:在使用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>

猜你喜欢

转载自lxzqz.iteye.com/blog/2093812