Spring MVC:会话高级

不久前,我写了一篇关于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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/368161.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux LVM管理

LVM(Logical Volume Manager)逻辑卷管理是在Linux2.4内核以上实现的磁盘管理技术。它是Linux环境下对磁盘分区进行管理的一种机制。 本文内容&#xff1a; 创建和管理LVM扩容LVM分区一、创建和管理LVM 要创建一个LVM系统&#xff0c;一般需要经过以下步骤&#xff1a; 1、 创建…

USB OTG插入检测识别

一 USB引脚一般四根线&#xff0c;定义如下&#xff1a; 为支持OTG功能&#xff0c;mini/micro usb接口扩展了一个ID引脚&#xff08;第4脚&#xff09; A设备端ID脚接地&#xff0c;则初始状态为Host&#xff0c;例如PC和支持OTG设备做主设备时 B设备端ID脚悬空&#xff0c;默…

CSS3与页面布局学习笔记(三)——BFC、定位、浮动、7种垂直居中方法

一、BFC与IFC 1.1、BFC与IFC概要 BFC&#xff08;Block Formatting Context&#xff09;即“块级格式化上下文”&#xff0c; IFC&#xff08;Inline Formatting Context&#xff09;即行内格式化上下文。常规流&#xff08;也称标准流、普通流&#xff09;是一个文档在被显示…

matlab空间截面回归,截面空间回归模型操作应用手册

原标题&#xff1a;截面空间回归模型操作应用手册SAR模型数据集包含对地理区域或其他单元的观测;所以需要的是有一些距离的度量标准来区分哪些单位彼此之间比较近。spregress命令对横断面数据进行建模。它要求每一个观察都代表一个独特的空间单元。对于每个单元(即面板数据)有多…

Java垃圾回收(2)

并行清理 今天&#xff0c;我们介绍了并行GC的工作原理。 具体来说&#xff0c;这是在Eden上运行Parallel Scavenge收集器&#xff0c;在Tenured一代中运行Parallel Mark and Sweep收集器的组合。 您可以通过传递-XX&#xff1a; UseParallelOldGC来获得此选项&#xff0c;尽管…

Navicat Premium创建MySQL存储过程

1、使用Navicat Premium打开创建函数向导&#xff0c;操作&#xff1a;连接名——数据库——函数——新建函数 2、选择过程——输入存储过程参数——完成&#xff08;这一步可以不填写参数&#xff0c;编写存储过程代码的时候设置参数&#xff09; 3、按照要求完成存储过程代码…

CSS3与页面布局学习笔记(二)——盒子模型(Box Model)、边距折叠、内联与块标签、CSSReset

一、盒子模型&#xff08;Box Model&#xff09; 盒子模型也有人称为框模型&#xff0c;HTML中的多数元素都会在浏览器中生成一个矩形的区域&#xff0c;每个区域包含四个组成部分&#xff0c;从外向内依次是&#xff1a;外边距&#xff08;Margin&#xff09;、边框&#xff…

mysql中将某个字段做计算,mysql创建计算字段使用子查询教程

作为计算字段使用子查询使用子查询的另一方法是创建计算字段。假如需要显示 customers表中每个客户的订单总数。订单与相应的客户ID存储在 orders 表中。为了执行这个操作&#xff0c;遵循下面的步骤。(1) 从 customers 表中检索客户列表。(2) 对于检索出的每个客户&#xff0c…

像Java这样的C ++具有低延迟

总览 以前&#xff0c;我写过一篇有关Java之类的C的文章。 这是我以前遇到的术语。 但是&#xff0c;经过思考&#xff0c;我认为像Java这样的C 是一个更好的术语&#xff0c;因为您仍在使用OOP做法&#xff08;不是C风格的&#xff09;&#xff0c;但是您需要自己进行更多的工…

项目一总结

1、编程逻辑不明确的问题 在项目开始阶段&#xff0c;项目分工应根据项目模块进行详细分工&#xff0c;公用部分应尽量节省时间 2、对于文件命名规则的定义&#xff0c;现在项目名字命名很乱&#xff0c;在项目整合时会出很多问题 3、文件目录不清晰&#xff0c;条理性差 4、代…

