Java Web - Cookies使用与共享


cookie 是存储在客户端浏览器下的少量文本型数据,随着页面响应由服务器发送到客户端并保存下来的。cookie 对象的类型是 Cookie。
当浏览器再次向该网站发送请求时,客户端会将 Cookie 中与之相关的信息连同请求信息一起发送,因此在服务器可以再次读取到 Cookie 的值。


1)写入 cookie

cookie 是随着响应由服务端发送到客户端浏览器保存的,通过 response 对象的 addCookie(Cookie cookie) 方法来实现

Cookie c = new Cookie("user", username);    //创建 Cookie 保存用户名
c.setMaxAge(300);                           //300 秒后 Cookie 过期
response.addCookie(c);          //向响应添加 Cookie,发送到客户端

方 法 说 明

void setMaxAge(int expiry)      设置 Cookie 的有效期,以秒为单位,默认值为值为-1 ,表示保存到浏览器关闭
String getMaxAge()              获取 Cookie 的有效时间,以秒为单位
void setValue(String value)  在 Cookie 创建后,对 Cookie 进行赋值
String getName()                获取 Cookie 的名称
String getValue()               获取 Cookie 的值
cookie.setDomain("/localhost");     设置作用域名

2) 读取 cookie

客户端保存的 cookie 会随着请求发送回相应的服务器域,使用 request.getCookies() 返回 cookie 数组

<%
    String user = null;
    request.setCharacterEncoding("gbk");
    Cookie[] cookies = request.getCookies();
    if(cookies != null){
        for(Cookie c : cookies){
            if(c.getName().equals("user")){
                user = c.getValue();
                out.println( "<h1>欢迎" + user + "进入本页面.</h1>");
    }}}
%>

cookie

3) 跨域

正常的 cookie 只能在一个应用中共享,即只能由创建它的应用获得

(1) 同一应用服务器内共享

1)  cookie.setPath("/"): 于ac 下面设置cookie :
    此处是相对于应用服务器存放应用的文件夹的根目录而言的 (比如 tomcat 下面的 webapp),因此 cookie.setPath("/"); 之后,可以在 webapp 文件夹下的所有应用共享 cookie

2)  cookie.setPath("/b/"): 于ac 下面设置 cookie :
    此时应用设置的 cookie 只能在b 应用下的获得,ac也不可以。 

3)  cookie.setPath("/b/jsp"):于ac设置
    只有在b/jsp 下面可以获得 cookie

(2) 跨域共享 cookie 的方法

1)  设置 cookie.setDomain(".b.com"); 
    A 机所在的域:home.ac.com,A 有应用 ac 
    B 机所在的域:b.com,B 有应用b 
    这样在ac、b 下面都可以取到 cookie

注:输入 url 访问b 的时候,必须输入域名才能解析。比如说在 A 机输入:http://jsp.b.com:8080/b, 可以获取 ac 在客户端设置的 cookie,而 B 机访问本机:http://localhost:8080/b 则不可以获得 cookie。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值