文档章节

request.getSession(boolean create)的正确使用姿势

haoran_10
 haoran_10
发布于 2016/07/15 16:44
字数 295
阅读 13
收藏 0

javax.servlet.http.HttpServletRequest 中有一个创建session会话的方法

 

/**
 * 如果create设置true,返回当前的HttpSession,如果没有会话,创建一个新的会话
 * 如果create设置false,如果当前有会话那就返回,如果没有会话,就返回null
 */
public HttpSession getSession(boolean create);

/**
 * 等同于getSession(true);
 */
public HttpSession getSession();

 

使用要点:

1、创建会话场景

这种逻辑放在登陆、授权业务中,用户登陆成功之后,自然而然的需要保持用户当前的访问会话。

此时使用getSession(true),或者getSession(),然后session可以放入具体的attribute,更详细描述当前用户会话信息。

 

2、查找当前会话

如果我们当前逻辑需要查找会话,如果会话为空,直接抛出会话不存在,权限不足的信息。

这时使用getSession(false),即查找当前的会话,没有会话就是返回为空。避免了使用getSession()又会创建一次多余的没有经过授权的会话。

使用getSession(false)得到当前session之后,再进一步获取当前的attribute,做下一步业务处理。

 

 

全文完。

© 著作权归作者所有

共有 人打赏支持
haoran_10
粉丝 25
博文 88
码字总数 80846
作品 0
杭州
程序员
java getSession

本文属于本人原创,转载请注明出处:http://blog.csdn.net/xxd851116/archive/2009/06/25/4296866.aspx 【前面的话】 在网上经常看到有人对request.getSession(false)提出疑问,我第一次也很...

Oscarfff
2016/02/16
33
0
对request.getSession(false)的理解(附程序员常疏忽的一个漏洞)

转自:http://blog.csdn.net/xxd851116/article/details/4296866 【前面的话】 在网上经常看到有人对request.getSession(false)提出疑问,我第一次也很迷惑,看了一下J2EE1.3 API,看一下官网...

挨踢人生
2014/05/26
0
0
HttpServletRequest.getSession特性和Session周期

request.getSession()和HttpServletRequest.getSession(boolean)的区别Session的生命周期 HttpSession session=request.getSession(); 1查询浏览器中是否有session对象, 2如果没有,就创建一......

day戴
2014/05/30
0
0
Spring MVC防止数据重复提交

要解决重复提交,有很多办法,比如说在提交完成后redirect一下,也可以用本文提到的使用token的方法(我不使用redirect是因为那样解决不了ajax提交数据或者移动应用提交数据,另一个原因是现...

Leons
2015/07/08
0
0
HttpServletRequest.getSession特性和Session周期

request.getSession()和HttpServletRequest.getSession(boolean)的区别Session的生命周期 HttpSession session=request.getSession(); 1查询浏览器中是否有session对象, 2如果没有,就创建一......

城固如春
2016/10/13
15
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

内存模型是怎么解决缓存一致性的?

在再有人问你Java内存模型是什么,就把这篇文章发给他。这篇文章中,我们介绍过关于Java内容模型的来龙去脉。 我们在文章中提到过,由于CPU和主存的处理速度上存在一定差别,为了匹配这种差距...

Java填坑之路
10分钟前
1
0
vue-cli 3.0 初体验

最近复习了下vue,突然发现vue-cli已经更新到3.0版本了,并且变化蛮大,看来要不停的学习,真是一入前端深似海。 安装步骤: 1、全局安装 npm install -g @vue/cli Vue CLI 的包名称由 vue-...

tianyawhl
12分钟前
0
0
Angular进阶之路

【初级】会写页面,能出东西。 给定环境和 rest API,不用第三方库,能在十分钟内完成一个 master/detail 结构的带路由的应用(可以不管美观)。 知识点:Angular CLI、组件、路由、HTTP 服务...

陆小七的主页
14分钟前
0
0
Redis缓存数据库安全加固指导(一)

背景 在众多开源缓存技术中,Redis无疑是目前功能最为强大,应用最多的缓存技术之一,参考2018年国外数据库技术权威网站DB-Engines关于key-value数据库流行度排名,Redis暂列第一位,但是原生...

中间件小哥
14分钟前
0
0
百万级数据mysql分区

1. 什么是表分区? 表分区,是指根据一定规则,将数据库中的一张表分解成多个更小的,容易管理的部分。从逻辑上看,只有一张表,但是底层却是由多个物理分区组成。 2. 表分区与分表的区别 分表...

罗文浩
17分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部