首页 > 代码库 > Cookie
Cookie
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=http://www.mamicode.com/${cookie.value}>
"password" name="pwd" ><br> <input type="submit" value="http://www.mamicode.com/登录"> </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"); } }
只是简单的模仿一下,只是用于记录这个知识点。
Cookie
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。