欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Jsp&Servlet之Cookie

程序员文章站 2022-05-21 13:54:24
...
声明:此篇文章为我从网上下载的doc文档里面的一部分内容,具体作者不知。
 
 
Cookie 简介: Cookie 是服务器保存在客户端上的一组数据。例如,一些登陆网站时会提示是否保存密码,或是选择登陆有效期(浏览器进程、一天、一个月等等),这些都可以使用 Cookie 来实现。
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>

 

Cookie
javax.servlet.http.Cookie
构造方法
Cookie(String name,String value)
服务器客户端设置 cookie
addCookie(Cookie cookie)

 

response 调用, 可反复使用该方法设置多个 Cookie
服务器客户端取回之前保留在客户端上的 cookie
Cookie[] getCookies()

 

request 调用
设置 cookie 在本地留存的时间
setMaxAge (int expiry)

 

cookie 对象调用

 

 

l 示例:设置 Cookie
cookie01.jsp à 服务器响应客户的请求时,设置 cookie 到客户端:
² 先准备好 cookie 对象
然后利用 response.addCookie(Cookie cookie) 进行设置

<%    
          //构造Cookie对象,构造方法:Cookie(String name,String value)
          Cookie c1= new Cookie("name","Jerry");
          Cookie c2= new Cookie("password","1234");
          Cookie c3= new Cookie("access_time",new Date().toString());
            
          //将Cookie设置给客户端
          //服务器向客户端传递数据,使用response对象
          //方法:reponse.addCookie(Cookie cookie)
            
          response.addCookie(c1);
          response.addCookie(c2);
          response.addCookie(c3);
%>
 
【注】浏览器窗口中看不到 Cookie 的信息

 

Cookie02.jsp à 如果需要,服务器可以从客户端取回 cookie ,这是从客户端传数据到服务器,故要使用 request 的方法: Cookie[] request.getCookies()
² 利用 request.getCookies() 取得 cookie 数组
遍历数组,取得其中每一个 cookie
<%
          //Cookie[] request.getCookies()方法
          Cookie[] cs = request.getCookies();
            
          for(int i=0;i<cs.length;i++){            
            Cookie tmp = cs[i];    
            //每一个Cookie由 name--value构成
            //可以使用 String getName() 和 String getValue() 获得各成分的值
                    
        %>    
            
          <h1> <%= tmp.getName() %> <%=tmp.getValue() %> </h1>
        <%    
          }        
            
          //JSESSIONID ACCE027387AADBD63525E4446F1DFD83是服务器自动设置的
          //代表这个客户端在服务器上的一个唯一编号
%>
 
【注】:每一个 cookie 都是由 name – value 构成(由构造方法可知), Cookie 类提供了如下 2 个方法获取 cookie name value 的值:
String getName()

 

String getValue()

 

l 设置 Cookie 的保存时间
² 默认情况 下: cookie 是仅在浏览器进程中有效。
(在一个窗口中先运行 cookie01.jsp 实现设置 cookie ,然后仍然在这个窗口中运行 cookie02.jsp 取回 cookie 并显示 是可以实现。但,如果在另外的浏览器窗口中直接运行 cookie02.jsp ,则无法再取回之前设置的 cookie 了)

 

² 如果希望 cookie 能在本地留存一段时间,使得在一段时间之内都可以取回 cookie ,则可以利用 Cookie 类的 setMaxAge(int expiry) 方法, expiry 表多少秒后 cookie 过期。

 

修改 cookie01.jsp cookie03.jsp ,增加 cookie 留存时间的设置,仍然使用 cookie02.jsp 取回 cookie
<h1>利用Cookie类的setMaxAge(int expiry)可是设置cookie在本地计算机上留存一段时间,单位是秒</h1>

    <%
              //构造Cookie对象,构造方法:Cookie(String name,String value)
              Cookie c1= new Cookie("name","Jerry");
              Cookie c2=new Cookie("password","1234");
              Cookie c3=new Cookie("access_time",new Date().toString());
                
              //设置留存时间30秒
              c1.setMaxAge(30);
              c2.setMaxAge(30);
              c3.setMaxAge(30);
                
              //将Cookie设置给客户端
              //服务器向客户端传递数据,使用response对象
              //方法:reponse.addCookie(Cookie cookie)
                
              response.addCookie(c1);
              response.addCookie(c2);
              response.addCookie(c3);
    %>
 
则运行 cookie03.jsp 完成设置 cookie 后,即使另开一个浏览器窗口,直接运行 cookie02.jsp 仍然可以取回 cookie 但时限到了之后 cookie 还是会失效。
但是,服务器自动设置的 JSESSIONID 还在。

 

 

我的备注:一个 servlet/jsp 设置的路径能够被同一路径或子路径下的 servlet/jsp 访问到,其它路径不能访问到。

Jsp&Servlet之Cookie
            
    
    博客分类: Jsp&Servlet JSPServlet浏览器OfficeAccess 

999 2009-06-09 13:41 发表评论