《cookie&session》
<大纲>
cookie介绍
cookie使用方法
session介绍
session使用方法
session原理
1. cookie介绍
- Cookie是浏览器保存在本地的内容
- 常用来保存登录状态、用户资料等小文本
- 具有时效性,每一次发送请求的时候,有效的Cookie内容会伴随请求发送给Tomcat服务器(同一个服务器)
- cookie默认情况下,随着浏览器的关闭而被销毁
2. cookie常用方法
- 创建cookie对象:Cookie cookie = new Cookie(“名字” , “值”);
- 响应添加cookie信息:response.addCookie(cookie);
- 获取所有的Cookie信息Cookie[] cs = request.getCookies();
- 设置cookie有效期:cookie.setMaxAge(60 * 60 * 24 * 7);(秒为单位)
利用cookie实现用户7天自动登录
-
LoginServlet
System.out.println("用户登录成功"); Cookie cookie = new Cookie("user" , "admin"); cookie.setMaxAge(60 * 60 * 24 * 7); response.addCookie(cookie); response.getWriter().println("login success");
-
IndexServlet
//request.getCookies()用于获取所有的Cookie信息 Cookie[] cs = request.getCookies(); if(cs == null) { response.getWriter().println("user not login"); return; } String user = null; for(Cookie c : cs) { System.out.println(c.getName() + ":" + c.getValue()); if(c.getName().equals("user")) { user = c.getValue(); break; } } if(user == null) { response.getWriter().println("user not login"); }else { response.getWriter().println("user:" + user); }
3. session介绍
- Session用于保存与“浏览器窗口”对应的数据
- 数据存储在Tomcat服务器的内存中,具有时效性
- 通过浏览器cookie的sessionId值提取用户数据
4. session常用方法
-
获取session对象:request.getSession();
-
获取/设置/删除session属性:get|set|removeAttribute();
-
设置session超时时间:setMaxInactiveInterval();
使用session保存用户信息
-
LoginServlet
System.out.println("用户登录成功"); //获取到用户会话Session对象 HttpSession session = request.getSession(); String sessionId = session.getId(); System.out.println(sessionId); session.setAttribute("name", "张三"); request.getRequestDispatcher("/session/index").forward(request, response);
-
IndexServlet
HttpSession session = request.getSession(); String sessionId = session.getId(); System.out.println(sessionId); String name = (String)session.getAttribute("name"); response.setContentType("text/html;charset=utf-8"); response.getWriter().println("这是首页,当前用户为:" + name);
5. session的原理
关键:一个浏览器对应一个session,对应一个sessionId
这个sessionId在每次请求和响应中都会被携带转发
一个sessionId与浏览器唯一对应,映射在服务器存储浏览器的数据地址
通过sessionId找到session,就可以设置、得到session的全部属性值