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接收
@Autowired
private AccomodationService accomodationService;
@RequestMapping(value = "/update")
@ResponseBody
public String updateAttr(@RequestParam ("id") int id) {
int res=accomodationService.deleteData(id);
return "success";
}
以实体类方式接收
@Autowired
private AccomodationService accomodationService;
@RequestMapping(value = "/add")
@ResponseBody
public String addObj(@RequestBody Accomodation accomodation) {
this.accomodationService.insert(accomodation);
return "success";
}
- 以Map接收 ```java @Autowired private AccomodationService accomodationService;
@RequestMapping(value = “/update”)
@ResponseBody
public String updateAttr(@RequestBody Map
4. 以List接收
```java
@Autowired
private AccomodationService accomodationService;
@RequestMapping(value = "/update")
@ResponseBody
public String updateAttr(@RequestBody List<Accomodation> list) {
for(Accomodation accomodation:list){
System.out.println(accomodation.toString());
}
return "success";
}