Cookie:
饼干,其实是一根小数据,是服务器给客户端,并且存储在客户端上的一份小数据
应用数据
自动登陆,浏览记录。
为什么要有Cookie
http 的请求是无状态的,也就是说,客户端和服务器端的相应和请求是无状态的协议,第二次就不认识了, 服务器根本不知道这个客户端之前有没有来放过,从用户角度来说是为了跟好的用户体验,更好的交互,从公司层面来说是为了收集用户习惯
cookie 的使用
简单使用:响应头里面
1.添加cookie 给客户端:
Cookie cookie = new Cookie("aa", "bb");
response.addCookie(cookie);
1 在相应的时候添加cookie
2 客户端收到的信息里面,响应头中出现了一个字段Set-cookie
2 获取客户端带过来的cookie
cookies = request.getCookies();
if (cookies != null) {
for (Cookie c : cookies) {
String cookiename = c.getName();
String cookievalue = c.getValue();
System.out.println(cookiename + "-----" + cookievalue);
}
}
//2 这个cookie 的有效期,默认情况下,关闭浏览器后,cookie 就没有了,当然这种情况针对设置cookie 额有效期
//expiry 有效的意思,返回以秒为单位的指定的cookie的最大生存时间。
//正值表示在这个数字过后cookie 将会失效,也就是删除
//负值 :关闭浏览器,cookie 就是小,默认值是-1
cookie.setMaxAge(60*60*24*7);
// 赋值新的值
//cookie.setValue(newValue);
//用于指定只有请求了指定的域名,才会带上该cookie
//cookie.setDomain();
//只有访问该域名下的cookieDemo这个路径地址才会带cookie
//cookie.setPath("/CookieDemo");
例子:回显最近访问的时间是什么时候
1 判断账号是否正确
2 正确就获取cookie,得到的cookie 是一个数组,我要要从数组里面找到我们想要的对象
3 如果找到的对象为空,表明是第一次登陆,则添加cookie
4 如果找到的对象不为空,表明不是第一次登陆
例子商品浏览记录
准备工作
1拷贝基础课第一天的html原型到webcontent 里面
2 新建一个jsp文件,叫product_list.jps,然后拷贝原来prouct_list.html ;里面的内容到jsp 里面
拷贝html标签的所有内容,替换所有内容
3 修改product_info.html 里面的手机数码超链接的地址
- 手机数码(current)
4修改首页顶部手机数码跳转的位置是
- 手机数码(current)
jsp里面使用java代码定义全局变量 <%! int a = 99; %> 定义局部变量 <% int b=999; %> 在jsp页面上可以显示a 和b 的值 <%=a %><br> <%=b %><br>
<!-- 只能在jap 里面写java 代码了 --> <% Cookie[] cookies = request.getCookies(); Cookie cookie = cookieutil.findCookie(cookies, "history"); //如果cookie是空,表明没有浏览任何的商品 if (cookie == null) { %> <h2>您还没有浏览任何商品!</h2> <% } else { //不是空,表明有浏览记录 String[] ids = cookie.getValue().split("#"); for (String id : ids) { %> <li style="width: 150px; height: 216; float: left; margin: 0 8px 0 0; padding: 0 18px 15px; text-align: center;"><img src="products/1/cs1000<%=id %>.jpg" width="130px" height="130px" /> </li> <% } } %> </ul>
清除浏览记录 就是请吃cookie
删除cookie 是没有delete 方法的,设置maxAge 为0 就可以清除
// 演练清除cookie Cookie cookie = new Cookie("history",""); cookie.setMaxAge(0); cookie.setPath("/Cookie02"); response.addCookie(cookie); response.sendRedirect("product_list.jsp");
cookie 总结
1 服务器给客户端发送过来一小份数据,放在客户端上
2 获取cookie,并添加这个cookie
request.getcookie()
response.addcookie
3 cookie 分类
会话cookie默认情况下,关闭了浏览器,cookie就会消失
持久cookie
在一定的时间内都有效,并且会保存在客户端上
cookie.setMaxAge(0)//设置立即删除
cookie.setMaxAge(100) //100秒
4 cookie 的安全问题由于cookie 会保存在客户端上,所以有安全隐患问题。Cookie 的大小与个数是有限制的浏览器支持每个web 有20哥cookie,总共有300 哥cookie ,每个cookie的大小是4kb,所以为了解决这个问题,----》 引出了session