cookie


总结:1.因为Http是无状态的需要会话技术来区别客户端是谁发送的请求
2.会话技术(响应头是设置cookie的,请求头是携带cookie值的):是从打开一个浏览器直到关闭这个浏览器为止整个过程是一次会话,会话技术就是记录客户端的状态和数据的
3.会话技术分为:Cookie和Session;Cookie(在客户端存储数据,也就是缓存,缓解服务器压力但是不安全):数据存储在客户端本地,减少服务器端存储的压力,不安全,客户端可以清楚Cookie
4.Session(单独在服务器开辟一块内存区域,加重了服务器压力,但是安全):将数据存储在服务器端,安全性相对较好,增加服务器压力
5.创建Cookie(以键值对的形式存数据,不能存中文,关闭浏览器后Cookie消失):Cookie cookie=new Cookie(String CookieName,String CookieValue);
6.Cookie在客户端持久化(Cookie自动向服务器端发送信息,但是服务器端需要去接收不然没有用):cookie.setMaxAge(120(时间:持续2分钟))
如果不设置持久化时间,cookie会存储在浏览器内存中,关闭浏览器,cookie就会销毁(会话级别的cookie),
如果设置了持久化时间,cookie信息会被持久化到浏览器的磁盘文件夹(就是浏览器的安装路径)
7.创建cookie对象:Cookie cookie=new Cookie("name","小明");以键值对的形式存进cookie
设置cookie的持久化时间:cookie.setMaxAge(120);这里的时间单位是秒
8.将cookie发送到客户端:response.addCookie(cookie)
9.第一次请求的时候,请求头是没有cookie的因为cookie得需要服务器取创建,所以第一次的响应头有cookie二请求头 没有cookie
10.第二次请求服务器的时候,因为第一次已经把cookie传给了浏览器所以第二次访问服务器就会携带cookie(因为是 第一次服务器给的)
11.cookie.setPath("/WEB0917");这里个是WEB0917下的资源都携带
cookie.setPath("/");这个是只要访问服务器下的所有资源都携带
cookie.setPath();如果不设置携带路径:当你访问产生改cookie的路径的路径携带
12.删除cookie:因为cookie不能删除只能设置一个持久是0的同名且同路径的cookie代替了并删除原来的cookie
删除cookie:1.创建同名同路径的cookie:1.Cookie cookie=new Cookie("name","张三");
2.cookie.setMaxAge(0);这里设置持久时间是0是马上就清除cookie,而关闭浏览器是完成一次会话,不一样。
3.设置同样的路径:cookie.setPath("/WEB0917") 路径要和原来的cookie一样才能删除. 4.response.addCookie(cookie);这里是调用相应response,把新的cookie发送到客户端,
把原来的cookie代替掉.
13.获取Cookie:通过requset请求获取客户端浏览器携带的cookie值:1.因为cookie携带了大量的值所以统一放到cookie[]集合中,最后通过增强for遍历Cookie[]集合进行取值,
cookie取值:键:cookie.getName();值:cookie.getValue();
1.Cookie[] cookie=request.getCookies();通过request得到cookie对象;2.for(Cookie cookie:cookies){if(cookie.getName.equals("name")){String cookievalue=cookie.getValue()}这里是先通过增强for获取每一个cookie[]集合中的键值,并通过equals方法进行比较取到的键是否是要得到的键值,如果是在通过cookie.getValue()方法
得到值。因为取到的是String所以用字符串接(cookie只能存String类型的字符,不能存中文)。
14.联系:每次访问显示上次访问的时间
1.创建时间对象date: Date date=new Date(); 2.设置日期格式:SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")因为cookie只能传因为字码,不能传中文
3.转换日期格式:String time=sdf.format(date); 4.创建cookie对象:Cookie cookie=new Cookie("lasttime",time);5.把cookie传给浏览器:response.addCookie(cookie);
6. 给cookie设置持久化时间:cookie.setMaxAge(60*10) 7.接收客户端传来的cookie:Cookie[] cookie=request.getCookies();
8.判定cookie值是不是null,也就是判定是否是第一次访问,并制定一个变量接收时间值: String time=null; if(cookie!=null){ for(Cookie c:cookie){if(c.getName().equals("lasttime")){time=c.getValue()}}9.因为要在浏览器输出所以需要解决浏览输出的中文乱码:response.setContextType("text/html;setChar=UTF-8");
10.进行判断time是否是第一次访问:if(time==null){system.out.println("您是第一次访问")}else{system.out.println("您上次访问的时间是:"+time)}
11.if(cookie!=null)一定要进行判断cookie是否是null不然用增强for遍历cookie数组,如果路面是空则会报空指针异常

原文地址:https://www.cnblogs.com/hankai2735/p/11597997.html