JavaWeb基础—会话管理之Session
一、什么是session
session类似于客户端在服务器端的账户。使用Map存放
一个会话锁定一个用户(一般情况下是一个客户端,即一个浏览器独占一个session对象),即使使用浏览器访问其他程序资源,也可以共享这个session
(如何确定是同一个用户?创建session时把sessionID以cookie的形式传给客户端,客户端访问时再把此sessionID传过去进行校验
JSESSIONID
)
二、session和cookie的区别
cookie 把用户的数据保存到浏览器端,session 把用户的数据保存到服务器端
cookie保存在浏览器不安全(cookie欺骗),但可以减轻服务器压力
session保存在服务器端更安全,但增大了服务器压力
浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB
一般把登陆密码等重要信息放session 其它相对不太重要的信息放cookie
补更:
Cookie是浏览器实现的一种数据存储功能
session 字面意思就是会话,会话就要知道你在和谁说话,session也是类似的道理,服务器要知道当前发请求给自己的是谁
三、session的操作
request.getSession()方法得到session 在这个方法第一次调用时才真正创建session(可以通过isNew()方法判断是否为新的)
默认session的存活时间为30分钟,可以在web.xml中配置过期时间
<session-config>
<session-timeout>15</session-timeout>
</session-config>
程序中使用session.invalidate()手动设置过期
cookie被禁用时的解决方案(cookie被禁用后JSESSIONID无处存放):
【更新】:Cookie与 Session,一般认为是两个独立的东西,Session采用的是在服务器端保持状态的方案,而Cookie采用的是在客户端保持状态的方案。但为什么禁用Cookie就不能得到Session呢?因为Session是用Session ID来确定当前对话所对应的服务器Session,而Session ID是通过Cookie来传递的,禁用Cookie相当于失去了Session ID,也就得不到Session了。
解决方案:URL重写
response. encodeRedirectURL(String url)
用于对sendRedirect方法后的url地址进行重写。
response. encodeURL(String url)
用于对表单action和超链接的url地址进行重写
这两个都是比较智能的方法,会在合适的时机进行重写
四、session解决重复提交的问题(利用token)
见孤傲苍狼大神的博客!
http://www.cnblogs.com/xdp-gacl/p/3859416.html
JavaWeb基础—会话管理之Session的更多相关文章
- JavaWeb基础—会话管理之Cookie
一.什么是会话 打开浏览器,浏览各种资源,点击各种超链接,直至关闭浏览器,整个过程称为会话 二.会话管理的两种技术 1.Cookie 基于客户端.在客户端记录信息来确认用户身份.以cookie的形式写 ...
- [ASP.NET][Session] 使用 SQLServer 会话管理解决 Session 丢失问题
使用 SQLServer 会话管理解决 Session 丢失问题 步骤 1.通过命令行执行 aspnet_regsql.exe 程序(不要双击安装),先在 CMD 中输入命令 cd C:\Window ...
- 会话管理之session技术
上一节我们总结了cookie技术,这节主要总结一下session技术. 1. session对象 在web开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占 ...
- JavaWeb基础: 会话技术简介
会话技术 用户使用Web应用的过程实际是调用了一系列的Servlet来组合处理请求,从而完成整个业务流.不同Servlet组合起来为用户服务的时候就会遇到一个数据共享和传输的问题,如何让多个Servl ...
- JavaWeb基础 - 会话
会话概述 什么是会话 简单的理解:用户打开浏览器,点击多个超链接,访问Web服务器上多个资源,然后关闭浏览器,整个过程称之为一次会话. 需要解决的问题 每个用户在使用浏览器与服务器会话的过程中,会产生 ...
- 测开之路一百三十八:会话管理之session
session管理和使用,需要用到flask的session模块和设置安全码:app.secret_key 比如列表页和编辑功能只能给admin用 列表页 编辑页 添加session 登录成功时,把u ...
- JavaWeb-10(会话技术之session&JSP)
JavaWeb-会话技术之session&JSP 会话管理之Session技术 一.Session 在WEB开发中,server能够为每一个用户浏览器创建一个会话对象(session对象),注 ...
- shiro会话管理
Shiro提供了完整的企业级会话管理功能,不依赖于底层容器(如web容器tomcat),不管JavaSE还是JavaEE环境都可以使用,提供了会话管理.会话事件监听.会话存储/持久化.容器无关的集群. ...
- 第十章 会话管理——《跟我学Shiro》
转发地址:https://www.iteye.com/blog/jinnianshilongnian-2028675 目录贴:跟我学Shiro目录贴 Shiro提供了完整的企业级会话管理功能,不依赖于 ...
随机推荐
- 数组转换list集合问题
1问题的起因: 项目总要使用一个方法把数组转换成list集合,百度说有这个方法Arrays.asList可以实现 2结果报错 抛出java.lang.UnsupportedOperationExcep ...
- Django 多表查询 聚合查询 分组查询 F查询 Q查询
# -------------------------------------------------------------------------------------------------- ...
- Java设计模式----观察者模式详解
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...
- 2.MyBatis 动态SQL
动态 SQL MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦.拼接的时候要确保不能忘了必要的空格 ...
- java:通过Calendar类正确计算两日期之间的间隔
在开发Android应用时偶然需要用到一个提示用户已用天数的功能,从实现上来看无非就是持久化存入用户第一次使用应用的时间firstTime(通过SharedPreferences .xml.sqlit ...
- 用CHTCollectionViewWaterfallLayout写瀑布流
用CHTCollectionViewWaterfallLayout写瀑布流 实现的瀑布流效果图: 源码: WaterfallCell.h 与 WaterfallCell.m // // Waterfa ...
- UITableVIew与UICollectionView带动画删除cell时崩溃的处理
UITableVIew与UICollectionView带动画删除cell时崩溃的处理 -会崩溃的原因是因为没有处理好数据源与cell之间的协调关系- 效果: tableView的源码: ModelC ...
- [翻译] UIColor-uiGradientsAdditions
UIColor-uiGradientsAdditions https://github.com/kaiinui/UIColor-uiGradientsAdditions Beautiful color ...
- swift关于UIView设置frame值的extension
swift关于UIView设置frame值的extension 使用 说明 1. 使用如上图,很简单,不再赘述 2. 在extension给添加的计算属性提供getter,setter方法即可 源码 ...
- Python初学者第二十四天 函数进阶(3)生成器
24day 1.列表生成式: 循环模式:[变量(加工后的变量) for 变量 in iterable] print([i for i in range(0,101,2)]) [1,4,9,16,25, ...