发表于: 2018-04-01 23:13:51
1 413
一、今天完成的事情
1、全面了解了一下json格式的传递机制和各种传递的姿势
首先是jsontag-lib 控制器写法
jsp页面 一个真json对象 一个假json对象
最后测出两条数据
然后是传统的使用@ResponseBody注解完成的json格式对象传递,由于不经过视图层,所以不需要写jsp页面
最先尝试写一个假数据
postman测得
然后是json格式的集合
postman测得结果
在学会了传统json和jsontaglib的使用后开始思考两种方法的优劣:
1、在传递数据的灵活性上,jsontaglib有一个非常大的优势,就是在传递数据给前端的时候可以在jsp页面使用<json:property>标签选择性的传递属性,这样就可以把前端不需要的字段属性屏蔽掉,提高了数据的可用性,也减少了数据的传递,提高了性能,而传统json虽然在返回json对象的时候可以做到设置相关字段屏蔽,但是在返回集合或者数组对象的时候很难去设置字段屏蔽
2、在性能上,由于传统json的传递不经过视图层,所以对性能的提升更大,以下参考了张鑫师兄实测的数据
测试使用100个线程,循环50次
上面的是@ResponseBody方式的测试结果,下面的是json-taglib的测试结果,发现从效率上来看,json-taglib的方式不如@ResponseBody的方式.
可以发现在较大并发数下传统json的表现几乎是jsontaglib性能的2倍!
所以我开始尝试使用传统json返回数组或集合并想办法屏蔽掉相应字段
首先我发现阿里巴巴提供的最常用的fastjson包没有提供集合转数组的方法,去网上搜了一下,
net.sf.json
这个包里面内置了list转JsonArray的方法
然后导入相应的依赖包和2级依赖
中间出现的commons-logging包版本冲突,用昨天学的方法排除了
果然可以直接转成json数组格式,测出来没问题
然后就是思考如何将想屏蔽的属性给屏蔽掉,我注意到这个包里面有一个类
JsonConfig
这个类有一个方法,json属性过滤器
setJsonPropertyFilter
对这个方法研究了一会之后做了个工具类
需要排除的属性都可以写在里面,然后调用方法,返回的数组对象中就不存在不想要的属性了
我将如图的属性屏蔽掉了,然后写了一个选择返回属性的接口
然后测出来
成功
我发现这个工具类需要完善,明天将工具类完善,不能在工具类里将属性写死,否则这个工具类是无法复用的
初步的想法是用spring的配置文件将字段注入,这样可以灵活的控制屏蔽的字段
还有一个想法是能将屏蔽的属性改为方法的形参,如果能写成,这样肯定是最方便的
如果想法能成功,复盘就用传统json来和前端交互
2、读了mybatis最流行分页插件的官方帮助文档,明天有空的话去试试分页吧
3、做好了复盘评审用的PPT
二、明天计划的事情
1、完善工具类
2、学习分页的原理和分页插件
三、遇到的问题
暂无
四、收获
比较全面的了解了json数据格式的使用
Java任务已经完成
http://task.ptteng.com/zentao/project-task-488-unclosed.htm
评论