ServiceResponse序列化

来源:10-7 SpringMVC拦截器实战-4:解决拦截登录循环

qq_追梦青年_1

2018-03-14

老师,我有几个疑问

  1. ServiceResponse是自己实现了json序列化,二期课程中设置了jsonutil,采用了通用的json序列和反序列的方法来对所有对象进行序列化和反序列化,是吗?

  2. 在拦截器一章,当输出流的格式设置为json时,serviceresponse 为什么还要进行一次json序列化?

  3. json序列化和通常讲的Serializable有什么区别?

    http://img.mukewang.com/szimg/5aa89ba50001fbd107170195.jpg

写回答

3回答

Geely

2018-03-17

你好,亲爱的同学,首先要赞一下聪聪 特别棒,良好的思考习惯!

  1. 在一期的时候,是通过springmvc的jackson插件来控制的,在springmvc的配置文件中可以看到

    //img.mukewang.com/szimg/5aacf1890001230e10760216.jpg

  2. 因为通过拦截器拦截上之后,就不再走mappingjackson啦,需要自己来序列化,达到同样的效果,这样对于前端来说是0感知。前端不必之后咱们后端的数据怎么处理的,和之前的接口定义一致即可。


  3. 都是一个方式,传统的是序列化成字节,业务场景上经常这么说,当然也可以说xml序列化,当然现在用xml的越来越少,因为它占用了更多的字节和数据内容。


@聪聪同学~~~ protostuff扩展的非常好~~



2
1
qq_追梦青年_1
非常感谢!
2018-03-26
共1条回复

聪聪不匆匆

2018-03-14

你好同学,希望我的答案能够对你有帮助。

  • 问题一,ServiceResponse只是一个通用的返回封装,我们在前端调用时,所有的接口都采用这种格式进行返回。但是jsonUtil是将我们需要存储的用户实体进行序列化成json存储在redis当中。读取数据时又将redis当中String类型json进行反序列化成User实体。一个为前端调用返回json.一个为对象转json存储redis

  • 问题三,Serializable是java当中序列化,虽然也称之为序列化,通常使用在java网络传输、流传输当中。将对象写入到临时存储或者是持久存储当中。然后这里的json序列化指的是(将实体对象转换成对应的json字符串)同时存储在redis当中。

    对于问题三补充:老师使用的是将对象序列化成json字符串,还可以通过protostuff将其序列化,获取时再反序列化

  • public String putSeckill(Seckill seckill) {    
    // set Object(Seckill) => 序列化 =》byte[]    
    try{    
    Jedis jedis = jedisPool.getResource();    
    try{    
    String key = "seckill:"+seckill.getSeckillId();    
    byte[] bytes = ProtostuffIOUtil.toByteArray(seckill,schema, LinkedBuffer.allocate(LinkedBuffer.DEFAULT_BUFFER_SIZE));    
    //缓存超时    
    int timeout = 60 * 60;    
    String result = jedis.setex(key.getBytes(),timeout,bytes);    
    return result;    
    }finally {    
    jedis.close();    
    }    
    }catch (Exception e){    
    logger.error(e.getMessage(),e);    
    }    
    return null;    
    }

第二个问题,我的理解是 serviceresponse 只是返回json字符串  拦截器是将http请求的response返回类型设置成json 呃(⊙o⊙)…  我也有点乱 ,此处应该@Geely 嘿嘿嘿

3
4
about_blank
回复
qq_追梦青年_1
假如A B C 三个人同时开发不同的接口返回不同的格式前端岂不要来回解析
2018-03-19
共4条回复

李兴杰

2018-03-14

好问题,我也想知道

0
0

Java企业级电商项目架构 Tomcat集群与Redis分布式

Tomcat集群+Redis分布式+代码重构+源码原理解析

2685 学习 · 947 问题

查看课程