Jsp&Servlet之Cookie

Cookie 简介: Cookie 是服务器保存在客户端上的一组数据。例如,一些登陆网站时会提示是否保存密码,或是选择登陆有效期(浏览器进程、一天、一个月等等),这些都可以使用 Cookie 来实现。
 
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 �C 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 访问到,其它路径不能访问到。
本文出自 51CTO.COM技术博客

你可能感兴趣的:(职场,休闲,1)