cookie和session的区别是什么

Cookie Session
存储位置 客户端 服务器
存储容量 数据<=4k
一个站点最多保存20个cookie
没有上限
存储方式 ASCII字符串 任何类型
隐私策略 存在客户端不安全 在服务器,不存在信息泄露
生命周期 可以设置长期有效 Session不能长期有效
跨域支持 支持 不支持

cookie和session的使用场景

敏感数据,存session,因为cookie不安全
普通数据:优先存放在cookie,可以减少服务器资源的占用

Session的工作原理

session依赖于cookie
当客户端首次访问服务器时,服务器会为其创建一个session对象,该对象具有一个唯一标识SESSIONID,并且在响应阶段,服务器会创建一个cookie,并将SESSIONID存入其中
客户端对象通过响应的cookie而持有SESSIONID,所以当它再次访问服务器时,会通过cookie携带这个SESSIONID。服务器获取到这个SESSIONID后,就可以找到与之对应的session对象,从而从该session中获取该客户端的状态。

怎么设计调用接口时要记录日志

可以定义一个记录日志的组件,并通过AOP将其织入到这个接口中。这种方式对接口无需做任何改造。业务代码中也无需增加任何调用的逻辑,完美的消除了记录日志和业务代码的耦合度。

Java接收前端传入的JSON

https://www.jianshu.com/p/5258607f0f88
1. 以RequestParam接收

  1. @Autowired
  2. private AccomodationService accomodationService;
  3. @RequestMapping(value = "/update")
  4. @ResponseBody
  5. public String updateAttr(@RequestParam ("id") int id) {
  6. int res=accomodationService.deleteData(id);
  7. return "success";
  8. }
  1. 以实体类方式接收

    1. @Autowired
    2. private AccomodationService accomodationService;
    3. @RequestMapping(value = "/add")
    4. @ResponseBody
    5. public String addObj(@RequestBody Accomodation accomodation) {
    6. this.accomodationService.insert(accomodation);
    7. return "success";
    8. }
  2. 以Map接收 ```java @Autowired private AccomodationService accomodationService;

@RequestMapping(value = “/update”) @ResponseBody public String updateAttr(@RequestBody Map map) { if(map.containsKey(“id”){ Integer id = Integer.parseInt(map.get(“id”)); } if(map.containsKey(“name”){ String objname = map.get(“name”).toString(); } // 操作 … return “success”; }

  1. 4. List接收
  2. ```java
  3. @Autowired
  4. private AccomodationService accomodationService;
  5. @RequestMapping(value = "/update")
  6. @ResponseBody
  7. public String updateAttr(@RequestBody List<Accomodation> list) {
  8. for(Accomodation accomodation:list){
  9. System.out.println(accomodation.toString());
  10. }
  11. return "success";
  12. }