由于http协议是一种无状态的协议,所以不通过其他手段的话,很难记录用户之前做过哪些事情。记录用户的状态,固然用cookie可以实现,但是cookie的大小和数量是存在限制的,并且还是存放于客户端的(客户端的cookie可以被人为的删除,而且在安全性上也是存在问题)。
session则和cookie的实现不一样,session是存放于服务器端的(基本可以理解成我们想放什么就可以放什么,我们想放多少就放多少)。session的实现机制,session既然是存在于server端的。那么我们当我们访问一个server的时候,server是如何找到我们对应的session的呢?一般情况下,当server端为一个用户创建一个session之后会将一个cookie,cookie的name为JSESSIONID,对应的值为一个字符串传递给client端,client端再次访问server端的时候,server会根据cookie中的JSESSIONID的值,来找到存放于server端的session。(浏览器禁用cookie的时候,我们可以将jseesionid和其对应的值显示在用户访问的每一个url上,当然用户禁用cookie的情况还是很少的,现在绝大多数浏览器默认页是支持cookie的。故这里不多讨论其实现的方式)
session的其他注意点,session中的对象是一直存在的,除非你手动的remove或者session失效,所以我们做应用的时候需要考虑什么东西是我们真的需要存放于session中的,session也需要占用内存和磁盘上的空间,session中存放大量对象将对系统性能产生很大的影响,对内存和资源的消耗也会增加。
setAttribute(String name, Object value)
向session中添加一个名字为name,值为value的键值对(注意了哦,这里的value的类型是Object而不再是String)。当name已经在session中存在时,则替换name对应的值为value。
getAttribute(String name)
这个好像没有什么好说的,返回name对应的value。当然name不存在时候会返回null
getAttributeNames
()
返回一个Enumeration集合
getCreationTime()
返回session的创建时间,long类型
getId()
返回session的ID
removeAttribute(String name)
删除name对应的键值对。
setMaxInactiveInterval(int interval)
设置一个session当用户在interval秒内没有活动时即失效 (利用这个我们可以很方便的实现,当用户多长时间没有和我们的网站有任何交互时候让其需要重新登录才能继续浏览),如果不调用这个方法的话会根据容器的默认设置(一般为30分钟)
void invalidate()
将此session对象立即失效(会释放session占用的一些资源)(利用这个方法可以解决我们访问一个网站时,突然需要离开但不想关闭浏览器窗口。如果我离开后不希望别人能继续使用我已经登录的帐号做其他操作则可以提供一个注销的功能给用户,当用户点击注销的时候即调用此方法)。
isNew()
判断是否新建的session
分享到:
相关推荐
在Web开发中,Session是一种非常重要的机制,用于在用户的整个会话期间保持数据。JavaScript(JS)作为客户端脚本语言,通常与HTML和CSS一起工作,处理用户交互和动态更新页面内容。然而,由于安全性和同源策略的...
【session session session szsessdifn】 在Web开发中,Session是一个至关重要的概念,尤其是在ASP.NET框架下。Session机制是服务器端存储用户特定信息的一种方式,它允许开发者在多个页面之间保持用户状态,解决了...
Springboot实现多服务器session共享是指在分布式系统中,每个服务器上的Session可以共享,实现 Session 的同步和共享,从而解决了在分布式环境中Session不一致的问题。下面是关于Springboot实现多服务器session共享...
在IT行业中,尤其是在Web应用程序开发中,Session共享是解决多服务器间用户状态一致性的重要技术。Memcached是一款广泛应用的高性能分布式内存对象缓存系统,它能够有效地缓解数据库的压力,提高系统的响应速度。`...
《Tomcat Redis Session Manager:实现高效会话管理》 在Web应用开发中,session管理是不可或缺的一部分,它用于存储用户状态信息,确保用户在不同页面间保持登录状态。然而,随着分布式系统的普及,单个服务器的...
因为小程序原生不支持Cookie,因此也不支持Session。 网上找到的的一些方法有缺陷,而且很多累赘,估计没有实际测试过,在此直接给出实测可用的代码。 大概思路就是借助小程序本地储存+网络请求的header可读可写来...
在分布式系统中,Session共享是一个常见的需求,尤其是在使用Tomcat这样的Servlet容器时。"tomcat-redis-session-manager"是一个解决方案,它将用户的Session信息存储在Redis缓存服务器中,从而实现跨服务器的...
如果没有sessionId就新创建session,如果有sessionId,就去redis中查看是否有此id的记录,如果没有就新建session,如果有,还是新建session,并把redis中此session的相关数据赋值给新建的session,最后保存sessionId...
标题 "Tomcat7+Redis+Session 负载之后session 共享 tomcat jar包" 涉及的是在使用Nginx做负载均衡时,如何通过集成Redis来实现Tomcat7服务器之间的Session共享,从而确保用户在不同服务器之间切换时仍然能够保持...
然而,当涉及到跨域时,`iframe` 遇到的问题之一就是无法正常访问父页面或被嵌入页面的`session`。这是因为浏览器的同源策略(Same-Origin Policy)限制了不同源之间的交互,包括`session`和`cookie`。 同源策略是...
在IT行业中,session共享是一个重要的概念,特别是在分布式系统或者多服务器环境下的Web应用。当用户在网站上进行操作时,服务器会创建一个session来存储用户的会话信息,如登录状态、购物车等。然而,如果一个网站...
JSP 内置对象 Session 总结 Session 对象是一种 JSP 内置对象,用于管理客户端与服务器端之间的会话期。下面是 Session 对象的详细介绍。 什么是 Session Session 对象是一个 JSP 内置对象,它在第一个 JSP 页面...
然而,在某些特定场景下,我们可能并不需要频繁地打开和关闭Session,这时“Hibernate-nosession”就显得尤为重要。本文将深入探讨Hibernate-nosession的概念、应用场景以及如何在实际代码中实现。 首先,理解什么...
此外,还可以自定义Session的启动方式,例如创建一个名为`start_session`的函数,它可以接受期望的过期时间作为参数: ```php function start_session($expire = 0) { if ($expire == 0) { $expire = ini_get('...
### 关于.NET中C# Session丢失与SessionID变化问题解析 #### 一、问题背景及概述 在.NET框架中,特别是在使用C#进行Web开发时,Session管理是至关重要的一个环节。Session对象允许服务器存储有关用户会话的信息,...
ASP.NET Session 丢失通常是由多种原因引起的,包括进程重启、Session超时、配置文件更改、应用程序更新或杀毒软件活动。在深入探讨解决方案之前,让我们先理解Session的基本原理。 Session是一种服务器端的状态...
### 退出页面自动清除session技巧 在Web应用开发过程中,管理用户会话是十分重要的一个环节。Session机制作为实现用户状态跟踪的一种手段,在各种应用场景中都扮演着关键角色。但是,如何有效地管理并适时地清除...
### Cookie、Session与Token的区别及使用详解 #### 一、Cookie **定义**: Cookie是一种用于在客户端保持状态的方案。简单来说,当你访问一个网站时,该网站可能会在你的计算机上留下一些信息(如用户名、密码等),...
在Web开发中,Session是用于跟踪用户状态的一种技术。当用户登录网站后,服务器会创建一个Session对象,并将其关联到用户的浏览器。这个Session对象通常包含用户的一些关键信息,如用户名、权限等。然而,为了安全...
### 设定Tomcat中Session过期时间的三种方式 在Web开发中,Session管理是确保用户状态跟踪的重要机制之一。Tomcat作为一款广泛使用的Java应用服务器及Servlet容器,提供了多种方式来设定Session的有效时长。这有助...