Jsp&Servlet之Cookie

简介:
声明:此篇文章为我从网上下载的doc文档里面的一部分内容,具体作者不知。
 
 
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 – 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 访问到,其它路径不能访问到。









本文转自 yzzh9 51CTO博客,原文链接:http://blog.51cto.com/java999/163701,如需转载请自行联系原作者
目录
相关文章
|
18天前
|
Java
学校教师管理系统【JSP+Servlet+JavaBean】(Java课设)
学校教师管理系统【JSP+Servlet+JavaBean】(Java课设)
19 1
|
18天前
|
Java
人事管理系统【JSP+Servlet+JavaBean】(Java课设)
人事管理系统【JSP+Servlet+JavaBean】(Java课设)
16 0
|
29天前
|
Java
jsp中使用cookie时报错……
jsp中使用cookie时报错……
8 0
|
29天前
|
Java 数据安全/隐私保护
jsp使用cookie实现记住用户名和密码
jsp使用cookie实现记住用户名和密码
11 0
|
30天前
使用Servlet上传多张图片——前台页面层(Index.jsp)
使用Servlet上传多张图片——前台页面层(Index.jsp)
12 0
|
18天前
|
Java
排课系统【JSP+Servlet+JavaBean】(Java课设)
排课系统【JSP+Servlet+JavaBean】(Java课设)
7 0
|
18天前
|
Java
仓库管理系统【JSP+Servlet+JavaBean】(Java课设)
仓库管理系统【JSP+Servlet+JavaBean】(Java课设)
12 0
|
18天前
|
Java
学校人员管理系统【JSP+Servlet+JavaBean】(Java课设)
学校人员管理系统【JSP+Servlet+JavaBean】(Java课设)
14 0
|
2月前
|
Java
jsp页面中使用jstl标签报错:javax.servlet.jsp.JspTagException
jsp页面中使用jstl标签报错:javax.servlet.jsp.JspTagException
13 0
|
3月前
|
存储 前端开发 Java
JavaWeb:servlet+jsp+mybatis商品管理增删改查
商品管理通常包括增加(添加)、删除、修改和查询商品信息
44 1
JavaWeb:servlet+jsp+mybatis商品管理增删改查