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();//把内存中的数据刷写到硬盘

5.展示

javaweb使用gson工具使浏览器返回json数据的更多相关文章

  1. JavaWeb 返回json数据的两种方式

    1.说明 由于一般情况下,由浏览器(前端)发送请求,服务器(后台)响应json数据,所以这里结合js进行说明: A服务器发送请求至B服务器,并接收其返回的json数据,见文末推荐,这里不再赘述! 2. ...

  2. 在使用Ajax请求返回json数据的时候IE浏览器弹出下载保存对话框的解决方法

    在使用Ajax请求返回json数据的时候IE浏览器弹出下载保存对话框的解决方法 最近在做一个小东西,使用kindeditor上传图片的时候,自己写了一个上传的方法,按照协议规则通过ajax返回json ...

  3. Jquery 返回json数据在IE浏览器中提示下载的问题

    Jquery 返回json数据,IE浏览器提示下载的问题,当提交完数据后返回的本来是json数据的,在火弧里测试正常,解决方法如下 今天遇到Jquery 返回json数据,IE浏览器提示下载的问题,当 ...

  4. springMvc配置xml使ResponseBody返回Json

    @ResponseBody 在返回的数据不是html标签的页面,而是其他某种格式的数据时(如json.xml等)使用: 不在springMvc中配置json的处理的话,我们通常会在Controller ...

  5. javaweb Servlet接收Android请求,并返回json数据

    1.实现功能 (1)接收http请求 (2)获取Android客户端发送的参数对应的内容 (3)hibernate查询数据库 (4)返回json数据 2.java代码 import EntityCla ...

  6. 【Struts2】SSH如何返回JSON数据

      在开发中我们经常遇到客户端和后台数据的交互,使用比较多的就是json格式了.在这里以简单的Demo总结两种ssh返回Json格式的数据 项目目录如下 主要是看 上图选择的部分 WebRoot里面就 ...

  7. 深入了解Struts2返回JSON数据的原理

    首先来看一下JSON官方对于"JSON"的解释: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析 ...

  8. (转)Struts2返回JSON数据的具体应用范例

    转载自 yshjava的个人博客主页 <Struts2返回JSON数据的具体应用范例> 早在我刚学Struts2之初的时候,就想写一篇文章来阐述Struts2如何返回JSON数据的原理和具 ...

  9. Struts2返回JSON数据的具体应用范例

    早在我刚学Struts2之初的时候,就想写一篇文章来阐述Struts2如何返回JSON数据的原理和具体应用了,但苦于一直忙于工作难以抽身,渐渐的也淡忘了此事.直到前两天有同事在工作中遇到这个问题,来找 ...

  10. J2EE Web开发入门—通过action是以传统方式返回JSON数据

    关键字:maven.m2eclipse.JSON.Struts2.Log4j2.tomcat.jdk7.Config Browser Plugin Created by Bob 20131031 l ...

随机推荐

  1. OpenAirInterface,开源的 4G EPS 实现

    目录 文章目录 目录 前文列表 OSA OpenAirInterface OAI 的仿真 物理信道仿真 系统级仿真 OAI 的 SDR LTE 参考文档 前文列表 <USRP B210 软件定义 ...

  2. 【WPF】自定义数据集合绑定到UI界面

    需要展示列表项,从https://github.com/jdscodelab/File-Manager-UI-Wpf这个项目,只有前端UI. 复用了其文件内容列表   主要源码: <StackP ...

  3. C# 借助NPOI 完成 xls 转换为xlsx

    背景:MinExcel开源类库,导数据的库,占用内存很低,通过io,不通过内存保存,不支持 xls格式的文件,支持csv和xlsx,所以要想使用这个库,就得把xls格式转换为xlsx.只复制了数据 合 ...

  4. winform cefsharp chart.js 再winform上使用chart.js 绘制动态曲线

    CefSharp 是一款开源的使用.net平台基于谷歌的 封装浏览器组件,可用于winform wpf . chart.js 也是一款开源的图表展示组件. 我所作的就是使用这两个组件再winform上 ...

  5. Flask源码阅读

    上下文篇 整个Flask生命周期中都依赖LocalStack()栈?.而LocalStack()分为请求上下文_request_ctx_stack和应用上下文_app_ctx_stack. _requ ...

  6. .NET Core应用程序每次启动后使用string.GetHashCode()方法获取到的哈希值(hash)不相同

    前言 如标题所述,在ASP.NET Core应用程序中,使用string.GetHashCode()方法去获取字符串的哈希值,但每次重启这个ASP.NET Core应用程序之后,同样的字符串的哈希值( ...

  7. NET框架下如何使用PaddleOCRSharp

    打开VSIDE,新建Windows窗体应用(.NET Framework)类型的项目,选择一个.NET框架,如.NET Framework 4.0,右键点击项目,选择属性>生成,目标平台设置成X ...

  8. MySQL学习笔记-数据操作语言

    SQL-数据操作语言(DML) 数据操作语言,用于对数据库中表的数据记录进行增删改的操作 一.添加数据(insert) 1. 给指定字段添加数据 insert into {表名} ({字段1},{字段 ...

  9. 自用电脑+外网开放+SSL认证(纯免费)

    背景: 本文的目的主要是为了方便大家测试,不过有条件的情况下没必要学习了.主要是给那些没有服务器,公司也不给ssl认证的开发测试人员的一种方案:就像题目所说的那样. 纯免费,纯免费的话是有学习成本的, ...

  10. [SWPUCTF 2021 新生赛]gift_F12

    首先我们打开环境会发现花里胡哨的,而题目中有提示:F12,所以我们直接F12查看源码 然后ctrl+f信息检索flag.直接找到flag提交 但要注意提交格式为NSSCTF{}