不久前,我写了一篇关于Spring MVC应用程序中HTTP会话的文章。 那是简单的文章,着重于用法的实际方面。 在文章的最后,我保证会写一些更高级的主题,专门针对Spring MVC应用程序中的会话。 因此,我将发布这些东西。

在开始讨论开发过程中出现的会话和最常见的情况之前,我想强调一些事情。 什么是HTTP会话? 它存在什么? 我希望您知道HTTP是无状态协议,这意味着浏览器和服务器之间没有永久连接。 结果服务器即使一个应用程序只有一个用户,也不知道谁是请求的发起者。 该会话是用于识别请求作者的工具。 前面的句子足够粗略,但它解释了会议的主要目的。 每个用户第一次访问站点时都会获得一个具有唯一标识符的会话。

获取会话ID

您可以以与Java EE应用程序相同的方式在Spring MVC应用程序中访问会话ID。 您只需要在RequestHandler方法的参数中传递HttpSession对象,然后为该会话对象调用适当的方法:

...@RequestMapping(value="/", method=RequestMethod.GET)public ModelAndView mainPage(HttpSession session) {ModelAndView mav = new ModelAndView("home");String sid = session.getId();mav.addObject("sid", sid);return mav; }
...

获取会话属性

当您想访问控制器中的某些会话属性时,可以使用与前面的代码片段相同的构造,但有一些改动:

...
Object someObject =  session.getAttribute("nameOfAttribute");
...

如果您确实知道将返回哪种类型的对象,则可以指定显式强制转换。

使用JSTL的JSP中的会话属性

在控制器中将一些值放入会话后,如何使用JSTL在JSP中访问会话值?

@Controller
@SessionAttributes("sValue")
public class NavController {
...@RequestMapping(value="/", method=RequestMethod.GET)public ModelAndView mainPage() {ModelAndView mav = new ModelAndView("home");String sValue = "Some value";mav.addObject("sValue", sValue);return mav; }
...

sValue会话属性的访问将如下所示:

...
<p>
${sValue}
</p>
...

删除会话

会话的删除非常简单,您只需为会话对象调用invalidate()方法即可。 执行此操作后,将针对特定用户完全删除会话。

会话超时

会话超时定义了会话的生存期,在此时间内会话有效。 在Java EE应用程序中定义会话超时的最简单方法是在web.xml文件中指定它。 在应用程序的web.xml文件中添加以下代码段以设置会话超时:

<session-config><session-timeout>10</session-timeout>
</session-config>

在上面的示例中,我将会话超时值设置为等于10分钟。

参考: Spring MVC:在Fruzenshtein的注释博客中,我们的JCG合作伙伴 Alexey Zvolinskiy进行了高级会议 。

翻译自: https://www.javacodegeeks.com/2013/07/spring-mvc-session-advanced.html

Spring MVC:会话高级相关推荐

  1. spring(7)spring mvc 的高级技术

    [0]README 1)本文部分文字描述转自:"Spring In Action(中/英文版)",旨在review  "spring(7)spring mvc 的高级技术 ...

  2. Spring MVC会话教程

    会话管理是每个Web应用程序必不可少的部分. 由于Spring MVC是用于Web开发的功能强大的框架,因此它具有自己的工具和API与会话进行交互. 今天,我打算向您展示Spring MVC应用程序中 ...

  3. Spring MVC:高级会话

    不久前,我写了一篇关于Spring MVC应用程序中HTTP会话的文章. 那是简单的文章,着重于用法的实际方面. 在文章的最后,我保证会写一些更高级的主题,专门针对Spring MVC应用程序中的会话 ...

  4. Spring MVC – Flash属性

    最新的Spring Framework版本(3.1)带来了有趣的功能,称为Flash属性. 这是对我很久以前在我的一篇文章中提到的问题的补救措施: Spring MVC –会话属性处理. 这个问题可以 ...

  5. 《Servlet、JSP和Spring MVC初学指南》——第2章 会话管理 2.1URL重写

    本节书摘来自异步社区<Servlet.JSP和Spring MVC初学指南>一书中的第2章,第2.1节,作者:[加]Budi Kurniawan(克尼亚万) , [美]Paul Deck著 ...

  6. Spring MVC框架的高级配置

    前言: 本文将为您提供关于Spring MVC框架的配置技巧,以帮助管理基于Spring的web应用程序的多个实例.本配置管理主题常被学术界所忽略,但是,这对于现实的web开发尤为重要.本主题并不直接 ...

  7. Spring 2.5:Spring MVC中的新特性

    转载说明:infoQ就是牛人多,看人家去年就把Spring2.5注视驱动的MVC写出来了,还是这么详细,我真是自叹不如,今天偶尔看到这篇文章非常认真的拜读了2遍,简直是茅厕顿开啊....\(^o^)/ ...

  8. Spring 事务管理高级应用难点剖析--转

    第 1 部分 http://www.ibm.com/search/csass/search/?q=%E4%BA%8B%E5%8A%A1&sn=dw&lang=zh&cc=CN& ...

  9. Web应用程序体系结构– Spring MVC – AngularJs堆栈

    Spring MVC和AngularJs共同为构建表单密集型Web应用程序提供了一个真正高效且吸引人的前端开发堆栈.在这篇博客文章中,我们将看到如何使用这些技术构建表单密集型Web应用程序,并将这种方 ...

最新文章

  1. 2022-2028年中国醋酸行业投资分析及前景预测报告
  2. yum安装mysql后密码_Centos7:yum安装MySQL5.7后如何设置root密码
  3. 打印机打印一次出三张_一次性帮你搞定3D打印机堵塞问题
  4. .tex类型文件怎么阅读_TeX + Markdown = ?
  5. 转载 .net面试题大全(有答案)
  6. Python学习之score
  7. javascript精要(3)-动态加载脚本
  8. [导入]java快速开发平台ajf之ORM组件
  9. bst 删除节点_C ++程序查找具有N个节点的BST数量(加泰罗尼亚编号)
  10. iOS uiviewcontroller 添加另外一个controller的View
  11. 带你认识数据库视图对象,下次不要再认成“表”了
  12. 20172313 2018-2019-1 《程序设计与数据结构》第六周学习总结
  13. Project testing plan
  14. VC++6.0与VS2010的区别
  15. cmd echo写入shell_为什么说Shell脚本就是最好的教程和笔记呢?
  16. Spring RestTemplate的使用示例
  17. vue中模拟试卷出题,
  18. [年度总结]我的ACM2013
  19. JavaScript性能优化方案,你知道几个?
  20. 细胞衰老——酪氨酸激酶抑制剂

热门文章

  1. 数据结构树的基本操作_树的各类基本操作(数据结构)
  2. 2015c语言9月答案,2015年9月计算机二级C语言预测题答案
  3. linux wait函数头文件_手把手教Linux驱动9-等待队列waitq
  4. tomcat(2)一个简单的servlet容器
  5. sql server数据库:创建数据库、建立数据库用户、为用户赋予权限
  6. netty java_Netty Java快速指南
  7. java8多线程运行程序_线程,代码和数据–多线程Java程序实际运行的方式
  8. java message_Java Message System简介
  9. activiti脚本任务_Activiti中的安全脚本如何工作
  10. jaxb解析字符串xml_一个JAXB Nuance:字符串与枚举(受限制的XSD字符串)的枚举