session超时,session超时怎么解决
jetty.xml设置session超时时间
设置方法如下:
1.在web容器中设置(以tomcat为例):在tomcat-7.0\conf\web.xml中设置,以下是tomcat7.0中默认配置。tomcat默认session超时时间为30分钟,可以根据需要修改,负数或0为不限制session失效时间,这里要注意这个session设置的时间是根据服务器来计算的,而不是客户端。所以如果在调试程序,应该是修改服务器端时间来测试,而不是客户端。
2.在工程的web.xml中设置:。
3.通过java代码设置:session.setMaxInactiveInterval(30*60);//以秒为单位,即在没有活动30分钟后,session将失效。
Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点 [2] 。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。
怎么设置session超时时间
以下是设置session时间的3个方法:
1. 在tomcat——conf——servler.xml文件中定义:
Context path="/test" docBase="/test"
defaultSessionTimeOut="3600" isWARExpanded="true"
isWARValidated="false" isInvokerEnabled="true"
isWorkDirPersistent="false"/
defaultSessionTimeOut="3600"
2. 项目所在目录下的 web.xml中定义:
session-config
session-timeout20/session-timeout
/session-config
3. 在程序中定义:
session.setMaxInactiveInterval(30*60);
设置单位为秒,设置为-1永不过期

Cookie的过期和Session的超时有什么区别?
Cookie的过期和Session的超时(过期),都是对某个对象设置一个时间,然后采用轮训机制(或者首次访问时)检查当前对象是否超时(当前对象会保存一个开始时间),如果超时则进行移除。
cookie保存在浏览器中,不安全。而session是保存在服务端的。cookie的生命周期很长,而session很短,一般也就几十分钟。
cookie是保存在客户端,session保存在服务器端,cookie保存着session相关信息。
如果cookie没有超时,那么浏览器每次请求都会带上该cookie信息,服务器端根据cookie信息从session缓存中获取相对应的session。这两个信息有一个超时,用户连接即宣告关闭。
session超时怎么设置配置文件超时跳转登陆页面
首先需要在web.xml中设置项目中session超时时间,通常都是半小时:
session-configsession-timeout30/session-timeout/session-config;
之后设置监听器(Linstener),用来监听登录时候的用户名和密码session是否还存活,如果不存活的话,直接跳转到登录页面。
1、不变地址栏:request.getRequestDispatcher("url").forward(request, response);
2、改变地址栏:response.sendRedirect("url");
session过期怎么恢复
如果用户未操作的「长时间」超过了服务器配置的session超时时间,并导致session失效,那么我们延长session的超时时间,让用户原来的「长时间」与超时时间相比,变得不「长」,就可以解决。
如果用户是长时间「未操作」导致session失效,那么我们想办法产生「操作」,让用户每隔一小段时间就「操作」一次,与服务器产生交互,那么session自然也不会失效。
一般情况下下,我们首先想到的是,通过改变服务器的配置,延长服务器的session超时时间。例如,在Tomcat服务器的web.xml文件中有如下节点内容:30这里的30表示session的超时时间,单位为分钟,如果用户登录后在30分钟内没有与服务器交互,那么当前用户的session将失效。
我们可以配置一个更大的数值(比如60),就可以延长session的超时时间,如果将该值改为0或负数的话,则表示session永不失效。
不过在实际的工作应用中,一味地上调session的超时时间设置并不怎么常见,大多数需要实现该功能的网站都将解决问题的焦点集中在第二条思路上。例如:一些在线网站均采用定时刷新页面的方法来防止session超时。
浏览网页老是说session超时
Session对象
该对象在ASP使用中占相当大的比例。由于网页是一种无状态程序,无法得知用户浏览状态。在ASP中,通过Session对象来记录使用者私有的数据变量,以作为用户再次对服务器提出要求时做确认,用户在程序的Web页面之间跳转时,存在Session对象中的变量将不会消失。
这些真的是很重要的功能,尤其是有会员的系统必须要用到的。像是会员的登入账号、时间、状态以及许许多多该记录的实时数据(如购物系统记录使用者的购物篮内的商品),这些信息属于各使用者私人所需要,通常开发者都是使用 Session 记录处理。
在ASP中的Session是使用Cookies构成,服务器将所有的Session内记录的数据,以Cookies的方式传至用户的浏览器。通常一般浏览器会将这些Cookies存起来,每当使用者点选连结,再次与服务器做联机时,浏览器就会把这些Cookies传回Server供做处理:这即是Session的运作原理。由此可知会话状态Session仅在支持cookie的浏览器中保留,如果客户关闭了Cookie 选项Session也就不能发挥作用了。
一、Session.SessionID
SessionID 属性返回用户的会话标识。在创建会话时,服务器会为每一个会话生成一个单独的标识,会话标识以长整形数据类型返回。在很多情况下 SessionID 可以用于 WEB 页面注册统计。
利用该属性可以解决一种对用户的控制问题。该问题的主要功能就是,针对某个网站的一个模块,当一个会员登录后正在看此模块时,另一个人用同样的会员名登录,就不能浏览这个模块:也就是说一个会员名同时只能一个人浏览此模块。
通过用会员名(假设为UserID,唯一)和SessionID来实现了控制。当会员登录时,给这个会员一个Session记录登录状态如:Session("Status")="Logged",同时把这个会员的Session.SessionID写入数据库。当他要浏览此模块时,先判断其是否登录,若已经登录再判断它的SessionID是否与数据库记录的相同,如果不同则不能访问。
这样,当另一个用户用相同的会员名登录时,那么数据库中记录的就是新的SessionID,前者访问此模块时就不能通过检查。这就实现了一个会员名同时只能一个人浏览某个模块。这个功能在一些收费网站有很有特别作用,它防止了一个会员名给多个人浏览的问题,为公司保障了利益。
%=Session.SessionId%
是单独生成的唯一ID标识,可刷新调试。
二、Session.TimeOut
该属性设置的Session的最大间隔时间。间隔时间是指客户器端从最近一次向Web服务器提出要求,到下一次向Web服务器提出要求的时间。可以理解为:如果用户在该超时时限之内不刷新或请求网页,则该会话将终止。Timeout 属性是以分钟为单位,为该应用程序的Session对象指定超时时限的,一般默认为20分钟。这在网吧等公共场所,登录个人信息页而忘记关闭窗口时,显得比较重要(至少可以把时间设短些)。
%Session.TimeOut=10%
以上SessionId、TimeOut属于Session对象的两个属性,下面看该对象的一个方法Abandon
三、Session.Abandon
该方法是Session对象的唯一方法,可以清除Session对象,用来消除用户的Session对象并释放其所占的资源。当然你如果没有明确调用Abandon方法,一旦会话超时,服务器也会将删除这些对象并释放资源。
下面就用两个页的程序来认识Session对象以及Abandon方法的利用。
1,login.asp
%
'是提取url中变量loginout的值是否为true,若为真,就执行Session.Abandon()。
if Request.QueryString("loginout")="true" then
Session.Abandon()
end if
'只有在当点击了submit按钮的前提下,再来判断提取的东西都不为空,则建立Session对象。
submitname=request.form("submit1")
if submitname="submit" then
if Request.Form("name")"" and Request.Form("pwd")"" then
Session("name")=Request.Form("name")
Session("pw")=Request.Form("pwd")
end if
end if
%
%
'如果Session("name")不为空,则显示Session("name")的值,并且做一个到info.asp的链接。
if Session("name")"" then
response.write("你的name值是:"Session("name"))
response.write("bra href='info.asp'显示你的资料/a")
else
'否则,即Session("name")为空不存在,则显示表单用以输入建立Session的平台。
%
form action="login.asp" method="post"
姓名:input type="text" name="name"br
密码:input type="password" name="pwd"br
input type="submit" value="submit" name="submit1"
/form
!--同样做了一个到info.asp的链接。--
a href="info.asp"显示你的资料/a
%end if%
注意Session("name")为空和不为空的时候,都做了一个到info.asp的链接,具体调试结果如何,再来看info.asp的内容。
2,info.asp
%
'如果session对象值为空则跳转到login.asp
if session("name")="" then
Response.Redirect("login.asp")
'否则就显示个人信息
else
Response.Write("你的姓名:"session("name")"br")
Response.Write("你的密码:"session("pw")"br")
end if
%
a href="login.asp"返回/a
a href="login.asp?loginout=true"退出/a
可以看出来,info.asp页面内容的显示其实是需要条件的。那就是必须得有一个session值的存在,这样才可以显示具体的信息。这在登录系统中运用得比较多。
你可以把login.asp想象成一个登录窗口,当然我的这个比较简单(只要输入用名和密码就生产Session了),实际情况是:判断输入的用名和密码是否和数据库中的用名和密码吻合,如果正确吻合才生成Session的。然info.asp页面的作用刚好可以做为一权限页面,因为进入该页需要Session,而Session的产生是确保用名密码正确的。
所以当一开始出现表单窗口时,你点login.asp链接是打不开的,只有当提交了表单生成了Session后才能进入。这正是登录系统的精髓所在,Do You Know?:)
四、Session_OnStart
Session_OnStart属于Session对象的一类事件。它是在服务器创建新会话时发生的。服务器在执行请求的页之前先处理该脚本。Session_OnStart 事件是设置会话期变量的最佳时机,因为在访问任何页之前都会先设置它们。
对象的例程每一次启动时触发Session_OnStart事件,然后运行Session_Onstart事件的处理过程。也就是说,当服务器接收到应用程序中的URL的HTTP请求时,触发此事件,并建立一个Session对象。
当然说到Session_OnStart事件就不能不谈到一个文件Global.asa(P.S:我打算把该文件和Chat程序放在一起说的,所以现在先不作过多解释)
具体用法先透露,写在Global.asa文件内部
SCRIPT RUNAT=Server Language=VBScript
.......
Sub Session_OnStart
.......
End Sub
.......
/SCRIPT
五、Session_OnEnd
一看也就知道是Session对象的另一类事件了。当调用Session.Abandon方法时或者在TimeOut的时间内没有刷新,这会触发Session_OnEnd事件,然后执行里面的脚本。同样具体用法在后面将写的Global.asa文件专题中详细介绍到,简单语法如下:
SCRIPT RUNAT=Server Language=VBScript
.......
Sub Session_OnEnd
.......
End Sub
.......
/SCRIPT
最后,不知道大家有没有玩过这样的一个程序:很令人讨厌的,让你永远关不掉的程序页面。
只做程序调试,不要去作弄别人。
以下文件保存为bug.html
运行代码框
body onunload=javascript:window.open("bug.html")
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
发现该文件关不了了?(当然你要关闭,把源代码修改下)
那现在的要求是:计算关闭的次数,如果超过多少次就可以自行关闭,那下面就采用到session
以下文件保存为bug.asp
%if session("num") 2 then%
body onunload=javascript:window.open("bug.asp")
%session("num")=session("num")+1%
%else%
script
self.close()
/script
%end if%
呵呵,当你关闭三次以后,窗口就再也不弹出了。了解吧:)
以上就是对Session对象的系统学习。