设置Session永不过期,Session有效时间的问题
- 格式:doc
- 大小:13.05 KB
- 文档页数:3
Session的有效期设置⽅式⼀:在web.xml中设置session-config如下:<session-config><session-timeout>2</session-timeout></session-config>即客户端连续两次与服务器交互间隔时间最长为2分钟,2分钟后session.getAttribute()获取的值为空API信息:session.getCreationTime() 获取session的创建时间session.getLastAccessedTime() 获取上次与服务器交互时间session.getMaxInactiveInterval() 获取session最⼤的不活动的间隔时间,以秒为单位120秒。
<!-- 登录状态过滤,可以过滤掉不需要进⾏超时验证的url --><filter><filter-name>loginFilter</filter-name><filter-class>com.software.filter.LoginFilter</filter-class></filter><filter-mapping><filter-name>loginFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!---以上代码指明具体的路径,具体的代码见附录>⽅式⼆:在Tomcat的/conf/web.xml中session-config,默认值为:30分钟<session-config><session-timeout>30</session-timeout></session-config>⽅式三:在Servlet中设置HttpSession session = request.getSession();session.setMaxInactiveInterval(60);//单位为秒说明:1.优先级:Servlet中API设置 > 程序/web.xml设置 > Tomcat/conf/web.xml设置2.若访问服务器session超时(本次访问与上次访问时间间隔⼤于session最⼤的不活动的间隔时间)了,即上次会话结束,但服务器与客户端会产⽣⼀个新的会话,之前的session⾥的属性值全部丢失,产⽣新的sesssionId3.客户端与服务器⼀次有效会话(session没有超时),每次访问sessionId相同,若代码中设置了session.setMaxInactiveInterval()值,那么这个session的最⼤不活动间隔时间将被修改,并被应⽤为新值。
第5章一、填空1.服务器向客户端发送Cookie时,会在HTTP响应头字段中增加____响应头字段。
2.Web应用中的会话指的是一个客户端(浏览器)与____之间连续发生的一系列请求和响应过程。
3.Session相对于Cookie具有更高的安全性,它将关键数据保存在____端。
4.在Servlet技术中,提供了两个用于保存会话数据的对象,分别是____和Session。
5.Tomcat容器中会话的有效时间可以在____文件中设置,默认会话过期时间为30分钟。
二、判断1.Tomcat容器中如果将元素中的时间值设置成0或一个负数,则表示会话永不超时。
2.Session是一种将会话数据保存到服务器端的技术,需要借助Cookie技术来实现。
3.Cookie的domain属性是用来指定浏览器访问的域,设置domain属性时严格区分大小写。
4.Cookie的path属性设置后,只对当前访问路径所属的目录有效。
5.一次会话过程中,只允许客户端与服务器进行一次请求与响应过程。
三、选择1.下列对于setMaxAge(-1)方法的描述中,正确的是()A: 表示通知浏览器保存这个Cookie信息B: 表示通知浏览器立即删除这个Cookie信息C: 表示当浏览器关闭时,Cookie信息会被删除D: 以上说法都是错误的2.Tomcat服务器的默认会话超时时间是()A: 30秒B: 30分钟C: 30毫秒D: 30小时3.下面选项中,用于强制使Session对象无效的方法是()A: request. invalidate ();B: session. validate ();C: response. invalidate ();D: session. invalidate ();4.下面选项中,当存在Session对象直接返回,否则返回null的方法是()A: request.getSession();B: request.getSession(true);C: request.getSession(false);D: response.getSession();5.下列选项中,能够用于获取客户端所有cookie对象的方法是()A: List cookies = request.getCookies();B: Cookie[] cookies = request.getCookies();C: List cookies = response.getCookies();D: Cookie[] cookies = response.getCookies();四、简答1.简述什么是会话技术?会话过程类似于生活中的打电话过程,它指的是一个客户端(浏览器)与Web 服务器之间连续发生的一系列请求和响应过程。
关于Session过期和失效20:02:47 Session虽然我们经常在⽤,但以前对此理解不深,今天特别整理如下: 1.什么是Session?session其实就是⼀个Map,【键=值】对,通过session.getAttribute("name");获得session中设置的参数。
2.session的过期时间是从什么时候开始计算的?是从⼀登录就开始计算还是说从停⽌活动开始计算? 从session不活动的时候开始计算,如果session⼀直活动,session就总不会过期。
从该Session未被访问,开始计时,⼀旦Session被访问, 计时清零。
3.设置session的失效时间 a)web.xml中 <session-config> <session-timeout>30</session-timeout> </session-config> b)在程序中⼿动设置 session.setMaxInactiveInterval(30 * 60); //设置单位为秒,设置为-1永不过期 c)tomcat也可以修改session过期时间,在server.xml中定义context时采⽤如下定义: <Context path="/livsorder"docBase="/home/httpd/html/livsorder" defaultSessionTimeOut="3600"isWARExpanded="true" isWARValidated="false" isInvokerEnabled="true" isWorkDirPersistent="false"/> 4.如何判断session是否过期 a)以前是根据 if(session.getAttribute('user')==null)判断是否为空 b) 如下为看到的⼀个帖⼦,判断session不为空的好⽅法: request.getSeesion(boolean)这个⽅法⾥⾯传了⼀个boolean值。
java session的用法(一)Java Session的用法Java中的Session是一种用于在Web应用程序中跟踪用户会话的机制。
它可以用来存储和检索用户的信息,以便在不同的页面之间共享数据。
本文将介绍一些Java Session的常见用法。
创建Session对象在Java中,可以通过以下方式来创建Session对象:1.使用()方法:这是最常见的创建Session对象的方式。
它会检查请求中是否存在Session,如果存在则返回该Session对象,否则会创建一个新的Session对象。
2.使用(true)方法:与上述方法相同,如果不存在Session对象,则会创建一个新的Session对象返回。
3.使用(false)方法:该方法会检查请求中是否存在Session,如果存在则返回该Session对象,如果不存在则返回null。
HttpSession session = (); // 创建Session对象设置和获取Session属性Session对象可以用来存储和获取用户的数据。
下面是一些常用的设置和获取Session属性的方法:设置Session属性可以使用(String name, Object value)方法来设置Session 属性,其中name为属性名,value为属性值。
("username", "John"); // 设置Session属性获取Session属性可以使用(String name)方法来获取Session属性的值,其中name为属性名。
String username = (String) ("username"); // 获取Se ssion属性Session的超时设置Session对象可以设置一个超时时间,用于控制Session的有效时间。
当用户在一定时间内没有与服务器进行交互时,Session会自动失效。
session过期时间设置说明一.系统session配置说明针对承保(prpall)、双核(undwrt)系统中,有两个配置文件可以设置session的过期时间分别是web.xml和weblogic.xmlWeb.xml中配置<session-config><session-timeout>60</session-timeout></session-config>时间单位是一分钟,并且只能是整数,如果是零或负数,那么会话就永远不会超时。
此例表示Session将在60分钟后过期weblogic.xml中设置的TimeoutSecs属性值。
Weblogic.xml中配置<session-param><param-name>TimeoutSecs</param-name><param-value>1800</param-value></session-param>时间单位是一秒钟,表示1800秒后失效。
1.如果两个配置文件中都有配置,且Weblogic.xml中配置的秒数必须可以被60整除,(如60,120等)。
则按照时间最小的那个为准。
2.如果两个配置文件中都有配置,且Weblogic.xml中配置的秒数必须不可以被60整除(如,45,90等)。
则以web.xml设置的时间为准。
3.如果web.xml文件中没有设置,且Weblogic.xml中有配置。
则按照Weblogic.xml 的设置为准。
4.为保证session的唯一性,在weblogic环境下,建议只在weblogic.xml中设置。
防止出现冲突。
二.疑问1.web.xml,weblogic.xml同时配置时,为什么会是以时间小的为准?暂时无解。
2.对应的weblogic.xml 必须配置为分钟的整数倍?如web=2m weblogic=90s,最终为以web为准。
session超时Session超时一、介绍当用户在网站或应用程序上进行登录后,服务器会为其分配一个唯一的会话ID。
该会话ID通常会在一段时间内保持有效,以便用户可以在一段时间内持续使用网站或应用程序而无需重新登录。
然而,由于诸多因素的影响,会话可能会在一段时间后过期,这就被称为会话超时或session超时。
会话超时可以是网站或应用程序设计的一种安全策略来保护用户的隐私和减少资源的浪费。
二、原因1. 长时间不活动:如果用户在一段时间内没有与服务器进行任何交互活动,服务器通常会主动终结该会话,以防止未经授权访问。
2. 安全性考虑:在某些情况下,会话超时可以作为一种安全性措施,以减少未经授权访问的可能性。
例如,当用户忘记注销时,超时会话可以防止他人访问用户的帐户。
3. 资源管理:对于拥有大量同时在线用户的网站或应用程序,会话超时可以帮助减少服务器资源的消耗。
通过释放长时间不活动用户的会话,可以为其他活跃用户腾出资源,以提高系统的整体性能。
三、设置会话超时时间会话超时时间的设置因网站或应用程序的需求而异。
以下是设置会话超时时间的一些常见方法:1. 配置文件设置:大多数网站或应用程序会将会话超时时间配置在其相应的配置文件中。
通过更改配置文件中的参数,管理员可以轻松地调整会话超时时间。
2. 代码设置:网站或应用程序的开发人员可以在其代码中显式设置会话超时时间。
这通常会在用户登录后的关键位置进行设置。
3. 服务器设置:某些服务器允许管理员直接在服务器级别设置会话超时时间。
这种设置是全局的,适用于服务器上的所有网站或应用程序。
四、会话超时对用户的影响会话超时可能对用户造成以下影响:1. 需要重新登录:一旦会话超时,用户可能需要重新输入他们的凭据和登录信息以继续访问网站或应用程序。
这可能会导致用户的不便和时间浪费。
2. 丢失数据:如果用户在会话超时之前没有保存他们的工作或数据,那么这些数据可能会丢失。
这可能对用户造成困扰,特别是在他们进行了复杂的操作或提交了重要的信息时。
session存储规则摘要:1.什么是session2.session 的存储规则3.session 的优缺点4.session 的应用场景正文:一、什么是sessionSession(会话)是一种在客户端和服务器之间进行数据交互的方式。
在Web 开发中,Session 用于跟踪用户在访问网站期间的活动,以便在需要时,服务器可以为用户提供更加个性化的服务。
Session 通常与Cookie 一起使用,以记录用户的偏好和其他相关信息。
二、session 的存储规则Session 的存储规则包括以下几个方面:1.存储方式:Session 数据可以存储在服务器内存中,也可以存储在服务器的硬盘上,或者存储在数据库中。
2.存储时间:Session 可以在用户会话期间一直保持有效,也可以在指定的时间后自动失效。
失效时间可以根据需要进行设置。
3.存储键:Session 的数据可以使用键值对进行存储,其中键是用于访问和更新Session 数据的标识符,值是实际存储的数据。
4.存储限制:Session 的存储空间是有限的,因此需要合理设置Session的大小,以防止服务器内存不足导致网站运行异常。
三、session 的优缺点Session 的优点包括:1.可以跟踪用户在网站中的活动,为用户提供更加个性化的服务。
2.可以实现用户身份验证,确保只有经过授权的用户才能访问受保护的资源。
3.可以在多个页面之间保持用户数据,实现数据传递。
Session 的缺点包括:1.会话数据存储在服务器上,可能导致服务器负担加重。
2.如果会话数据泄露,可能对用户隐私造成影响。
3.存在一定的安全隐患,如会话劫持等。
四、session 的应用场景Session 广泛应用于以下场景:1.用户登录验证:通过Session 存储用户的登录状态和相关信息,确保只有经过验证的用户才能访问受保护的资源。
2.购物车功能:在电子商务网站中,Session 可以用于保存用户添加到购物车中的商品信息,以便在结账时使用。
session过期的三种⽅法JavaWeb设置session失效时间的三种⽅式以及注意事项1、通过web容器配置2、通过项⽬中的web.xml中配置3、通过java代码动态配置4、优先级当⽤户登陆系统后,服务器会设置⼀个当前session失效的时间,以确保在⽤户长时间不与服务器交互,⾃动销毁session,退出登录,释放资源。
1、通过web容器配置 在web容器中设置,以Tomcat-9.0.16为例,在安装⽬录conf\web.xml⽂件中找到session-config元素,以下是默认配置: tomcat默认session超时时间为30分钟,可以根据需要修改,负数或0为永不失效。
需要注意这⾥时间单位为分钟,参数必须为整数。
由于在服务器中设置,则session设置的时间是根据服务器来计算的,⽽不是客户端。
所以如果是在调试程序,应该是修改服务器端时间来测试,⽽不是客户端。
2、通过项⽬中的web.xml中配置在项⽬的web.xml中配置,以Eclipse for JavaEE为例,在WebContent\WEB-INF\lib⽂件夹下打开web.xml(如没有则⼿动创建)同样,时间单位为分钟,这⾥表⽰session在创建后10分钟后失效3、通过java代码动态配置 session.setMaxInactiveInterval(10) ; //设置⾮活跃间隔时间 setMaxInactiveInterval(int second)不同于以上两种⽅法,并且有⼏个注意点: (1)时间单位为秒 (2)此⽅法表⽰当前session在指定时间内若没有与服务器发⽣任何交互后失效 (3)期间⽤户的任何活动都将刷新session的失效时间,例如在10秒内⽤户刷新页⾯将重新计算失效时间4、优先级如果上述三种⽅法都设置了,那么优先级按照从⾼到低:代码设置 > 项⽬web.xml设置 > 容器web.xml设置(3>2>1)。
设置Session永不过期,Session有效时间的问题
保持Session的方法:有人说设session.timeout=-1,
或小于0的数。
这种方法肯定是不行的,session计算时间
以分钟为单位,必须是大于等于1的整数。
又有人说设session.timeout=99999。
这种同样不行,session有最大时间限制。
我经过测试发现最大值为24小时,也就是说你最
大可以session.timeout=1440,1441都是不可以有,呵呵。
本人测试环境:win2003+IIS6.0+ASP3.0。
所以想通过设session.timeout的过期时间让session永不过期是不可能的。
写到Cookies里是比较好的方法,网上也有很多这样的教程,这里就不再说了!还有就是用在要保持session的页里设隐藏iframe每隔一段时间(这个时间小于session.timeout的
时间)把刷新一次frame里的空页面!实现方法如下:在要保持session页里加上:<iframe width=0 height=0
src="/blog/SessionKeeper.asp">
</iframe>同目录下建一下SessionKeeper.asp的文件。
<html>
<head>
<meta http-equiv="Refresh"
content="900000;url=sessionKeeper.asp">
<!--每隔900秒刷新一下自己,为了和服务器通讯一下,保持session不会丢-->
</head>
</html>这种方法还是比较长见的,另外还有一种和上面类似的方法,不过他不是用meta自动刷新嵌套的iframe的方法。
他是用
javascript:window.setTimeout("functionname()",10000);第隔一段时间时间自动调用一个函数的方法,当然函数里还是要去连接一个空的文件。
具体方法如下:在要保持session 面里加上:<script id=Back
language=javascript></script><script
language=javascript>
function keepsession(){
document.all["Back"].src="/blog/SessionKeeper.asp?Rand Str="+Math.random();
//这里的RandStr=Math.random只是为了让每次back.src 的值不同,防止同一地址刷新无效的情况
window.setTimeout("keepsession()",900000); //每隔900秒调用一下本身
}
keepsession();
</script>这样同一目录下建一个空内容的sessionKeeper.asp就文件就可以了!。