servlet中cookie和session源码浅析

servlet中cookie和session源码浅析

一、简介

http协议是无状态的,在web会话中,为了记录会话状态信息,将使用cookie和session,这里基于源码进行介绍。

二、cookie

cookie是servlet发给客户端浏览器的小量信息,并由浏览器保存,后续浏览器请求将会带上前面保存的信息。cookie通常用于标识用户身份。一个cookie有名称、值和其它可选属性(如备注、路径、域名标识、最大存活时间、版本号等)。

2.1 cookie特点
1、浏览器通常对每个web服务支持20个cookie,并且浏览器总共支持300个cookie(换句话说,极端情况,浏览器最多支持15个web服务的cookie);
2、一个cookie通常限制4KB;
3、使用HttpServletResponse.addCookie方法添加cookie;
4、使用HttpServletRequest.getCookies方法获取cookie;
5、不同路径下cookie可以有相同名称;
6、cookie返回浏览器时保存在响应header中。
2.2 cookie源码

Cookie源码如下:

package javax.servlet.http;
import java.io.Serializable;
import java.text.MessageFormat;
import java.util.Locale;
import java.util.ResourceBundle;
public class Cookie implements Cloneable, Serializable {
   
    //cookie名称,其中$Name形式为保留字
    private String name;
    //cookie值
    private String value;

    //cookie备注
    private String comment;
	//域名,指定在哪个域名有效
    private String domain;
    //生存时间,单位为秒,0表示立即删除,大于0表示cookie保存指定时间,小于0表示仅在当前浏览器窗口有效,
    //不设置表示同浏览器进程一样的存活时间
    private int maxAge = -1;
    //路径,表示cookie对指定路径及子路径有效,不设置表示浏览器访问所路径都带上cookie,同时服务器任何路径回传都不带cookie信息
    private String path;
    //是否使用SSL,是则只有在安全方式访问发送cookie,否则可以以非安全方式访问发送
    private boolean secure;
    //版本,等于1表示RFC2109++类型
    private int version = 0;
    //是否http只读,即只能http或https访问传输,如javascript等不能访问
    private boolean isHttpOnly = false;

    //cookie构造器,填充名称和值,其中名称不能是保留字,忽略大小写,
    //保留字有Comment、Discard、Domain、Expires、Max-Age、Path、Secure、Version、以$开头
    public Cookie(String name, String value) {
   }

    //各属性值的get和set方法,略过
    ...
}
2.3 cookie示例

cookie读取与添加示例如下:

package session;

import com.alibaba.fastjson
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值