JSP(页面)(javaservlet pages)(cookie)

Cookie的用途:服务器可以从下次请求中,通过Cookie拿到上一次请求保存到Cookie的数据。

服务器使用Cookie来跟踪客户端状态。服务器就是从当次请求中通过Cookie拿到

上次请求保存到Cookie中的数据来查看客户端状态的。

 

保存购物车。购物车中的商品不能使用request对象保存,因为一个请求对应一个request

对象,而购物车它是一个用户(浏览器)向服                                                                                                                                                                                    务器发送的多次请求,所以可以利用下次请求

通过Cookie拿到上次请求保存到Cookie中的数据,来使用Cookie再次保存,以此来添加

购物车。

显示上次登录名。多次登录也是一个用户(浏览器)向服务器发送多次请求,所以也可以利用

下次请求通过Cookie拿到上次请求保存到Cookie中的用户名,来获取上次的登录用户名。

特点:

以上可知Cookie是保存在浏览器上的,且是同一(相同)浏览器多次请求服务器来操作Cookie

以获得上次请求保存在Cookie中的数据的,所以Cookie是不能跨浏览器来操作的。

而且正因为Cookie是保存在浏览器中的,所以它相对不安全。

3>JavaWeb中使用Cookie

原始方式:

>服务器使用response发送Set-Cookie响应头向浏览器保存Cookie

response.addHeader("Set-Cookie","aaa=AAA");(多值)

aaa=AAA :aaa是名称,等号后面是内容(只能这么写)

>服务器使用request获取Cookie请求头,来获取当次请求发送的保存了上次请求

数据的Cookie。

Enumeration <String>  |  request.getHeaders("Cookie");(多值)

快捷方式:

>使用response.addCookie()方法向浏览器响应保存Cookie。

>使用request.getCookies()方法获取当次请求发送的保存了上次请求数据的Cookie

4>Cookie的生命周期

Cookie除了name和value属性外,还有一个maxAge:即Cookie的最大生命,

即Cookie可保存的最大时长,以秒为单位。

1、maxAge>0:浏览器会把Cookie保存在客户机硬盘上,有效时长由maxAge的值决定。

如,cookie.setMaxAge(60)表示Cookie会被浏览器保存在硬盘上60秒

2、maxAge<0:Cookie只在浏览器的运行内存中存在,当浏览器关闭,浏览器进程结束

内存销毁时,同时Cookie被销毁。(浏览器关闭时所有的相同浏览器关闭也就是如果你开了

三个谷歌浏览器,必须三个全部关掉才算,本质上这个三个都是窗口关了只能算是关了一个

窗口)

   如,cookie.setMaxAge(-1)表示浏览器关闭则Cookie销毁。

3、maxAge=0:浏览器会马上删除这个Cookie

    如,cookie.setMaxAge(0)浏览器则会立刻销毁此Cookie。


注意:当没有设置Cookie的maxAge属性时默认是-1,Cookie默认只在浏览器内存
中存活,即浏览器关闭,Cookie销毁。

5>Cookie的路径(path属性):

Cookie的path属性并不是设置Cookie在客户端的保存路径,

而是当浏览器访问服务器

的某个资源路径时,决定是否需要给服务器归还Cookie

当浏览器访问请求服务器

的某个资源路径时,如果次访问路径包含这个Cookie的path属性设置的路径部分时

那么就向服务器归还这个Cookie

Cookie的path属性由服务器在创建Cookie时设置。

如:aCookie.setPath("/JspTest1/"); 
    bCookie.setPath("/JspTest1/jsps/");
    cCookie.setPath("/JspTest1/jsps/cookies/");

>浏览器访问请求:/JspTest1/index.jsp,此访问路径包含了aCookie

的路径,所以向服务器归还aCookie

>浏览器访问请求:/JspTest1/jsps/a.jsp,此访问路径把aCookie和

bCookie的路径都包含所以向服务器归还

aCookie和bCookie

>浏览器访问请求:/JspTest1/jsps/cookies/b.jsp,此访问路径把
 aCookie和bCookie和cCookie的路径都包含,所以向服务器归还:
 aCookie、bCookie、 cCookie

意思就是说只要包含访问请求路径含有setpath中参数就返回调用者

如aCookie的的路径(setpath),访问路径包含则归还aCookie

创建的Cookie没有设置path属性时,此Cookie的默认路径就是,当前请求

访问路径的父路径。如,当请求访问/JspTest1/cookies2/c.jsp,服务器创建并向浏览器

响应一个Cookie,那么此Cookie的默认路径就是/JspTest1/cookies2/

6>Cookie的域(domain属性)

Cookie的domain用于指定Cookie的域名,当多个二级域之间共享同一Cookie时使用

例如:在www.baidu.com     
      zhidao.baidu.com     
      news.baidu.com  
      tieba.baidu.com  
      4个域请求之间共享同一Cookie

1>设置此Cookie的domain为:cookie。setDomain(“.baidu.com”);

2>必须设置此Cookie的path:cookie.setPath("/");

可在同一应用服务器内共享设置为/的话

因为域名封装了请求的项目路径,所以使用域名请求服务器没有项目名,

也就没有办法给Cookie设置具体的路径,所以必须使用“/”通配所有请求路径,否则多个域名

请求之间无法传递共享同一个Cookie

//创建Cookie

Cookie  ck -

//设置Cookie的域(domain属性)为“.baidu.com”;

ck.setDomain(".baid.com");

//设置Cookie路径(path属性)为“/”

ck.setPath("/");

//向浏览器响应Cookie

response.addCookie(ck);向客户端添加Cookie

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值