#反正听见这个饿了很正常的。
会话:
保存会话过程中产生的数据,在 Servlet 技术中,提供了两个用于保存会话数据的对象, 分别是 Cookie 和 HttpSession。
Cookie 通过在客户端记录信息确定用户身份,HttpSession 通过在 服务器端记录信息确定用户身份。
Cookie:response.setContentType("text/html;charset=utf-8");
<1>Cookie 就是一个键和一个值构成的键值对(一键一值),保存客户端小片段数据。
一般来说:
➢ Cookie 大小上限为 4KB;
➢ 一个服务器最多在客户端浏览器上保存 20 个 Cookie;
➢ 一个浏览器最多保存 300 个 Cookie;
但是由于浏览器行业竞争,有些cookie的大小上限被提高,保存数量也大幅提升。不同浏览器之间不共通cookie数据
<2>Cookie 是通过 HTTP 请求头和响应头在客户端和服务器端传递的。
请求头:Cookie: name1=value1;name2=value2;//以分号间隔断开
响应头:set-Cookie:name1=value1;//一个对象一个set-Cookie;
<3>Cookie 覆盖刷新
cookie是保持一键一值,只要键名一致,值是会不断被刷新覆盖的。
<4>Cookie 的生命周期
生命就是 Cookie 在客户端的有效时 间,可以通过“ setMaxAge(int) ”来设置 Cookie 的有效时间。
1.Cookie.setMaxAge(-1);意味着cookie被设置为默认值,这是cookie的生命只存在于浏览器上,浏览器一旦关闭则,该cookie就会消失
2.Cookie.setMaxAge(0);意味着cookie被销毁作废。
3.Cookie.setMaxAge(60*60*24);意味着cookie被储存在所使用的浏览器所在硬盘里,括号内顺序分别是,秒,分钟....以此类推,总之单位为秒
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String lastAccessTime = null; Cookie[] cookies = request.getCookies(); for (int i = 0; cookies != null && i < cookies.length; i++) { if ("lastAccess".equals(cookies[i].getName())) { // 如果 cookie 的名称为 lastAccess,则获取该 cookie 的值 lastAccessTime = cookies[i].getValue(); break; } } response.setContentType("text/html;charaset=utf-8"); if (lastAccessTime == null) { System.out.println("hello"); response.getWriter().print("hello"); } else { System.out.println("the last" + lastAccessTime); response.getWriter().print("the last" + lastAccessTime); } String currentTime = new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss").format(new Date()); Cookie cookie = new Cookie("lastAccess", currentTime); // 创建一个名为 lastAcces cookie.setMaxAge(60); // 设置 Cookie保持时间为1分钟 response.addCookie(cookie); } }
使用response发送Cookie,request获取Cookie
<5>Cookie的路径
1.设置 Cookie 的 path 来指定浏览器在访问什么样的路径时,包含哪一些 Cookie。避免cookie的发送冗余。
2.Cookie的path并不是设置客户端的保存路径,而是由服务器创建 Cookie 时设置,Servlet 的路径作为 Cookie 的默认 path。当浏览器访问服务器某个路径时,需要归还哪些 Cookie 给服务器,这由 Cookie 的 path 决定。浏览器访问服务器的路径,如果包含某个 Cookie 的路径,那么就会归还这个 Cookie。
3.@WebServlet("路径设置")