美文网首页
4.0.1 Session 会话, Cookie

4.0.1 Session 会话, Cookie

作者: RockyLuo_290f | 来源:发表于2019-02-26 04:49 被阅读0次

Cookie

在HTTP中表示服务器送给客户端浏览器的文件,由 键, 值 对组成,在客户端浏览器中保存。
当下一次再访问时把Cookie再送还给服务器。

Cookie规范

一个Cookie大致为4KB, 或者大到8KB,可保存300~500个cookie,不会占用较多内存
不同浏览器之间不能共享cookie

Cookie的作用

用于服务器通过cookie来识别客户端

Cookie的SetPath设置cookie的路径,这个路径直接决定服务器的请求是否会从浏览器中加载某些cookie。
首先默认情况如果不设置cookie的path,默认是当前路径的上一层
例如 请求路径为/cookie_demo/servlet/login, cookie的路径:/cookie_demo/servlet
如果我们设置path,当前访问路径比cookie路径的范围更精确(访问路径在cookie路径基础上比cookie范围小),cookie就会加载到request对象中去。

cookie中存储中文会报错,需要转码

String name = "张三";
name = URLEncoder.encode(name);
Cookie cookie = new Cookie("username", name);

 //使用时再解码
Cookie[] cookies = req.getCookies();
for(Cookie cookie ; cookies){
  String name = cookie.getName();
  if("username".equals(name)){
    String value = cookie.getValue();
    value = URLDecoder.decode(value);
  }
}

session 是域对象之一,范围在一个会话范围内有效,session的范围大于request,可在一个会话中多个请求之间共享数据

域对象作用 范围:
ServeletContext(服务器生命周期) > HttpSession(浏览器打开,关闭) > HttpServletRequest(一次请求)

session对象是存在服务器端的,
浏览器端存的是sessionid
session属性在浏览器不关闭的情况下,始终存在。

Capture.PNG

Session失效

注销session

session.invalid();

在web.xml中设置session失效时间, 超时

例如银行,设置5分钟没操作,自动session失效

<session-config>
  //失效时间1分钟
  <session-timeout>1</session-timeout>
</session-config>

每当session失效后,服务器就会自动创建一个新的session

cookie被禁用

检验cookie是否被禁用,先存一个数于cookie,后端如果拿不到,就向用户提示打开cookie设置。

相关文章

网友评论

      本文标题:4.0.1 Session 会话, Cookie

      本文链接:https://www.haomeiwen.com/subject/xhgyyqtx.html