http获取的session没有值_Serlvet之cookie和session学习

e59b7cb49e709eb722440cbe4e7fea5e.png

HTTP 协议

Web通信需要一种语言,就像中国人讲中文,欧美说英文,Web使用的HTTP协议,也叫超文本协议。

96c6662174889d6354adf0499c43b3a3.png

使用HTTP协议的人分为两类:客户端和服务端。请求资源的角色是客户端,提供资源的是服务端。

25ac683bc5e2ca1b69274a58b9ccc263.png

HTTP协议是一个很神奇的东西,他只负责说话,至于说了什么他也不知道。所以HTTP是无状态的协议。

3c644faee89e95f28388473133c6f00b.png

会话

HTTP是没有状态,但是人们是有记忆的,人们想让HTTP记住某些东西,然后就提出几种解决方案:

  1. 隐藏域表单
  2. 重写url
  3. cookie
  4. session

cookis简介

cookie是小段的文本信息(微型redis数据库),大小为4kb左右,放在浏览器的内存或者磁盘中,可以设置存活时间,浏览器关闭就消失了。除非保存在磁盘。

cookies使用场景

  1. 记住用户名和密码
  2. 购物车
  3. 定向广告

发送cookies

  1. 创建cookies
  2. 设置最大时效
  3. 将Cookie放入到HTTP响应报头
Cookie c = new Cookie("userID", "a1234");
c.setMaxAge(60*60*24*7);
response.addCookie(c)

读取Cookie

String cookieName = "userID";
Cookie[] cookies = request.getCookies();
if(cookies != null){
    for(Cookie cookie : cookies){
        if(cookieName.equals(cookie.getName())){
            doSomethingWith(cookie.getValue());
        }
    }
}

session

存在服务器内存的文本信息(微型redis数据库)

创建session

HttpSession session = request.getSession;

HttpSession的API

pubic Object getAttribute(String name); //根据name 获取属性的值

public void setAttriute(String name, Object value); //设置一个名称和对应的值

public void logout() //将会话从客户端注销

session使用场景

  1. 购物车
  2. 验证码

cookie与session区别

cookie | session ---|--- 存在浏览器 | 存在服务端 安全系数低 | 较安全

参考:

<< servlet与jsp核心编程 >>

<< servlet和jsp学习指南 >>

<< 图解HTTP >>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值