Session与Cookie(1)
Session
session是一种位于服务端,用于存储一个会话(指打开浏览器访问某个域名,及其下面的资源,然后关掉浏览器的过程)中所需的配置信息。也就是在一个会话中,只存在一个session。对于Java web编程来说,session就是在request.getSession()创建的。同样,session也可以通过setMaxInactiveInterval()设置其生存时间。 session的结构类似一个map。可以根据需求put不同的key和value进去。通常,用作登录状态的保持,对应在客户端存储cookie,可以减少多次登录困扰。 用Java代码体验下这一过程: PrintWriter writer = response.getWriter(); HttpSession session = request.getSession();// 设置session有效时间为1天
session.setMaxInactiveInterval(60 * 60 * 24); if (session.isNew()) {
session.setAttribute("name", "cjt");
writer.write("新建Session成功"); }else { writer.write(session.getAttribute("name").toString()); } 每个会话第一次与服务端产生交互,请求头Request Header是不包含任何cookie的,所以跟踪不到session,isNew()返回true;然后在同一次回话中,接下来的访问都返回false. 对于tomcat容器来讲,getSession()默认会生成一个id为JSESSIONID的session,然后set-cookie保存到客户端(会话cookie),但是session默认生命周期是20分钟,所以第二次会话时上次的名为JESSIONID的cookie会丢失,但是session还存在服务器端, Cookie cookie是指为了辨别身份、进行 session 跟踪而储存在本地终端上的数据(通常经过加密),也可以叫做浏览器缓存。cookie是由服务端发出set-cookie指令,客户端根据设置的cookie信息创建本地cookie。 一个cookie可看做一个实体类,里面存有当前cookie的key、value、maxage、path等。在访问path路径及其子路径时,会封装一系列相关的cookie集合到Request Header中,发送到服务器。 具体java代码就是在服务端完成,记住创建了cookie对象后要添加到response中: PrintWriter writer = response.getWriter(); HttpSession session = request.getSession(); // 设置session有效时间为1天
session.setMaxInactiveInterval(60 * 60 * 24); if (session.isNew()) {
session.setAttribute("name", "cjt");
writer.write("新建Session成功"); } else {
writer.write(session.getAttribute("name").toString()); } 特别注意 在实际开发中,可能需要我们手动更改cookies的内容,那么cookie并不提供update,只有add方法。这里就要采取覆盖的方式更新了。 举个例子,你把购物车的信息都在cookie key为cart的本地常驻cookie中,然后添加了商品到购物车,这里就要更新该cookie。重点就在这里,java里面获取到key为cart的cookie,你会发现只能取到里面的key和value,path和maxage都获取不到,具体原因我也不清楚。 如果此时强行采取添加覆盖的方式,就会增加了一个会话cookie到客户端。而之前的常驻购物车cookie并没有改变。所以得每次手动设置path和maxage为了和之前保持一致,这样才能达到更新的目的。
Session与Cookie(1)的更多相关文章
- 理解Session与Cookie
写在前面的话:Session和Cookie是非常有意思的两个概念,对于两者的管理可以处理的很复杂,但是无论如何,理解Session和Cookie的基本概念和发明初衷,对于问题的解决,大有裨益. === ...
- PHP之session与cookie
1.session与cookie的关系 众所周知,session是存储在服务器端,cookie是存储在客户端,如果禁用了浏览器的cookie功能,很多时候(除非进行了特殊配置)服务器端就无法再读取se ...
- 安全退出,清空Session或Cookie
概览: 网站中点击退出,如果仅仅是重定向到登录/出页面,此时在浏览器地址栏中输入登录后的某个页面地址如主页,你会发现不用登录就能访问.这种所谓的退出并不是安全的. 那么怎样做到安全退出呢? 那就是点击 ...
- 11月7日上午PHP会话控制(session和cookie)、跨页面传值
1.session 登录上一个页面以后,长时间没有操作,刷新页面以后需要重新登录. 特点:(1)session是存储在服务器: (2)session每个人(登陆者)存一份: (3)session ...
- 【荐】PHP Session和Cookie,Session阻塞,Session垃圾回收,Redis共享Session,不推荐Memcached保存Session
什么是 Session 在 web 应用开发中,Session 被称为会话.主要被用于保存某个访问者的数据. 由于 HTTP 无状态的特点,服务端是不会记住客户端的,对服务端来说,每一个请求都是全新的 ...
- Session与Cookie概念
摘:一.Session机制session是一种服务器端的状态管理技术,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息.当程序需要为某个客户端的请求创建一个session的时候,服务 ...
- session和cookie
第一次听到cookie这个词的时候着实兴奋了一段时间,以为是小饼干呢~快喝一杯82年的java压压惊!哈哈~ 与cookie的第一次邂逅——清缓存和清cookie 刚毕业的时候上班,做二次开发,明明后 ...
- 深入理解Session与Cookie
Session与cookie的作用都是为了保持访问用户与后端服务器的交互状态. cookie通过把所有要保存的数据通过HTTP协议的头部从客户端传递到服务端,又从服务端再传回到客户端,所有的数据都存储 ...
- TP中的session和cookie
session:1.session('name','value'); //设置session2.$value = session('name'); // 获取所有的session 3.2.2版本新 ...
- thinkphp里的session、cookie方法
thinkphp里,对于session和cookie的操作,不管是存值.获取.删除,均只有一个方法.现分享出来,供大家参考参考. /** * session管理函数 * @param string|a ...
随机推荐
- 进程间的八种通信方式----共享内存是最快的 IPC 方式
1.无名管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用.进程的亲缘关系通常是指父子进程关系. 2.高级管道(popen):将另一个程序当做一个新 ...
- Android-彻底地理解Binder
转自:https://blog.csdn.net/huachao1001 https://blog.csdn.net/huachao1001/article/details/51504469 你是不是 ...
- mongo 介绍
[介绍]:MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情况下,添加更多的节点,可以保证服务器性能.MongoDB 旨在为WEB应用提供可扩展的高性能数据存 ...
- Java泛型【转】
一. 泛型概念的提出(为什么需要泛型)? 首先,我们看下下面这段简短的代码: public class GenericTest { public static void main(String[] a ...
- 【题解】CF264B Good Sequences
[题解]CF264B Good Sequences 具有很明显的无后效性. 考虑\(dp\). 考虑初始条件,显然是\(dp(0)=0\) 考虑转移,显然是\(dp(t)=max(dp[k])+1\) ...
- Django项目高频使用文件
数据库配置: MySQL数据库 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'HOST': 'localhost' ...
- ubuntu安装opencv(自己编译)
如果只需要python的,只需pip install opencv-python,然后apt-get一下下面第一点的东东. 1/ sudo apt-get install build-essentia ...
- Android/iOS Remote debugging
简单介绍 使用下面方法可以定位webview中的元素,无法定位view中的元素. 原文地址:http://mp.weixin.qq.com/s/y_UfdgjT_pkKgYivJmqt7Q webvi ...
- koa-bodyparser返回413状态码的问题
413 Request Entity Too Large(请求实体太大) 数日前,我用 node.js 写的一个日志服务抛出了这个状态码-- 自己写的服务抛出了一个自己都不认识的状态码,这是最气的!( ...
- 大数据之路- Hadoop环境搭建(Linux)
前期部署 1.JDK 2.上传HADOOP安装包 2.1官网:http://hadoop.apache.org/ 2.2下载hadoop-2.6.1的这个tar.gz文件,官网: https://ar ...