发表于: 2018-04-01 23:13:51

1 414


一、今天完成的事情


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



返回列表 返回列表
评论

    分享到