Cookie:
- Cookie:饼干,其实就是一份小数据,是服务器给客户端,并且存储在客户端上的一份小数据
- 应用场景:自动登录,浏览记录。
- 为什么有Cookie:http的请求是无状态的,客户端与服务器在通讯的时候,是无状态的,就是客户端在二次访问的时候,服务器根本不知道这个客户端之前有没有访问过,未了更好的交互,用户体验,收集用户习惯。
- Cookie的使用:
- 响应Cookie(发送或添加Cookie)
- 在响应的时候添加cookie
- 在客户端收到的信息里,响应头中多了一个字段:Set-Cookie:aa=bb
- 代码如下:
response.setCharacterEncoding("UTF-8"); response.setHeader("Content-Type","text/html;charset=UTF-8"); Cookie cookie=new Cookie("aa","bb"); response.addCookie(cookie); response.getWriter().write("请求成功");
- 获取Cookie
- 获取客户端带来的cookie:
//客户端的第二次请求会带着Cookie过来 Cookie[] cookies = request.getCookies(); if(cookies!=null){ for (Cookie c:cookies) { System.out.println(c.getName()); System.out.println(c.getValue()); System.out.println(c.getName()+":"+c.getValue()); } }
-
Cookie的分类(有效期):
-
会话Cookie:默认情况下,关闭浏览器,Cookie就会消失;
-
持久Cookie:在一定时间内都有效,并且会保存在客户端上;cookie.setMaxAge(10);
//发送多个Cookie Cookie cookie1=new Cookie("sex","male"); response.addCookie(cookie1); Cookie cookie2=new Cookie("age","18"); response.addCookie(cookie2); //cookie的有效期,默认情况下,关闭浏览器Cookie就没有了(没有设置Cookie的有效期) //参数(expiry)以秒计算 //正值:表示Cookie在过这个时间之后,Cookie将会失效 //负值:关闭浏览器,Cookie将会失效 cookie1.setMaxAge(10); //只有访问该域名下的cookie的这个路径才会带cookie cookie1.setPath("/test_servlet02");
-
-
Cookie的安全问题:
-
由于Cookie会保存在客户端上,所以有安全隐患,
-
cookie的大小和个数有限,为解决这些问题出现了Session
-
- 获取客户端带来的cookie:
- 响应Cookie(发送或添加Cookie)
-
* Session
也是基于cookie的一种会话技术, 数据存放存放在服务器端
会在cookie里面添加一个字段 JSESSIONID . 是tomcat服务器生成。setAttribute 存数据
getAttribute 取数据removeAttribute 移除数据
getSessionId(); 获取会话id
invalidate() 强制让会话失效。
* 创建和销毁
,调用request.getSesion创建
服务器关闭 , 会话超时(30分)
setAttribute 存放的值, 在浏览器关闭后,还有没有。 有!,就算客户端把电脑砸了也还有。