Android GreenDao使用教程

一、Greendao简介 Greendao是一款用于数据库创建与管理的框架&#xff0c;由于原生SQLite语言比较复杂繁琐&#xff0c;使得不少程序员不得不去学习SQLite原生语言&#xff0c;但是学习成本高&#xff0c;效率低下&#xff0c;所以不少公司致力于开发一款简单的数据库管理框架&…

matlab如何将相近的数据,matlab新手,求帮助!主要是如何将数据和公式导入

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼这是别人给我的程序&#xff0c;我想问一下怎么把我的两个excel数据导入&#xff0c;以及公式怎么写&#xff1f;clc;clear all;close all;datadlmread(all_data_in_situ_lxz.txt);data(6,:)[];data(12,:)[];data(13,:)[];data(13,…

Java垃圾回收(1)

这是有关垃圾收集&#xff08;GC&#xff09;的系列文章中的第一篇。 我希望能够涵盖整个系列过程中的理论知识以及热点虚拟机中的所有主要收集器。 这篇文章仅说明什么是垃圾回收&#xff0c;以及不同回收器共有的元素。 我为什么要在乎&#xff1f; 您的Java虚拟机可以为您管…

如果

&#xff08;最近遇到了一些困难&#xff0c;这篇翻译自己一直就很喜欢&#xff0c;贴上来鼓励自己。&#xff09; 如果 吉卜林【英】芮成钢【译】 如果&#xff0c;身边的人都失去理智&#xff0c;并将其归咎于你&#xff0c; 而你却能保持清醒&#xff1b; 如果&#xff0c;所…

深入c#的string类

一.字符串常用方法 1.IndexOf("") 如果找到字符串出现的位置则为索引位置&#xff0c;否则返回-1&#xff0c;索引从0开始 2.string Substring( int startIndex , int length ); 从开始位置startIndex&#xff0c;截取到结束位置&#xff08;截取长度length&#xff…

go语言服务器连接mysql,服务器mysql怎么配置才能远程连接

如何设置MYSQL服务器允许远程连接&#xff1f;如果你使用的与数据库不在同一台服务器上电脑&#xff0c;那么MySQL 服务器就需要允许远程链接&#xff0c;网站才能正常运行。那么如何设置MYSQL服务器允许远程连接呢&#xff1f;我想这是很多人都想提出的疑问&#xff0c;下面是…

h1、h2、h3标签及strong标签对页面seo的影响

今天和大家来聊下h1,h2,h3,strong几个标签&#xff0c;在网页中的使用对页面seo的影响&#xff0c;也阐述了个人的一些想法。 首先简要讲下H标签及strong标签的含义&#xff1a;<h1>、<h2>、<h3>、<h4>、<h5>、<h6>,作为标题使用&#x…

少锁定Java对象池

自从我写任何东西以来已经有一段时间了&#xff0c;我一直在忙于我的新工作&#xff0c;该工作涉及在性能调整方面做一些有趣的工作。 挑战之一是减少应用程序关键部分的对象创建。 尽管Java随着时间的推移改进了GC算法&#xff0c;但垃圾回收打h一直是Java的主要难题。 Azul是…

Java (数组的遍历,for循环的使用)

/*多行注释的快捷键&#xff1a;Ctrlshift/ 快速格式化代码快捷键&#xff1a;Ctrlshiftf 自动导入一个包&#xff1a;Ctrlshifto */ package test_1;public class Day_2 {public static void main(String args[]) {//一个九九乘法表的实现int c 0;for (int a 1; a < 9; a…

php数据库postgresql,PHP 操作 PostgreSQL数据库

1.要让PHP支持PostgreSQL&#xff0c;就需要重新编译PHP&#xff1b;./configure --prefix/usr/local/php5 --with-apxs2/usr/local/apache2/bin/apxs --with-mysql/usr/local/mysql --with-config-file-path/usr/local/php5 --with-zlib --enable-mbstringall --with-mysql…