Cookie Session 以及它们的区别
来源:互联网 发布:淘宝热线电话 编辑:程序博客网 时间:2024/06/16 20:29
一、Session原理
1、创建Session的时候,服务器将生成一个唯一的sessionid然后用它生成一个关闭浏览器就会失效的cookie。
2、然后再将一个与这个sessionid关联的数据项加入散列表。
例如这样一段代码:Session["UserName"]=23;
假设sessionid为123那么散列表中会追加一行
sessionid username
123 23
3、当浏览器端提交到服务器时,会通过sessionid=123去散列表中寻找属于该用户的Session信息。
更精细点来说:
1. Java Servlet API 中引用 Session 机制来追踪客户的状态。Servlet API 中定义了 javax.servlet.http.HttpSession 接口,Servlet 容器必须实现这个接口。
2.当一个 Session 开始时,Servlet 容器将创建一个 HttpSession 对象,Servlet 容器为 HttpSession 分配一个唯一标识符,称为 Session ID。Servlet 容器将 Session ID 作为 Cookie 保存在客户的浏览器中。每次客户发出 HTTP 请求时,Servlet 容器可以从 HttpRequest 对象中读取 Session ID,然后根据 Session ID 找到相应的 HttpSession 对象,从而获取客户的状态信息。
3.当客户端浏览器中禁止 Cookie,Servlet 容器无法从客户端浏览器中取得作为 Cookie 的 Session ID,也就无法跟踪客户状态。
Java Servlet API 中提出了跟踪 Session 的另一种机制,如果客户端浏览器不支持 Cookie,Servlet 容器可以重写客户请求的 URL,把 Session ID 添加到 URL 信息中。
4. HttpServletResponse 接口提供了重写 URL 的方法:public java.lang.String encodeURL(java.lang.String url)
该方法的实现机制为: ● 先判断当前的 Web 组件是否启用 Session,如果没有启用 Session,直接返回参数 url。
● 再判断客户端浏览器是否支持 Cookie,如果支持 Cookie,直接返回参数 url;如果不支持 Cookie,就在参数 url 中加入 Session ID 信息,然后返回修改后的 url。
二、cookie的内容主要包括:名字,值,过期时间,路径和域。
三、cookie 和session的区别:
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
5、所以个人建议:
将登陆信息等重要信息存放为SESSION
其他信息如果需要保留,可以放在COOKIE中
0 0
- Cookie Session 以及它们的区别
- session和cookie的用法以及它们的区别
- session与cookie的区别以及配置
- session和cookie的用法以及区别
- cookie用法以及cookie与session的区别
- cookie与session的基本机制以及它们的基本操作
- session&&cookie的区别
- cookie,session的区别
- Session,Cookie的区别
- session的实现机制以及与cookie的区别
- 为什么要有cookie和session,以及cookie和session的区别
- 为什么要有cookie和session,以及cookie和session的区别
- Session和Cookie的区别、生命周期以及安全性
- Cookie、session和localStorage、以及sessionStorage之间的区别
- cookie 和session以及小知识 的区别详解
- 为什么会有session 和 cookie ,以及两者的区别
- cookie和session中sessionid怎么来的以及区别
- Cookie、session和localStorage、以及sessionStorage之间的区别
- 大型网站架构演化发展历程
- Angular过滤器
- 进程内核栈
- easyui实现datagrid打印
- Java定时任务
- Cookie Session 以及它们的区别
- Java面试准备二十:Java异常处理和设计
- Mysql学习笔记十七——表、视图的管理语句
- [Python笔记]1.python及Python库安装(windows)
- SOA
- CodeForces 701A Cards(水)
- IntelliJ IDEA 下的SVN使用(傻瓜式教学)
- 使用Requests+xpath实现简单的数据爬取
- 2017年阅读笔记整理