javaweb使用gson工具使浏览器返回json数据
1.什么是序列化和反序列化
(1)Java序列化是指把Java对象转换为字节序列的过程,而Java反序列化是指把字节序列恢复为Java对象的过程;
(2)序列化:对象序列化的最主要的用处就是在传递和保存对象的时候,保证对象的完整性和可传递性。序列化是把对象转换成有序字节流,以便在网络上传输或者保存在本地文件中。序列化后的字节流保存了Java对象的状态以及相关的描述信息。序列化机制的核心作用就是对象状态的保存与重建。
(3)反序列化:客户端从文件中或网络上获得序列化后的对象字节流后,根据字节流中所保存的对象状态及描述信息,通过反序列化重建对象。
(4)本质上讲,序列化就是把实体对象状态按照一定的格式写入到有序字节流,反序列化就是从有序字节流重建对象,恢复对象状态。
2. 后台直接将数据库数据返回浏览器
UserServlet
//新建一个gson类对象
Gson gson = new Gson();
String json;
String id = req.getParameter("id");
//通过参数调用的对象值
Book book = bookService.findBookById(Integer.parseInt(id));
//新建一个存放Book对象的list集合
List<Book> list = new ArrayList<>();
//将对象保存到集合中
list.add(book);
//通过gson类对象的方法来转换list集合为json数据
json = gson.toJson(list);
//设置发送到客户端的响应的内容类型
resp.setContentType("text/plain");
//设置编码类型
resp.setCharacterEncoding("gb2312");
//字符输入流:PrintWirter getWriter()
//字节输出流:ServletOutputStream getOutputStream()
PrintWriter out = new PrintWriter(resp.getOutputStream());
out.print(json);
out.flush();//把内存中的数据刷写到硬盘
3.展示
4.后台将数据库数据添加数据返回浏览器
UserServlet
Integer bookid2 = Integer.parseInt(req.getParameter("id"));
System.out.println("UserServlet中使用方法updateUserPhoto获取参数为:" + bookid2);
Book book2 = bookService.findBookById(bookid2);
//思路就是用map集合封装状态信息等,然后再将数据传入
Map map = new HashMap();
map.put("code", "0");
map.put("msg", "");
map.put("data", book2);
json = gson.toJson(map);
resp.setContentType("text/plain");
resp.setCharacterEncoding("gb2312");
PrintWriter out = new PrintWriter(resp.getOutputStream());
out.print(json);
out.flush();//把内存中的数据刷写到硬盘