发表于: 2018-04-08 21:20:02
1 593
今天完成的事情:
1.背景介绍
json简单介绍
JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。
它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。
简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。
易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
2.知识剖析
json 语法:
在 JS 语言中,一切都是对象。因此,任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型:
对象表示为键值对
数据由逗号分隔
花括号保存对象
方括号保存数组
3.常见问题。
JSON 与 JS 对象的关系,怎么生成输出json?
4.解决方案
json对象一般使用工具类生成,比如jackson或者阿里的fastjson;然后我们给前端的实际上都是json字符串,前端主要prase或者框架指定参数类型编译后才变成了json对象,才能用关系符“.”拿出里面的东西。发送json的方式我目前接触到的有三种:1.controller里面@ResponeBody;2.返回jsp并用hsontaglib提取;3.PrintWriter输出(通常用于在过滤器中输出ajax请求回应)
5.编码实战
1.controller里面@ResponeBody:
@RequestBody
作用:
i) 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上;
ii) 再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上。
使用时机:
A) GET、POST方式提时, 根据request header Content-Type的值来判断:
application/x-www-form-urlencoded, 可选(即非必须,因为这种情况的数据@RequestParam, @ModelAttribute也可以处理,当然@RequestBody也能处理);
multipart/form-data, 不能处理(即使用@RequestBody不能处理这种格式的数据);
其他格式, 必须(其他格式包括application/json, application/xml等。这些格式的数据,必须使用@RequestBody来处理);
B) PUT方式提交时, 根据request header Content-Type的值来判断:
application/x-www-form-urlencoded, 必须;
multipart/form-data, 不能处理;
其他格式, 必须;
说明:request的body部分的数据编码格式由header部分的Content-Type指定;
2.jsontaglib
主要一个很大的优势就是可以不在controller层,而是在jsp中修改dto对象的结构,而且能统一格式
举个例子,我是怎么统一返回异常信息和code码给前端的:
这里的exception其实是exception.jsp这个文件:
MVC配置
目录
3.过滤器里面输出json字符串:
工具类
shiro的过滤器
6.扩展思考
检验dto对象并返回json消息结果
明天计划的事情:正式开始复盘
遇到的问题:null
收获:总结
评论