yxhxj2006

常用链接

统计

最新评论

Java中Cookie的使用

1、Cookie的来历与作用

Cookie是WEB服务器通过浏览器保存在WWW用户端硬盘上的一个文本文件,这个文本文件中包含了文本信息。
文本信息的内容以“名/值”对(key/value)的形式进行存储。
可以让WEB开发者通过程序读写这个文本文件。
XP中保存Cookie的目录是“C://Documents and Settings\用户名\Cookies”
Cookie的作用
解决浏览器用户与Web服务器之间无状态通信。
2Cookie编程

//创建对象
Date date = new Date() ;
Cookie c = new Cookie("lastVisited",date.toString()) ;
//设定有效时间  以s为单位
c.setMaxAge(60) ;
//设置Cookie路径和域名
c.setPath("/") ;
c.setDomain(".zl.org") ;  //域名要以“.”开头
//发送Cookie文件
response.addCookie(c) ;
//读取Cookie
Cookie cookies[] = request.getCookies() ;
Cookie c1 = null ;
if(cookies != null){
    for(int i=0;i<cookies.length;i++){
       c1 = cookies[i] ;
       out.println("cookie name : " + c1.getName() + "   ") ;
       out.println("cookie value :" + c1.getValue() + "<br>");
    }
}
//修改Cookie
Cookie cookies[] = request.getCookies() ;
Cookie c = null ;
for(int i=0;i<cookies.length;i++){
   c = cookies[i] ;
   if(c.getName().equals("lastVisited")){
      c.setValue("2010-04-3-28") ;
      c.setMaxAge(60*60*12) ;
      response.addCookie(c) ;     //修改后,要更新到浏览器中    
   }
}

//删除Cookie,(将Cookie的有效时间设为0)
Cookie cookies[] = request.getCookies() ;
Cookie c = null ;
for(int i=0;i<cookies.length;i++){
   c = cookies[i] ;
   if(c.getName().equals("lastVisited")){
      c.setMaxAge(0);
      response.addCookie(c) ;
   }
}
 
4、使用Cookie的注意事项

·Cookie的大小和数量是有限制的。
·Cookie在个人硬盘上所保存的文本信息是以明文格式进行保存的,没有任何的加密措施。
·浏览器用户可以设定不使用Cookie。
5、实例:Servlet中的Cookie编程

 cookieInput.html页面
 
SetCookie.java
 
GetCookie.java
 
 
cookieInput.html页面中的参数提交到SetCookie.java中,由SetCookie.java保存在浏览器的Cookie中,在SerCookie.java中链接到GetCookie.java从而读取刚刚保存的Cookie。

SetCookie.java :
public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
 
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        String username = request.getParameter("username") ;
        //保存Cookie
        if(username !=""){
            Cookie c1 = new Cookie("username",username) ;
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd") ;
            Cookie c2 = new Cookie("lastVisited",sdf.format(new java.util.Date())) ;
            c1.setMaxAge(60*60*60*12*30) ;
            c2.setMaxAge(60*60*60*12*30) ;
            response.addCookie(c1) ;
            response.addCookie(c2) ;
            out.println("Cookie保存成功!");
            out.println("<br><br>") ;
            out.println("<a href=GetCookie02>读取Cookie</a>") ;
        }else{
            response.sendRedirect("../cookieInput.html") ;
        }
       
       
        out.flush();
        out.close();
    }
 
GetCookie.java:
public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
 
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
        out.println("<HTML>");
        out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
        out.println("  <BODY>");
       
        //读取Cookie
        Cookie cookies[] = request.getCookies() ;
        Cookie c = null ;
        if(cookies != null){
            for(int i=0;i<cookies.length;i++){
                c = cookies[i] ;
                if(c.getName().equals("username")){
                    out.println("用户名: "+c.getValue());
                    out.println("<br>");
                }
                if(c.getName().equals("lastVisited")){
                    out.println("上次登录的时间: "+c.getValue());
                }
            }
        }else{
            out.println("No cookie !");
        }
       
        out.println("  </BODY>");
        out.println("</HTML>");
        out.flush();
        out.close();
    }

posted on 2013-11-25 22:15 奋斗成就男人 阅读(169) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: