Cookie的使用
Posted 晓锋残月
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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(默认存在浏览器的内存中)。单位是秒。
0:删除。路径要保持一致,否则可能删错人。
正数:缓存(持久化到磁盘上)的时间
- void setPath(String uri) 指定客户端应该返回 cookie 的路径。
- String getPath() 返回浏览器将此 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的简单总结,如果有错误,请提出,谢谢。以上是关于Cookie的使用的主要内容,如果未能解决你的问题,请参考以下文章