Cookie

mac2022-06-30  73

1.会话控制 > Http协议 Http协议两个缺陷: 1.HTTP协议是纯文本的 2.HTTP协议是无状态的 服务器不能简单的通过HTTP协议来区分多次请求是否发自同一个用户 虽然通过HTTP协议不能区分不同请求是否来同一用户,但是我们实际生活却有这样的需求。   [1] Cookie > 看电影 - 去电影院看电影时,检票人员是认票不认人。 - 电影院的运作流程 1.印刷电影票 2.将票发给看电影 3.看电影的拿着票来看电影 4.检票   > 简介 - 我们想可以通过服务器向浏览器发送一个类似票的东西, 浏览器在访问服务器时就可以拿着票来访问 服务器就可以根据这个票来识别不同的用户。   - 服务器发送给浏览器的这张票我们称为Cookie。 - Cookie的使用流程: 1.服务器先要创建Cookie 2.将Cookie发送给浏览器 3.浏览器带着Cookie访问服务器 4.服务器检查浏览器的Cookie   - Cookie实际上就是一个头 服务器通过响应头将Cookie发送给浏览器, 浏览器通过请求头将Cookie发回给服务器, 服务器可以根据不同的Cookie来识别不同的用户。   > 使用Cookie - Cookie cookie = new Cookie(name,value); - response.addCookie(cookie); 注意:可以发送多个cookie! Cookie cookie1=new Cookie("key1", "zhang"); Cookie cookie2=new Cookie("key2", "li"); response.addCookie(cookie1); response.addCookie(cookie2);

  request.getCookies(); 返回的是一个Cookie数组。

- 虽然Cookie是一个键值对结构,但是它并没有给咱们提供一个根据键获取值的方法。 //Cookie的遍历与取值、改值 Cookie [] cookies =request.getCookies(); for (Cookie cookie : cookies) { //for循环遍历 if ("username".equals(cookie.getName())) { //通过getName取值 cookie.setValue("lisi"); //通过setValue改值 response.addCookie(cookie); } }

 

 

- 修改Cookie 一旦Cookie发给浏览器以后,服务器便不能直接修改Cookie, 但是可以通过使用同名Cookie来替换的老Cookie方式来间接的修改  > Cookie的有效时间 - Cookie的默认有效时间为一次会话,当关闭浏览器时,Cookie将失效。 - 通过setMaxAge(秒数)来设置Cookie的有效时间 -//当秒数大于0时,有效时间会设置为相应的秒数 cookie.setMaxAge(30); cookie.setMaxAge(0);

 

- 设置一个长久有效的Cookie cookie.setMaxAge(60*60*24*365*10)   - 在程序中使Cookie立即失效 - 可以使用一个同名的,立即失效的Cookie来替换已有Cookie Cookie cookie1=new Cookie("key1", "zhang"); Cookie cookie2=new Cookie("key2", "li"); cookie1.setMaxAge(0); response.addCookie(cookie1); response.addCookie(cookie2); 在第二次访问时,请求头中 没有cookie1的信息   > Cookie的Path - path指的Cookie的路径() - 所谓的Cookie路径就是指, - Cookie   访问/WebCookie/1.js (在不设置cookie路径 ,访问同一项目的其他页面也会带着Cookie信息)   p - 通过setPath()方法来设置Cookie有效路径 //修改Cookie的有效路径 //Cookie的路径由浏览器解析,所以设置路径时需要加上项目名 cookie.setPath(request.getContextPath()+"/hello"); Cookie cookie1=new Cookie("key1", "zhang"); Cookie cookie2=new Cookie("key2", "li"); cookie1.setMaxAge(0); cookie2.setPath(request.getContextPath()+"/1.jsp"); response.addCookie(cookie1); response.addCookie(cookie2);

 

 

访问1.jsp的页面带cookie信息 index.jsp 的请求不带cookie信息   > 应用: 1.可以用来保持用户的登录状态 2.可以用来记录用户上次输入的用户名 3.广告的推送   > Cookie练习 > 模拟一个taobao的功能,保存用户输入用户名。 > 用户在login.jsp输入用户名和密码 > 请求发送个LoginServlet > LoginServlet收到请求行,检查用户名和密码是否正确。(默认登录成功) 如果正确,则将用户名保存到一个Cookie中,并发送给浏览器 ,重定向到login-success.jsp 如果错误,转发到login.jsp   //Jsp <form action="${pageContext.request.contextPath}/cookie" method="get"> 用户名:<input type="text" name="username" value=${cookie.value}><br> 密码: <input type="password" name="pwd" ><br> <input type="submit" value="登录"> </form> //servlet中 Cookie cookie=new Cookie("username", "zhangsan"); response.addCookie(cookie); String username = request.getParameter("username"); String pwd = request.getParameter("pwd"); if (username.equals(cookie.getValue())) { response.sendRedirect(request.getContextPath()+"/1.jsp"); } }

 只是简单的模仿一下,只是用于记录这个知识点。

   

 

 

转载于:https://www.cnblogs.com/Actexpler-S/p/7359630.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)