Servlet(7),状态管理Cookie,定义,添加,读取Cookie,Cookie生存时间,编码问题,路径问题,Cookie的限制

# 1.状态管理


## (1)什么是状态管理?
将浏览器与web服务器之间多次交互当作一个整体来处理,并且将
多次交互所涉及的数据(即状态)保存下来。

## (2)如何进行状态管理?
方式一: 将状态保存在浏览器端(Cookie)。

方式二: 将状态保存在服务器端(Session)。

## (3)Cookie


### 1)什么是Cookie?
服务器临时存放在浏览器端的少量数据,用于跟踪用户的状态。

    注:
        当浏览器第一次访问服务器时,服务器可以将少量数据
    以set-cookie消息头的形式发送给浏览器,浏览器会将这些
    数据临时保存下来。
        当浏览器再次访问服务器时,会将这些数据以cookie消息头
    的形式发送给服务器。

### 2)添加Cookie

Cookie c = new Cookie(String name,String value);
	response.addCookie(c);

### 3)读取Cookie


	Cookie[] request.getCookies();
	注:
		该方法有可能返回null。
	String cookie.getName();
	String cookie.getValue();

### 4)Cookie的生存时间
默认情况下,浏览器会将cookie保存在内存里面,浏览器如果关闭,则
cookie会被删除。可以调用setMaxAge方法来设置cookie的生存时间。

cookie.setMaxAge(int seconds);

注: 单位是秒。seconds > 0: 浏览器会将cookie保存在硬盘上。超过指定的时间,cookie会被删除(失效)。seconds < 0: 默认情况(将cookie保存在内存里面)seconds = 0: 删除cookie。比如,要删除一个名称为"username"的cookie:

Cookie c = new Cookie("username","");
				c.setMaxAge(0);
				response.addCookie(c);  

### 5)cookie的编码问题


a.什么是cookie的编码问题?
    cookie只能存放合法的ascii字符,对于非ascii字符(比如中文)
    需要转换成对应的ascii字符的形式。

b.如何解决? 
    添加cookie时,使用encode方法对要添加的字符串进行编码,
    读取cookie时,使用decode方法来解码。

String URLEncoder.encode(String str,String charset);
    String URLDecoder.decode(String str,String charset);

建议:
        在添加cookie时,不管是否是ascii字符,
        统一使用encode方法来编码。

### 6)Cookie的路径问题


a.什么是cookie的路径问题?

    浏览器在访问服务器时,会比较请求路径是否与cookie的路径匹配,只有匹配条件的cookie才会被发送出去。

b.cookie默认路径
    cookie的默认路径等于添加该cookie的web组件的路径。 比如,/servlet07/biz01/addCookie.jsp添加了一个cookie,则该cookie      默认路径就是"/servlet07/biz01"

c.匹配规则

    请求路径要么等于cookie的路径,要么是cookie的子路径,该cookie才会被发送。 比如,cookie的路径是"/servlet07/biz01",则:
    请求地址是/servlet07/findCookie1.jsp,则cookie不会被发送;请求地址是/servlet07/biz01/findCookie2.jsp,会发送;请求地址        是/servlet07/biz01/sub/findCookie3.jsp,会发送。

 

d.如何修改cookie的路径?

cookie.setPath(String path);

 

### 7)Cookie的限制

a.Cookie可以被用户禁止。
    
    注:可以提示用户不要将cookie禁止。
        可以通过navigator.cookieEnabled来获得浏览器是否禁止了cookie。

b.Cookie只能存放少量的数据。

    大约4k左右。

c.Cookie数量也有限制。

    几百个左右。

d.Cookie只能存放字符串。

e.Cookie不安全。

    敏感数据尽量不要直接以cookie的方式保存。
    如果一定要用,要加密处理。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值