Session和Cookie的知识梳理

Session和Cookie的区别?
首先,http是无状态的协议,对于事物处理没有记忆能力。然后每次客户端和服务器会话完成时,服务端不会存储任何会话信息,每个请求都是独立的。所以,服务器与浏览器为了进行会话追踪,就必须主动地去维护这个状态,这个状态用于告知服务器端前后两个请求是否来自同一个人,而这个状态需要通过Session或者Cookie来实现。

Session

理论介绍

  1. 字面意思就是会话。
  2. 是JSP内置对象,与浏览器一一对应,允许用户存储和提取会话状态的信息。
  3. 浏览器关闭,本次会话结束。
  4. 有一个缺陷,服务器一旦负载均衡,那么下一个操作请求到了另一台服务器上时,Session会丢失。

session对象用来存储有关用户会话的方法

返回类型方法说明
voidsetAttribute(String key,Object value)以key/value的形式保存对象值
ObjectsetAttribute(String key,Object value)通过key获取对象值
voidsetMaxInactiveInterval(时间/秒)设置session的有效非活动时间,以秒为单位
intgetMaxInactiveInterval()获取session的有效非活动时间,以秒为单位
StringsetAttribute(String key,Object value)以key/value的形式保存对象值
voidsetAttribute(String key,Object value)以key/value的形式保存对象值

Cookie

理论介绍

  1. 指浏览器里面存储的一种数据,仅仅是浏览器实现数据的存储功能。
  2. 可以由服务器生成发送给浏览器,而浏览器将Cookie以key-value形式保存起来,下一次请求同一服务时,会把Cookie发送给服务器。
  3. 由于Cookie式存储在客户端上,因此浏览器给它加入了一些限制,以确保Cookie不会占用太多磁盘同时不被恶意使用,所以每个Cookie的数量是有限的。
  4. 作用:对特定对象的追踪、统计网页浏览次数、简化登录、安全性能、容易信息泄露

语法

  1. 导入包
import="javax.servlet.http.Cookie"
  1. 创建Cookie
Cookie newCookie=new Cookie("parameter", "value");

parameter:用于代表cookie的名称(key)
value:用于表示当前key名称所对应的值

  1. 写入Cookie
response.addCookie(newCookie)

设置Cookie属性的常用方法

返回类型方法说明
voidsetMaxAge(int expiry)设置Cookie的有效期,以秒为单位
voidsetValue(String value)通过key获取对象值
StringgetName()获取Cookie的名称
StringgetValue()获取Cookie的值
StringgetMaxAge()获取Cookie的有效时间,以秒为单位

举个栗子:用cookie做登录状态验证

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
	<!-- 用cookie做登录状态验证 -->
	<%
		boolean flag = false;
		// 1.获取所有的cookie
		Cookie[] cks = request.getCookies();
		// 2.遍历 cks
		if(null != cks){
			for(Cookie ck : cks){// ck表示 cks里面的每个对象
				if(null != ck){
					// 3.获取cookie对象的key
					String cname = ck.getName();
					// 4.找到保存用户名的 cookie对象
					if("uname".equals(cname)){
						// 已经登录
						flag = true;
						break;
					}
				}
			}
		}
		if(flag == false){// 没有登录
			out.print("<script>alert('请先登录!');location.href='login.jsp'</script>");
		}
		
	%>

区别

1. 安全性

Session 比 Cookie 安全,Session 是存储在服务端的,Cookie 是存储在客户端的。因此,Cookie 通常用于保存不重要的用户信息,重要信息用Session保存。

2. 存取值的类型不同

Session保存的是对象,Cookie 保存的是字符串。

3. 有效期不同

Session 一般失效时间短,客户端关闭或者Session 超时都会失效。Cookie 可以长期保存在客户端。

4. 存储大小不同

单个Cookie 保存的数据不能超过4k,Session 可存储数据高于Cookie ,但当访问量过多,会占用过多的服务器资源。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值