JavaWeb会话技术之Cookie

一 概述

当浏览器第一次给服务器发送请求时会建立一次会话,直到一方断开为止,一次会话一般包含多次请求和响应。主要作用时保证在这次会话的范围内实现数据的共享。

实现的方式有:1.客户端会话:Cookie;2. 服务端会话:Session;

二 会话之客户端会话——Cookie

客户端会话技术——Cookie,主要是将共享数据保存在客户端。

客户端会话的实现:

发送数据:

public class CookieSend extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.创建Cookie对象,绑定数据.
        Cookie c = new Cookie("msg","hello");
        //2.使用HttpServletResponse 参数发送Cookie.
        response.addCookie(c);
    }
}

接收数据:

public class CookieAccept extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       //3. 从HttpServletRequest中获取共享的Cookie
        Cookie[] cookies = request.getCookies();
        //获取数据,遍历Cookies
        if(cs != null){
            for (Cookie cookie : cookies) {
                String name = cookie.getName();
                String value = cookie.getValue();
                System.out.println(name+":"+value);
            }
        }
    }
}

Cookie的实现原理:基于会话中上一次请求的响应header中的set-cookie和这次请求的请求header中的cookie实现。

Cookie的几个重要性质:

1. 一次可以发送多个cookie,我们可以创建多个Cookie对象,并且使用HttpServletResponse调用多次addCookie()方法来发送cookie即可。

2. 默认情况下,当浏览器关闭时,Cookie数据会被销毁,如果我们需要灵活的控制Cookie的保存时间时,可以使用setMaxAge(int seconds)方法进行设置。

   当 seconds为正数时,此时会将Cookie数据持久化到硬盘的文件中进行持久化存储,并且指定存活时间,时间到后,cookie文件会自动失效。

   当 seconds为负数时,此时就是默认情况。

   当 seconds为零时,就会删除cookie。

3. 在tomcat8之前cookie中是不能够存储中文数据,需要将中文数据转码(一般采用URL编码)。而在tomcat8之后,cookie中是支持中文的,但是一些特殊字符是不支持的,所以建议使用URL编码,然后使用URL解码解析。

4. cookie存在两种共享方式:

   (1)假如在一个tomcat服务器中,部署了多个web项目,这时候不同项目的cookie默认是不能共享的,但是我们可以通过setPath(String path) 方法设置cookie的获取范围,默认情况下,设置当前的虚拟目录,如果想要将多个项目的cookie进行共享,我们可以将path设置为“/”;

   (2)我们可以通过setDomain(String domain)方法进行不同tomcat服务器之间的cookie共享,如setDomain(".baidu.com"),那么可以保证一级域名为.baidu.com的tomcat服务器之间可以进行数据共享,即tieba.baidu.com和news.baidu.com中的cookie可以共享。

Cookie的特点和作用:

1. cookie是保存在浏览器客户端中的数据。

2. 浏览器对于单个cookie大小的限制是(4kb)以及对于同一个域名下的总cookie的数量限制为20个。

3. cookie一般用来保存少量不太敏感的数据。

4. 在用户不登陆的情况可以通过cookie的内容完成服务器对客户端的身份识别。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值