在上篇博客中我们说到后端代码这篇将具体详解 有三种方法
第一种是下面这些 只是需要改变两个地方 1.Ajax请求要加上.action 如 login.action 2.在webxml中的url-pattren中改为*.action(/*)代表拦截所有请求
List<Product> list = new ArrayList<Product>();
//这里把“类别名称”和“销量”作为两个属性封装在一个Product类里,每个Product类的对象都可以看作是一个类别(X轴坐标值)与销量(Y轴坐标值)的集合
list.add(new Product("衬衣", 10));
list.add(new Product("短袖", 20));
list.add(new Product("大衣", 30));
ObjectMapper mapper = new ObjectMapper(); //提供java-json相互转换功能的类
String json = mapper.writeValueAsString(list); //将list中的对象转换为Json格式的数组
//System.out.println(json);
//将json数据返回给客户端
response.setContentType("text/html; charset=utf-8");
response.getWriter().write(json);
}
第二种是
/*
// * 将 集合转换为 json 字符串
// */
// System.out.println("将 集合转换为 json 字符串");
List<User> uList = new ArrayList<User>();
uList.add(new User("1002","king","king","admin","wangzhiceng","/handsome.jpg"));
// String jsonListStr = objMapper.writeValueAsString(uList);
// System.out.println("jsonStr:\t"+jsonListStr);
// /*
// * 将 json 字符串 转换为 集合
// */
// List<User> uList1 = objMapper.readValue(jsonListStr,ArrayList.class);
// System.out.println("uList1:\t"+uList);
第三种是基于restful的相关开发
需要添加的是produces和ResponseBody标示
@RequestMapping(value="/restful",produces={"application/json;charset=UTF-8"})
@ResponseBody
public String restful()
{
System.out.println("restful 请求测试~");
return "restful 请求测试";
}
//将list集合以数组的形式返回给前端,遍历去除数据
@RequestMapping("getList")
@ResponseBody
public List<User> getList()
{
List<User> uList = new ArrayList<User>();
uList.add(new User("1002","king","king","admin","wangzhiceng","/handsome.jpg"));
uList.add(new User("1001","dream","dream","worker","jayson","/beautiful.jpg"));
return uList;
}
@RequestMapping(value="getObj/{testStr}",produces="application/json;charset=utf-8")
@ResponseBody
public User getObj(@PathVariable("testStr") String testStr)
{
System.out.println("----------- 请求 getObj 方法--------");
System.out.println("testStr:\t"+testStr);
User u = new User("1002","king","king","admin","wangzhiceng","/handsome.jpg");
return u;
}
/*
* RequestMapping 中 请求 路径 后加的 /{id} 表示 请求 时需要加上一个 传给
* 后端的 变量 id,此时 想要 在 响应的方法中 使用 该变量就需要 在 参数列表中 添加
* @PathVariable 接收类型(为 java 中的类型,此处为 String) 指定变量名(此处为 id)
*/
@RequestMapping(value="test/{id}",produces="application/json;charset=utf-8")
@ResponseBody
public String test(@PathVariable("id") String id)
{
System.out.println("test---------id:\t"+id);
return id;
}
以 restful 方式 发出 ajax 请求
restful 请求返回的 对象 到前端 直接可以使用,无需 使用eval() 方法进行 转换.
因此返回的是对象直接调用,返回的是数组oop[0].name 就可一种调用
至于具体的细节部分需要自己注意