Cookie的使用

1.Cookie的基本使用

(1)Cookie技术介绍
Cookie是 客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了。

(2)Cookie适用范围
在众多网站的登录中,特别是购物网站,浏览器的商品信息希望得打保存,但是通过其他域对象均无法做到,所以才会是的Cookie技术成为十分必要的一项内容。

(3)Cookie的基本创建
创建一个Servlet,命名为Cookie01
public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		//2获取客户端左后保存时间
		Cookie[] cookies = request.getCookies();//获取客户端中所有Cookie对象
		for (int i = 0; cookies!=null&&i < cookies.length; i++) {
			 if("lastAccessTime".equals(cookies[i].getName())){
				 long l = Long.parseLong(cookies[i].getValue());
				 out.print("你最后访问时间为:"+new Date(l).toLocaleString());
			 }
		}
		
		//1创建Cookie
		Cookie ck=new Cookie("lastAccessTime",System.currentTimeMillis()+"");
		//1.1将Cookie写回到客户端
		response.addCookie(ck);
	}
得到的结果为:
①首次访问Cookie01时

②当再次访问时


这样名为“lastAccessTime的对象变创建成功”


(4)Cookie技术的创建流程

在该过程中,先创建一个Cookie对象,之后便可以在另外一个Servlet中取出该Cookie使用,由上面的图可以清晰看出Cookie是客户端浏览器器保存,所以称其为: 客户端技术


(5)注意问题
①由于会话是指:浏览器打开到浏览器关闭这一过程。因此一旦浏览器关闭,会话结束,Cookie对象删除,达到
在上面的过程中,关闭浏览器,再次打开浏览器,访问Cookie01



更换浏览器访问,也不能得到保存了的Cookie对象,因为Cookie是保存在相应的客户端浏览器中,所以在另外一个浏览器中并没有保存
换一个Firefox查看效果




2.Cookie的介绍

(1)常见API方法
构造方法:
  • public Cookie(String name,String value)         name值在路径不同的情况下,Cookie名可以相同。value值 不能存中文
基本方法:
  • void setValue(String newValue)      在创建 cookie 之后将新值分配给 cookie  
  • String getValue()       返回Cookie的值
  • void setMaxAge(int expiry) /int getMaxAge()      cookie的缓存时间。默认是-1(默认存在浏览器的内存中)。单位是秒
                负数:cookie的数据存在浏览器缓存中
              0:删除。路径要保持一致,否则可能删错人。
              正数:缓存(持久化到磁盘上)的时间
  • void setPath(String uri)     指定客户端应该返回 cookie 的路径。
  •  String getPath()          返回浏览器将此 cookie 返回到的服务器上的路径
比如:http://localhost:8080/day10_cookie/servlet/ck1写的Cookie
path就是:/day10_00_cookie/servlet 看当前创建cookie的资源(servlet)文件路径
客户端在访问服务器另外资源时,根据访问的路径来决定是否带着Cookie到服务器
当前访问的路径如果是以cookie的path开头的路径,浏览器就带。否则不带。
  • response.addCookie(ck);    将Cookie写回到客户端

(2)长时间保存Cookie和销毁Cookie

在上面的方法中setMaxAge设置一个时间值来保存Cookie

public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		//2获取客户端左后保存时间
		Cookie[] cookies = request.getCookies();//获取客户端中所有Cookie对象
		for (int i = 0; cookies!=null&&i < cookies.length; i++) {
			 if("lastAccessTime".equals(cookies[i].getName())){
				 long l = Long.parseLong(cookies[i].getValue());
				 out.print("你最后访问时间为:"+new Date(l).toLocaleString());
			 }
		}
		
		//1创建Cookie
		Cookie ck=new Cookie("lastAccessTime",System.currentTimeMillis()+"");
		//3.1设置Cookie的有效值,单位是秒
		ck.setMaxAge(60*1);
		//3.2设置Cookie的path
		//ck.setPath("/ee10_Cookie");//将Cookie保存的位置为当前目录
		//ck.setPath(request.getContextPath());//等价于上面的内容
		ck.setPath("/");//相当上面
		//1.1将Cookie写回到客户端
		response.addCookie(ck);
	}
得到的结果为:

第一次打开浏览器并访问,得到的结果和前面的一样,但是关闭浏览器后,首次访问

设置的一分钟到期后,关闭浏览器,再次打开,仍然为空白页。


销毁操作

利用SetMaxAge(0)来执行   在Cookie01中写入一下代码

public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		//2获取客户端左后保存时间
		Cookie[] cookies = request.getCookies();//获取客户端中所有Cookie对象
		for (int i = 0; cookies!=null&&i < cookies.length; i++) {
			 if("lastAccessTime".equals(cookies[i].getName())){
				 long l = Long.parseLong(cookies[i].getValue());
				 out.print("你最后访问时间为:"+new Date(l).toLocaleString());
			 }
		}
		
		//1创建Cookie
		Cookie ck=new Cookie("lastAccessTime",System.currentTimeMillis()+"");
		//3.1设置Cookie的有效值,单位是秒
		ck.setMaxAge(60*1);
		//3.2设置Cookie的path
		//ck.setPath("/ee10_Cookie");//将Cookie保存的位置为当前目录
		//ck.setPath(request.getContextPath());//等价于上面的内容
		ck.setPath("/");//相当上面
		//1.1将Cookie写回到客户端
		response.addCookie(ck);
		//4对象销毁
		out.print("<a href='/ee11_Cookie/servlet/Clear'>clear</a>");
	}

在Clear中写一下代码

public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//创建一个Cookie对象
		Cookie ck=new Cookie("lastAccessTime","");
		ck.setPath("/");//要设置被删除Cookie的path,否则可能因找不到而出错
		ck.setMaxAge(0);//相当于立即删除Cookie对象
		response.addCookie(ck);//将Cookie写回到客户端缓存
	}

得到结果:

首次访问:


再次访问


点击“Clear”,本来该Cookie应该有1分钟时间,但是点击Clear后,Cookie消失,因而得到的结果为下面内容




3.总结

以上便是我对于Cookie的简单总结,如果有错误,请提出,谢谢。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值