JavaWeb基础—会话管理之Session
2017-04-08 23:06
197 查看
一、什么是session
session类似于客户端在服务器端的账户。使用Map存放
一个会话锁定一个用户(一般情况下是一个客户端,即一个浏览器独占一个session对象),即使使用浏览器访问其他程序资源,也可以共享这个session
(如何确定是同一个用户?创建session时把sessionID以cookie的形式传给客户端,客户端访问时再把此sessionID传过去进行校验
)
二、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中配置过期时间
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
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
- Cookie和Session会话管理基础
- PHP基础----PHP 会话管理----24操作 Session
- JavaWeb(二)会话管理之细说cookie与session
- PHP基础----PHP 会话管理----22Cookie 和 Session 的概念与区别
- WebService大讲堂之Axis2(5):会话(Session)管理
- java的会话管理:Cookie和Session(转)
- JavaWeb---会话管理---Session
- WebService大讲堂之Axis2(5):会话(Session)管理 (转载)
- WebService大讲堂之Axis2(5) 会话(session)管理
- Java web基础学习笔记之会话管理
- 笔记之Servlet的会话管理技术(cookie、session)(应用:用户自动登录、防表单重复提交)
- PHP基础----PHP 会话管理----23操作 Cookie
- ASP.NET状态管理之九(会话Session)
- WebService大讲堂之Axis2(6):跨服务会话(Session)管理
- axis2系列之会话(session)管理
- (31)会话与状态管理基础知识
- WebService大讲堂之Axis2(5):会话(Session)管理
- axis2开发webservice之跨服务会话(Session)管理
- session会话基础理论