JavaWeb学习心得之Cookie

来源:互联网 发布:确认密码 javascript 编辑:程序博客网 时间:2024/06/05 07:56

一、Cookie简介

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


二、Java提供操作Cookie的API

  • Cookie(String name,String value) 构造方法
  • getName()获取Cookie的名称
  • getValue()获取Cookie的值
  • setValue(String value)设置Cookie的值
  • setMaxAge(int expiry)设置Cookie的最大保存时间,即有效期
  • getMaxAge()获取Cookie的有效期
  • setPath(String uri)设置cookie的有效路径
  • getPath()获取Cookie的有效路径
  • setDomain(String pattern)设置Cookie的有效域
  • getDomain()获取Cookie的有效域


三、Cookie范例

使用cookie记录用户上一次访问的时间

import java.io.IOException;import java.io.PrintWriter;import java.util.Date;import javax.servlet.ServletException;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class CookieDemo01 extends HttpServlet{@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setCharacterEncoding("utf-8");response.setHeader("content-type", "text/html;charset=utf-8");PrintWriter pw = response.getWriter(); //获取浏览器访问访问服务器时传递过来的cookie数组Cookie[] cookies = request.getCookies();//如果用户是第一次访问,那么得到的cookies将是nullif(cookies!=null){pw.print("您上次访问的时间是:");for(int i=0;i<cookies.length;i++){Cookie cookie = cookies[i];if(cookie.getName().equals("lastTime")){Long l = Long.valueOf(cookie.getValue());Date date = new Date(l);pw.print(date.toString());}}}else{pw.print("第一次登录");}//用户访问过之后重新设置用户的访问时间,存储到cookie中,然后发送到客户端浏览器Cookie cookie = new Cookie("lastTime",String.valueOf(System.currentTimeMillis()));//将cookie对象添加到response对象中,这样服务器在输出response对象中的内容时就会把cookie也输出到客户端浏览器response.addCookie(cookie);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}}
goole浏览器保存Cookie信息


当浏览器关闭后,Cookie就失效了,如何保持Cookie不失效呢?可以设置Cookie的有效期。

//用户访问过之后重新设置用户的访问时间,存储到cookie中,然后发送到客户端浏览器Cookie cookie = new Cookie("lastTime",String.valueOf(System.currentTimeMillis()));//设置Cookie的有效期为1天cookie.setMaxAge(24*60*60);</span>//将cookie对象添加到response对象中,这样服务器在输出response对象中的内容时就会把cookie也输出到客户端浏览器response.addCookie(cookie);



设置Cookie有效期后,Cookie将会存储在硬盘上。


注意:

  1. 一个Cookie只能标识一种信息,它至少含有一个标识该信息的名称(NAME)和设置值(VALUE)。
  2. 一个WEB站点可以给一个WEB浏览器发送多个Cookie,一个WEB浏览器也可以存储多个WEB站点提供的Cookie。
  3. 浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB。
  4. 如果创建了一个cookie,并将他发送到浏览器,默认情况下它是一个会话级别的cookie(即存储在浏览器的内存中),用户退出浏览器之后即被删除。若希望浏览器将该cookie存储在磁盘上,则需要使用maxAge,并给出一个以秒为单位的时间。将最大时效设为0则是命令浏览器删除该cookie。
删除Cookie

        //创建一个名字为lastAccessTime的cookie        Cookie cookie = new Cookie("lastAccessTime", System.currentTimeMillis()+"");        //将cookie的有效期设置为0,命令浏览器删除该cookie        cookie.setMaxAge(0);        response.addCookie(cookie);

Cookie存储中文

//要想在Cookie中存储中文,必须先进行转码        Cookie cookie = new Cookie("username", URLEncoder.encode("韩信","utf-8"));        response.addCookie(cookie);        //要获取Cookie中的中文,必须先解码        URLEncoder.encode(String.valueOf(request.getCookies()[0]),"utf-8");



原创粉丝点击