在Ajax请求中服务器端向浏览器端响应的数据大多是基于JSON格式的字符串,这样就需要在服务器端和浏览器端做如下工作:
1.在服务器端将Java对象转换成JSON格式的字符串
在这里有多种方法,我今天给大家介绍其中使用比较多的一种:阿里巴巴的fastjson组件,它可以将java对象转换成json格式的字符串。注意:使用fastjson需要引入fastjson-1.2.2.jar
服务器端代码如下:(连接数据库查询出结果之后)
List<Student> studentList = new ArrayList<>();
while (rs.next()) {
// 取出数据
String name = rs.getString("name");
int age = rs.getInt("age");
String addr = rs.getString("addr");
// 将以上数据封装成Student对象
Student s = new Student(name, age, addr);
// 将Student对象放到List集合
studentList.add(s);
}
// 将List集合转换成json字符串
jsonStr = JSON.toJSONString(studentList);
//将转换之后的字符串响应给前端
//为了防止出现中文乱码需要添加下行代码
response.setContentType("text/html;charset=UTF-8");
//获取输出流
PrintWriter out = response.getWriter();
out.print(jsonStr);
2.在浏览器端将接收到的JSON格式的字符串转换成JSON对象
if(xhr.readyState == 4){
if(xhr.status == 200){
//接收JSON格式的字符串
var jsonStr = xhr.responsetext
//将JSON格式的字符串转换成JSON对象
var jsonObj = JSON.parse(jsonStr);
}
}