会话
-
一个网站怎么证明用户访问过
-
服务端给客户端一个信件,客户端下次访问服务端带上信件就可以:cookie
-
服务器登记,下次访问匹配:session
-
-
保存会话的技术
-
cookie
-
客户端技术(响应、请求)
-
-
session
-
服务器技术,利用这个技术,可以保存用户的会话信息,可以把信息或数据保存在session中
-
-
-
Cookie
-
从请求中获得cookie信息
-
服务器响应给客户端
-
1 req.setCharacterEncoding("utf-8"); 2 resp.setContentType("text/html;charset=UTF-8"); 3 resp.setCharacterEncoding("utf-8"); 4 5 PrintWriter out = resp.getWriter(); 6 7 8 Cookie[] cookies = req.getCookies(); 9 10 //判断cookie是否为空 11 if (cookies != null) { 12 out.write("你上一次访问的时间是:"); 13 for (int i = 0; i < cookies.length; i++) { 14 Cookie cookie = cookies[i]; 15 //获取名字 16 if(cookie.getName().equals("lastLoginTime")){ 17 //获取值 18 long l = Long.parseLong(cookie.getValue()); 19 Date date = new Date(l); 20 out.write(date.toLocaleString()); 21 } 22 23 } 24 } else { 25 out.write("这是你第一次访问本站"); 26 } 27 28 Cookie cookie=new Cookie("lastLoginTime", ""+System.currentTimeMillis()); 29 //给cookie设置有效期 30 cookie.setMaxAge(24*60*60); 31 32 resp.addCookie(cookie);
-
-
一般会保存在本地的用户目录下的appdata
-
一个网站的cookie是否存在上限
- 一个cookie只能保存一个信息
- 一个web站点可以给浏览器发送多个cookie,最多存放20个
- cookie有大小限制:4kb
- 浏览器上限:300个cookie
-
删除cookie
- 不设置有效期,关闭浏览器自动小时
- 设置有效期为0
-
-
Session
-
什么是Session
-
-
-
-
服务器会给每一个用户(浏览器)创建一个Session对象
-
-
-
-
-
一个session独占一个浏览器,浏览器不关闭,session就还在
-
用户登录以后整个网站都可以访问
-
-
Session和Cookie区别
- Cookie:把用户的数据写给用户的浏览器,浏览器保存;可以保存多个
- Session:把用户的数据写到用户独占的Session中,服务器保存;保存重要信息;由服务器创建
-
使用场景
- 保存一个登录用户的信息
- 购物车信息
- 在整个网站中经常使用到的数据
-
1 req.setCharacterEncoding("utf-8"); 2 resp.setCharacterEncoding("utf-8"); 3 resp.setContentType("text/html;charset=utf-8"); 4 5 //得到Session 6 HttpSession session = req.getSession(); 7 //给Session存数据 8 session.setAttribute("name", new Person("Cra2iTeT",1)); 9 //获取Session的id 10 String id = session.getId(); 11 //判断是否是新创建的 12 if (session.isNew()) { 13 resp.getWriter().write("session创建成功,ID:" + id); 14 }else { 15 resp.getWriter().write("session已经存在,ID:" + id); 16 }
1 req.setCharacterEncoding("utf-8"); 2 resp.setCharacterEncoding("utf-8"); 3 resp.setContentType("text/html;charset=utf-8"); 4 5 //得到Session 6 HttpSession session = req.getSession(); 7 //给Session存数据 8 Person person = (Person) session.getAttribute("name"); 9 System.out.println(person.toString());
1 HttpSession session = req.getSession(); 2 session.removeAttribute("name"); 3 //手动注销 4 session.invalidate();
1 <!-- 设置session的默认注销时间--> 2 <session-config> 3 <!-- 十五分钟后Session自动失效--> 4 <session-timeout>15</session-timeout> 5 </session-config>