7. Cookie
7.1 Session会话
- 通俗意义上讲,两者的关系。“给你个饼干 我们就产生会话”
- **会话:**用户打开一个浏览器点击了很多链接,访问很多web资源,关闭浏览器,这个过程是会话
- cookie是存在客户端的,session是存在服务端的
- 有状态会话:二次访问同一网站时,网站知道之前访问过,即为有状态会话
7.2 服务器如何知道客户端访问过?
- 服务端给客户端一个信件,客户端下次访问服务端时带着即可,这就是Cookie
- 服务端登记客户端来过,下次访问时进行匹配即可。Session
7.3 保存会话的两种技术
-
Cookie:客户端技术(客户端请求携带,服务器响应发送)
-
Session:服务器技术,保存会话信息。存放数据。
7.4 Cookie
- 从请求中拿到Cookie信息
- 服务器响应给客户端一个或多个Cookie
- 客户端请求服务器时携带Cookie信息
setMaxAge(int expiry) @param expiry 一个整数,指定 cookie 的最大年龄(以秒为单位);如果为负,则表示不存储 cookie;如果为零,则删除 cookie
/*保存上次访问的时间,没有io解决不了的事务*/
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
req.setCharacterEncoding("utf-8");
//服务器给客户端发送cookie
PrintWriter out = resp.getWriter();
//Cookie从请求中获取,但第一次请求时没有Cookie的
Cookie[] cookies = req.getCookies();
if (cookies!=null) {
out.write("上次访问的时间是:");
for (int i = 0; i < cookies.length; i++) {
Cookie cookie = cookies[i];
if (cookie.getName().equals("lastTime")) {
long longtime = Long.parseLong(cookie.getValue());
Date date = new Date(longtime);
out.write(date.toLocaleString());
}
}
}else {
out.write("第一次请求。");
}
//局限性,只能存字符串,存储内容少
Cookie cookie = new Cookie("lastTime",String.valueOf(System.currentTimeMillis()));
//设置Cookie时效,会让此机制不安全(浏览器关闭,cookie还存在)
cookie.setMaxAge(24*60*60);
resp.addCookie(cookie);
}
- Cookie一般会保存在本地用户目录下的appdata文件夹
7.5 一个网站的Cookie上限
- 一个Cookie只能存一个信息
- 一个web站点可以给浏览器发送多个Cookie,最多存放20个Cookie
- Cookie大小为4kb
- 浏览器最多存300个Cookie
7.6 删除Cookie:
-
不设置时效,关闭浏览器自动失效;
-
设置时效为0
方式2:用同名Cookie进行干预
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//删除cookie方式2,设置同名cookie才会替换原来的
Cookie cookie = new Cookie("lastTime",String.valueOf(System.currentTimeMillis()));
//时效为0秒
cookie.setMaxAge(0);
resp.addCookie(cookie);
}
7.7 Cookie传输中中文编码问题
URLEncoder.encode("托尼","utf-8"); //编码
URLDecoder.decode(cookie.getValue(),"utf-8"); //解码
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/123940.html