搜档网
当前位置:搜档网 › 如何设置系统定时Session过期

如何设置系统定时Session过期

如何设置系统定时Session过期
如何设置系统定时Session过期

如何设置系统定时Session过期

第一步将系统参数配置维护作业中参数代号为IsEnabledSessionNotTimeOut的参数配置设置成N;

第二步将EasyFlow/EFNET下的Web.config文件中的Session时间设置成想要的时间,例如20分钟;

第三步设置IIS中站点Default Web Site的会话状态时间;

IIS7截图:

IIS6截图:

第四步设置IIS中EFNET站点的会话状态中的时间IIS7截图:

IIS6截图:

适用版本:EFNET

适用对象:CC(工作流) ,客户,代理商

asp中设置session过期时间方法总结

asp中默认session过期时间为20分钟,很多情况下不够,今天有客户要求很多就要重新登录了,所以准备了这篇文章,方便需要的朋友。 如果程序中没有设置session的过期时间,那么session过期时间就会按照IIS设置的过期时间来执行,IIS中session默认过期时间为20分钟,IIS中session时间可以更改时间设置要放在前面 例如 Session.Timeout=30 'SEESION有效时间为30分钟 Session("ID")=Rs("id") Session("Name")=Rs("Name") Session("Pass")=Rs("Pass" 利用Session.Timeout 属性设置超时时限 对于一个登录到ASP 应用程序的用户,如果用户在系统默认的时间内未进行其它任何操作,当设置的时间一到便自动撤销这个用户的Session,这样就可以防止系统的资源被浪费。Session 对象的TimeOut 属性可以用来设置“过期时间”,已分钟为单位,其设置格式为: 代码如下: Session.TimeOut=MaxTime 实例代码:(5.asp)页面,本实例说明如何控制会话的结束。 代码如下: <%@ language="vbscript" %> <% session.timeout=60 %> 控制会话的结束时间 <% who = Session.SessionID CurrentPage=Request.ServerVariables("SCRIPT_NAME") Response.AppendTolog who & ":" & CurrentPage Response.write "

你的会话标识为:" & who & "" Response.write "你当前访问的页面路径为:" & CurrentPage & "" if Session("I")="" then session("i")=1 else session("i")=session("i")+1 end if

Session对象失效的客户端解决方法

Session对象失效的客户端解决方法 魏莹李锋冯珊 问题的提出 ASP(Active Server Pages)技术的Session对象用于存储用户在对话期间的私有信息。当前用户的Session对象中定义的变量和对象能在页面之间共享,但是不能为应用中其他用户所访问,因此在用ASP开发网络应用程序时,可以利用Session对象保存和跟踪用户的状态信息。 Session对象有一个十分重要的属性:Timeout,它用于设置在会话资源被释放前,会话对象所能保持非活动状态的时间(默认值为20分钟)。当Timeout属性设置的时间值耗尽后,会话资源将被释放。通过Timeout属性破坏Session对象,避免了Session对象在服务器中无限制地产生,保护了服务器资源。但是,在实际网络开发中,常常遇到由于Session对象失效,用户状态信息丢失而导致应用流程无法正常完成的问题。 虽然利用Timeout属性释放资源的策略是出于保护服务器的目的,但是Session对象不可预知的失效性,却成为开发应用程序的一个弊病。因而在实际应用程序的开发中,必须解决Session对象失效的问题。 传统的解决方法 现有的解决方法都是采用服务器端方法解决Session对象失效问题。典型的处理方法分为两大类:失效前的处理和失效后的处理。 失效前的处理是指在Session对象尚未失效之前,对变量进行转存等处理,做到防患于未然。典型的解决方法是在应用程序中设定一个定时器,在Session对象失效前5分钟触发定时器,然后重新设置Session对象的各个变量和对象。由于必须在服务器端实时维护该定时器,并且必须保证该段程序在整个会话过程中处于激活状态,所以采用这种方法增加了服务器的额外负载。 失效后的处理是指在Session对象失效后,立即提示用户进行处理。典型的解决方法是在Session对象失效后,在服务器端保存断点,并提示用户重新登录,继续完成工作。这种方法实现简单,但是往往因为断点的不可完全自动恢复性,以及重新登录过程的复杂性,而受到最终用户的抱怨和指责。 针对以上两类解决方案的缺陷,笔者在编程实践中结合Cookie对象的特性,采用Session 对象与Cookie对象在客户端联合存取会话级变量的方法,既避免了对服务器资源的额外需求,又解决了断点不可自动恢复的问题,而且还免去了重新登录的麻烦。 新的解决方法 Cookie对象是用来存储有关当前用户数据的小信息包,它可以在浏览器和Web服务器之间传递。在Web应用中,Cookie提供了一种用于跟踪、记录每个用户位置的机制。Cookie 最常见的用处之一,就是保存一个Web应用中最后一次被访问的网络页面的时间以及日期或被访问的网址。 通常,Cookie对象在客户端Windows系统目录下Cookies子目录中以文件形式存储。存储在Cookie对象中的信息数据能够被保存较长时间,所以,可以将会话级变量备份在Cookie 对象中,在Session对象失效后,通过检索并利用Cookie对象中的信息来自动恢复断点。Cookie对象具有如下几个属性: ●Expires:设定Cookie对象到期的日期; ●Domain:将Cookie对象的传送确定为仅由Domain属性确定的成员; ●Path:确定Cookie对象传送路径;

Java基础-关于session的详细解释

Java基础-关于session的详细解释 session, Java, 基础, 解释 一、术语session 在我的经验里,session这个词被滥用的程度大概仅次于transaction,更加有趣的是transaction与session在某些语境下的 含义是相同的。 session,中文经常翻译为会话,其本来的含义是指有始有终的一系列动作/消息,比如打电话时从拿起电话拨号到挂断电话这中间的一系列过程可以称之为一个session。有时候我们可以看到这样的话“在一个浏览器会话期间,...”,这里的会话一词用的就是其本义,是指从一个浏览器窗口打开到关闭这个期间①。最混乱的是“用户(客户端)在一次会话期间”这样一句话,它可能指用户的一系列动作(一般情况下是同某个具体目的相关的一系列动作,比如从登录到选购商品到结账登出这样一个网上购物的过程,有时候也被称为一个transaction),然而有时候也可能仅仅是指一次连接,也有可能是指含义①,其中的差 别只能靠上下文来推断②。 然而当session一词与网络协议相关联时,它又往往隐含了“面向连接”和/或“保持状态”这样两个含义,“面向连接”指的是在通信双方在通信之前要先建立一个通信的渠道,比如打电话,直到对方接了

电话通信才能开始,与此相对的是写信,在你把信发出去的时候你并不能确认对方的地址是否正确,通信渠道不一定能建立,但对发信人来说,通信已经开始了。“保持状态”则是指通信的一方能够把一系列的消息关联起来,使得消息之间可以互相依赖,比如一个服务员能够认出再次光临的老顾客并且记得上次这个顾客还欠店里一块钱。这一类的例子有“一个TCP s ession”或者“一个POP3 session”③。 而到了web服务器蓬勃发展的时代,session在web开发语境下的语义又有了新的扩展,它的含义是指一类用来在客户端与服务器之间保持状态的解决方案④。有时候session也用来指这种解决方案的存储结构,如“把xxx保存在session里”⑤。由于各种用于web开发的语言在一定程度上都提供了对这种解决方案的支持,所以在某种特定语言的语境下,session也被用来指代该语言的解决方案,比如经常把Java 里提供的javax.servlet.http.HttpSession简称为session⑥。 鉴于这种混乱已不可改变,本文中session一词的运用也会根据上下文有不同的含义,请大家注意分辨。 在本文中,使用中文“浏览器会话期间”来表达含义①,使用“session机制”来表达含义④,使用“session”表达含义⑤,使用 具体的“HttpSession”来表达含义⑥

session过期时间设置word精品文档10页

在一般系统登录后,都会设置一个当前session失效的时间,以确保在用户没有使用系统一定时间后,自动退出登录,销毁session。 具体设置很简单: 在主页面或者公共页面中加入: session.setMaxInactiveInterval(900); 参数900单位是秒,即在没有活动15分钟后,session将失效。 这里要注意这个session设置的时间是根据服务器来计算的,而不是客户端。所以如果是在调试程序,应该是修改服务器端时间来测试,而不是客户端。 在一般系统中,也可能需要在session失效后做一些操作, (1)控制用户数,当session失效后,系统的用户数减少一个等,控制用户数在一定范围内,确保系统的性能。 (2)控制一个用户多次登录,当session有效时,如果相同用户登录,就提示已经登录了,当session失效后,就可以不用提示,直接登录了 那么如何在session失效后,进行一系列的操作呢? 这里就需要用到监听器了,即当session因为各种原因失效后,监听器就可以监听到,然后执行监听器中定义好的程序,就可以了。 监听器类为:HttpSessionListener类,有sessionCreated和sessionDestroyed两个方法

自己可以继承这个类,然后分别实现。 sessionCreated指在session创建时执行的方法 sessionDestroyed指在session失效时执行的方法 给一个简单的例子: public class SessionListener implements HttpSessionListener{ public void sessionCreated(HttpSessionEvent event) { HttpSession ses = event.getSession(); String id=ses.getId()+ses.getCreationTime(); https://www.sodocs.net/doc/dd2717131.html,erMap.put(id, Boolean.TRUE); //添加用户 } public void sessionDestroyed(HttpSessionEvent event) { HttpSession ses = event.getSession(); String id=ses.getId()+ses.getCreationTime(); synchronized (this) { https://www.sodocs.net/doc/dd2717131.html,ERNUM--; //用户数减一 https://www.sodocs.net/doc/dd2717131.html,erMap.remove(id); //从用户组中移除掉,用户组为一个map } }

session应用详解

Session 对象 可以使用Session 对象存储特定用户会话所需的信息。这样,当用户在应用程序的Web 页之间跳转时,存储在Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。 当用户请求来自应用程序的Web 页时,如果该用户还没有会话,则Web 服务器将自动创建一个Session 对象。当会话过期或被放弃后,服务器将终止该会话。 Session 对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在Session 对象中。有关使用Session 对象的详细信息,请参阅“ASP 应用程序”部分的“管理会话”。 注意会话状态仅在支持cookie 的浏览器中保留。 语法 Session.collection|property|method 集合 Contents 包含已用脚本命令添加到会话中的项目。 StaticObjects 包含通过 标记创建的并给定了会话作用域的对象。 属性 CodePage 将用于符号映射的代码页。 LCID 现场标识。 SessionID 返回用户的会话验证。 Timeout 应用程序会话状态的超时时限,以分钟为单位。 方法 Abandon 该方法破坏Session 对象并释放其资源。 事件 global.asa 文件中声明下列事件的脚本。 Session_OnEnd Session_OnStart 有关以上事件及global.asa 文件的详细信息, 请参阅Global.asa 参考. 注释 您可以在Session 对象中存储值。存储在Session 对象中的信息在会话及会话作用域内有效。下列脚本演示两种类型的变量的存储方式。 <%

判断session是否过期

前一段时间有好几个问题,提到怎么判断session是否过期。 接触jsp已经很久了,但是还真没有想过这个问题,当时也就没有找到一个满意的答案给人家。 当时,我提到一个方法,就是实现HttpSessionListener接口,然后在sessionDestroyed()方法中执行一些操作,表示session要过期了,因为这个方法是session.invalidate()之前监听器调用的方法。这个判断的方法显然不能让人满意。 我当时问了些人,但是也没有得到一个准确的答案。 正好偶然间看到,request.getSeesion(boolean)方法,一下子让我恍然大悟。这个方法里面传了一个boo lean值,这个值如果是true,那么如果当前的request的session不可用,那么就创建新的会话,如果存在就返回当前的会话。如果参数是false,那么在request的当前会话不存在的时候就返回null。 这样我们就可以很容易的联想到这个所谓的request的当前会话是否存在和session过期的联系,所以我们就可以“近似地”认为session不存在就是session过期了,那么我们就可以很容易地判断session是否过期了。方法如下: if(request.getSession(false)==null) System.out.println("Session has been invalidated!"); else System.out.println("Session is active!"); 可能大家注意到我上面有一个“近似地”字眼,也就是说存在特别情况。 这个特殊情况就是第一次请求还没有创建会话的时候,那么用这个方法返回的仍然是null,原因我想大家应该是显然的。 以上是个人拙见,希望大家指正。 if(request.getSession(false)==null){ sessin = request.getSession(true); } 俺师傅一年前就用了,不过他去大公司了555555555555555 俺也没看明白,今看老兄一贴,茅塞顿开 真实“看一贴长一智谢谢啊” private boolean checkSession(HttpServletRequest request, HttpServletResponse response) { HttpSession session = request.getSession(false); String requestURI = request.getRequestURI(); String contextPath = request.getContextPath(); requestURI = requestURI.substring(contextPath.length());

session超时重新登录

1.首先在web.xml中配置过滤器: SessionFilter https://www.sodocs.net/doc/dd2717131.html,mon.web.SessionFilter SessionFilter *.sino SessionFilter *.jsp 2.SessionFilter.java文件 package https://www.sodocs.net/doc/dd2717131.html,mon.web; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import com.sinosoft.platform.system.model.SysUser; import com.sinosoft.platform.system.util.SystemUtil; import https://www.sodocs.net/doc/dd2717131.html,mon.ClientConfig; public class SessionFilter implements Filter { private FilterConfig fc = null; public void destroy() { }

Java中设置session的详细解释

Java中设置session的详细解释 一、术语session 在我的经验里,session这个词被滥用的程度大概仅次于transaction,更加有趣的是transaction和session在某些语境下的含义是相同的。 session,中文经常翻译为会话,其本来的含义是指有始有终的一系列动作/消息,比如打电话时从拿起电话拨号到挂断电话这中间的一系列过程能称之为一个session。有时候我们能看到这样的话“在一个浏览器会话期间,...”,这里的会话一词用的就是其本义,是指从一个浏览器窗口打开到关闭这个期间①。最混乱的是“用户(客户端)在一次会话期间”这样一句话,他可能指用户的一系列动作(一般情况下是同某个具体目的相关的一系列动作,比如从登录到选购商品到结账登出这样一个网上购物的过程,有时候也被称为一个transaction),然而有时候也可能仅仅是指一次连接,也有可能是指含义①,其中的差别只能靠上下文来推断②。 然而当session一词和网络协议相关联时,他又往往隐含了“面向连接”和/或“保持状态”这样两个含义,“面向连接”指的是在通信双方在通信之前要先建立一个通信的渠道,比如打电话,直到对方接了电话通信才能开始,和此相对的是写信,在你把信发出去的时候你并不能确认对方的地址是否正确,通信渠道不一定能建立,但对发信人来说,通信已开始了。“保持状态”则是指通信的一方能够把一系列的消息关联起来,使得消息之间能互相依赖,比如一个服务员能够认出再次光临的老顾客并且记得上次这个顾客还欠店里一块钱。这一类的例子有“一个TCP session”或“一个POP3 session”③。 而到了web服务器蓬勃发展的时代,session在web研发语境下的语义又有了新的扩展,他的含义是指一类用来在客户端和服务器之间保持状态的解决方案④。有时候session也用来指这种解决方案的存储结构,如“把xxx保存在session里”⑤。由于各种用于web研发的语言在一定程度上都提供了对这种解决方案的支持,所以在某种特定语言的语境下,session 也被用来指代该语言的解决方案,比如经常把Java里提供的javax.servlet.http.HttpSession简称为session⑥。 鉴于这种混乱已不可改动,本文中session一词的运用也会根据上下文有不同的含义,请大家注意分辨。 在本文中,使用中文“浏览器会话期间”来表达含义①,使用“session机制”来表达含义④,使用“session”表达含义⑤,使用具体的“HttpSession”来表达含义⑥ 二、HTTP协议和状态保持 HTTP协议本身是无状态的,这和HTTP协议本来的目的是相符的,客户端只需要简单的向服务器请求下载某些文件,无论是客户端还是服务器都没有必要纪录彼此过去的行为,每一次请求之间都是独立的,好比一个顾客和一个自动售货机或一个普通的(非会员制)大卖场之间的关系相同。

session过期时间设置说明

session过期时间设置说明 一.系统session配置说明 针对承保(prpall)、双核(undwrt)系统中,有两个配置文件可以设置session的过期时间 分别是web.xml和weblogic.xml Web.xml中配置 60 时间单位是一分钟,并且只能是整数,如果是零或负数,那么会话就永远不会超时。 此例表示Session将在60分钟后过期 weblogic.xml中设置的TimeoutSecs属性值。 Weblogic.xml中配置 TimeoutSecs 1800 时间单位是一秒钟,表示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为准。 web=3m weblogic=120s 以 weblogic为准 暂时无解。 3.关于“WEB-INF/config/appconfig/SysConstConfig.xml”中的session时效时间。 从目前情况看, SysConstConfig.xml 这个应该没有使用;那么就是 web.xml 与 weblogic.xml 这两个的配置用谁的问题了。 按网上说法,对应的优先级应该是:自定义xml配置的session>web.xml>weblogic.xml; 个人理解为:自定义的配置最高的原因是因为,我们程序实现判断session时去读取了这个时间;对于web.xml>weblogic.xml,从上述的测试过程中发现并不是如此。 三.配置session方式 WebLogic如何设置session超时时间 1 web.xml 设置WEB应用程序描述符web.xml里的元素。这个值以分钟为 单位,并覆盖weblogic.xml中的TimeoutSecs属性 54 此例表示Session将在54分钟后过期 当设置为-2,表示将使用在weblogic.xml中设置的 TimeoutSecs这个属性值。 当设置为-1,表示Session将永不过期,而忽略在 weblogic.xml中设置的TimeoutSecs属性值。 该属性值可以通过console控制台来设置 2 weblogic.xml 设置WebLogic特有部署描述符weblogic.xml的元素的 TimeoutSecs属性。这个值以秒为单位 TimeoutSecs 3600

设置Session永不过期,Session有效时间的问题

设置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();

WebLogic如何设置session超时时间

WebLogic如何设置session超时时间 1 web.xml 设置WEB应用程序描述符web.xml里的元素。这个值以分钟为 单位,并覆盖weblogic.xml中的TimeoutSecs属性 54 此例表示Session将在54分钟后过期 当设置为-2,表示将使用在weblogic.xml中设置的 TimeoutSecs这个属性值。 当设置为-1,表示Session将永不过期,而忽略在weblogic.xml中设置的TimeoutSecs属性值。 该属性值可以通过console控制台来设置 2 weblogic.xml 设置WebLogic特有部署描述符weblogic.xml的元素的 TimeoutSecs属性。这个值以秒为单位

TimeoutSecs 3600 默认值是3600秒 3,jsp中控制 session.setmaxinactiveinterval(7200); session是默认对象,可以直接引用,单位秒s 4,servlet中控制 httpsession session = request.getsession(); session.setmaxinactiveinterval(7200); 单位秒s 在weblgoic的console中:xxDomain ->Servers->xxServer->Protocols->HTTP 中有一个关于Post Timeout的配置,但这个参数一般使用默认值即可 一般是通过Services-->JDBC-->Connection

sessionState失效配置详解

sessionState失效配置详解 web Form 网页是基于HTTP的,它们没有状态,这意味着它们不知道所有的请求是否来自同一台客户端计算机,网页是受到了破坏,以及是否得到了刷新,这样就可能造成信息的丢失。于是,状态管理就成了开发网络应用程序的一个实实在在的问题。 在ASP中能够通过Cookie 、查询字符串、应用程序、会话(Session) 等轻易解决这些问题。现在在https://www.sodocs.net/doc/dd2717131.html,环境中,我们依然可以使用这些功能,并且功能更加强大。状态管理分为服务端和客户端两种情况,这里只是介绍服务端状态管理:与Application对象不同的是,https://www.sodocs.net/doc/dd2717131.html, 的Session 对象可以在IIS服务器或者工作进程重新启动时恢复启动前的状态而不丢失其中的数据。这是因为存储在Session中的所以信息都缺省的存储在一个作为Windows服务运行的状态服务器进程中。状态可以被序列化并以二进制形式保存在内存中。程序员可以悬着使用Microsoft Sql server数据库来存储数据。状态服务器服务和状态信息可以和web应用程序一起存在于同一台服务器上,也可以保存到外部的状态服务器上。为了指定如何存储信息,程序员可以在web.config文件中编写适当的配置。 https://www.sodocs.net/doc/dd2717131.html,会话状态模块在Web.config文件中标记下的 标记的mode属性来决定 该属性的四种可能的值:Off、Inproc StateServer 和SQLserver。 1 Inproc是缺省的设置 它允许“无Cookie”的会话,以及在服务器之外存储会话数据。https://www.sodocs.net/doc/dd2717131.html,会

Session和Cookie的作用以及实现

Session和Cookie的作用以及实现 最近学习Session和Cookie的总结,我发现好多做测试的朋友对这个的理解不是那么透彻;如果理解了Cookie和session的原理和使用,在我们的测试工作中,有很大的帮助;尤其是在接口测试,性能测试中。。。 我把下面的内容做成了一个pdf文档,有需要看的朋友,可以去百度云盘下载,地址在文章的最后: 内容如下: 一、为什么要用Cookie和Session? 很多时候客户端和服务器进行交互使用了HTTP协议,但是HTTP协议是无状态的;HTTP协议的请求过程,是基于TCP/IP 的,当客户端请求服务器,服务器处理后,进行响应,该过程是无状态的。 但是在有些时候是需要保存一些客户端的请求信息,识别客户端的某些状态,智能的、有针对性的去分析某些客户端的习惯。这些时候,就需要去记录客户端的连接状态,识别请求的状态等。所以为了解决类似的事情,就需要使用到了Cookie 和Session。 比如,使用Cookie的场景:有些网站有记住用户名的功能,当你勾这个的时候,下次进入该网站时,就会保存上一次登录的用户名;使用Seesion的场景:利用Seesion来验证用户是否已登录,利用Session来保存验证码。 二、Cookie和Session是什么? (1)Cookie:在客户端访问某个地址时,会将请求交到服务器进行处理,在发送请求的时候,浏览器会将页面的头部信息一并的交到服务器端进行处理。在处理的过程中,Cookie 在服务器端生成,在此同时,可以将一些需要保存的信息,存放到此Cookie 中。生成Cookie 对象时,需要确定具体的名称及具体的值,可以设置当前Cookie 的过期时间,设置过期时间后,就相当于持久化了Cookie 中的数据,此时的Cookie 会以之前的Cookie 名称,保存在客户端。 如果不设置过期时间,则当前Cookie 的生命期是浏览器会话期间,一旦关闭了该浏览器,当前的Cookie 就会不存在了,此时的Cookie 信息是保存在内存中。在服务器端,处理完后,会将生成的Cookie ,随着Http 响应,会在Http 响应头中,加上Cookie 信息,浏览器接受到响应后,会按照Http 响应头里的Cookie ,在客户端建立Cookie 。在下次客户进行请求的时候,Http 会附带着已经存储过的Cookie,一并发送到服务器。一个域,在客户端建立的所以Cookie 都是可以共享的,只要Cookie 没有过期。 (2)Session:Session 是在服务器端生成的,存储在服务器端,即存在内存中。可以对生成的Session 设置过期时间,如果不设置过期时间,默认的Session 过期时间是30 分钟(在不同的服务器中,它的过期时间略有不同,本文是以Tomcat 来说的)但是,Sesssion 的生成的同时,会生成一个与之相关联的的SessionID ,此SessionID 的存储是需要Cookie 来完成的。SessionID 是以名称为JSESSIONID,其值应该是一个既不会重复,又不容易被找到规律以仿造的字符串。SessionID会随着此次Http 响应,一并返回到客户端,并保存在客户端中。到当前请求再次发出后,该SessionID会随着Http 头部,传到服务器中,服务器依据当前SessionID 得到与之对应的Session. 其中:通过Cookie 的方式存储Session 状态,只是其中一种方式。如果客户端禁用了Cookie 的话,很多网站任然可以存储用户的信息。一种处理的方式是URL 重写,将SesseionID 直接附加在请求地址的后面。另一种处理的方式是,使用隐藏自动的方式。就是服务器自动的在表单中,添加一个隐藏字段,以便在表单提交时,将SesseionID 一起传到服务器,进行识别。 (3)总结下:Cookie是存在客户端的,比如我们电脑的本地文件中(设置的过期时间的话),在我本地的话(C:\Users\xxx\AppData\Roaming\Microsoft\Windows\Cookies): 也可以在浏览器中看(chrome): Session是存在服务器端的(我的apche也安装在本地的):

10分钟让你区分Session和Cookie区别

Session Session定义 一般被翻译为‘会话’,具体到Web中的Session指的就是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。因此从上述的定义中我们可以看到,Session实际上是一个特定的时间概念。 session工作原理 session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(来保存信息。 当客户端请求创建一个session的时候,服务器首先检查客户端请求里是否已包含了一个session标识session id,如果已包含一个session id则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来使用。 如果客户端请求不包含session id,则为此服务器创建一个session并且生成一个与此session相关联的session id。session id的值是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id将被在本次响应中返回给客户端保存。保存这个session id的方式可以采用cookie。一般这个cookie的名字都是类似于SEEESIONID。 比如: JSESSIONID=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764,它的名字就是JSESSIONID。 由于cookie可以被人为的禁止,必须有其他机制以便在cookie被禁止时仍然能够把session id传递回服务器。经常被使用的一种技术叫做URL重写。 就是把session id直接附加在URL路径的后面,附加方式也有两种: 1.一种是作为URL路径的附加信息,表现形式为http://...../xxx;jsessionid=ByOK ... 99zWpBng!-145788764 2.另一种是作为查询字符串附加在URL后面,表现形式为http://...../xxx?jsessionid=ByOK ... 99zWpBng!-145788764 这两种方式对于用户来说是没有区别的,只是服务器在解析的时候处理的方式不同,采用第一种方式也有利于把session id的信息和正常程序参数区分开来。 为了在整个交互过程中始终保持状态,就必须在每个客户端可能请求的路径后面都包含这个session id。 另一种技术叫做表单隐藏字段。就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器。这种技术现在已较少应用。 有一种一种误解:“只要关闭浏览器,session就消失了”。其实可以想象一下会员卡的例子,除非顾客主动对店家提出销卡,否则店家绝对不会轻易删除顾客的资料。对session 来说也是一样的,除非程序通知服务器删除一个session,否则服务器会一直保留,程序一般都是在用户做log off的时候发个指令去删除session。然而浏览器从来不会主动在关闭之前通知服务器它将要关闭,因此服务器根本不会有机会知道浏览器已经关闭。

设置Tomcat session有效期

设置Tomcat session有效期 1. 在server.xml中定义context时采用如下定义: 2. 在web.xml中通过参数指定: 30 其中30表示30分钟 3. 在程序中通过servlet api直接修改 HttpSession ses = request.getSession(); ses.setMaxInactiveInterval(10); 设置单位为秒,设置为-1永不过期。 4.在当前应用下的web.xml 文件中加入 30 其中30表示30分钟 附录: 1)超时时间的设定 tomcat的会话超时可以在多个级别上设置:tomcat实例级别、Web应用级别、servlet级别以及运行时Context代码级别。 较低级别的设定会覆盖较高级别的设定。 一般常用的是在前面两个级别上设置,分别在/conf/web.xml和/webapps/yourapp/WEB-INF/web.xml,形如:

Session&Cookie 笔试题及答案

String username = "1234567899"; String regex1 = "^[a-zA-Z0-9]{5,12}$"; String regex2 = "^\\w{1,}[@]\\w{1,}[.]\\w{1,}[.]?\\w{1,}$";//email 写法 String email = "^[a-zA-Z0-9_-]+[@][a-zA-Z0-9_-]+((.com)|(.net))$"; String regex4 = "^\\w{1,}(.com|.cn)$"; String regex3 = "^\\d{3,4}[| -]?\\d{7,8}$";//电话号码,空格不能在最后 String userReg = "^[a-zA-Z0-9_]{5,12}$"; // 用户名5-12位 字母数字,_ String numberReg = "^\\d{6,8}$"; // 6-8位数字 String fpReg = "^[0-9]+[.]?\\d*$"; String telReg = "^(\\d{1,3}[-| ]?)?" + "\\d{3,4}[-| ]?\\d{7,8}[-| ]?(\\d{3,4})?$"; servlet 一、cookie 机制和session 机制的区别 具体来说cookie 机制采用的是在客户端保持状态的方案,而session 机制采用的是在服务器端保持状态的方案。 同时我们也看到,由于在服务器端保持状态的方案在客户端也需要保存一个标识,所以session 机制可能需要借助于cookie 机制来达到保存标识的目的,但实际上还有其他选择。 二、会话cookie 和持久cookie 的区别 如果不设置过期时间,则表示这个cookie 生命周期为浏览器会话期间,只要关闭浏览器窗口,cookie 就消失了。这种生命期为浏览会话期的cookie 被称为会话cookie 。会话cookie 一般不保存在硬盘上而是保存在内存里。 如果设置了过期时间,浏览器就会把cookie 保存到硬盘上,关闭后再次打开浏览器,这些cookie 依然有效直到超过设定的过期时间。 存储在硬盘上的cookie 可以在不同的浏览器进程间共享,比如两个IE 窗口。而对于保存在内存的cookie ,不同的浏览器有不同的处理方式。 三、如何利用实现自动登录 当用户在某个网站注册后,就会收到一个惟一用户ID 的cookie 。客户后来重新连接时,这个用户ID 会自动返回,服务器对它[abc] a 、b 或 c (简单类) [^abc] 任何字符,除了 a 、b 或 c (否定) [a-zA-Z] a 到 z 或 A 到 Z ,两头的字母包括在内(范围) [a-d[m-p]] a 到 d 或 m 到 p :[a-dm-p](并集) [a-z&&[def]] d 、e 或 f (交集) [a-z&&[^bc]] a 到 z ,除了 b 和 c :[ad-z](减去) [a-z&&[^m-p]] a 到 z ,而非 m 到 p :[a-lq-z](减去) \d 数字:[0-9] \D 非数字: [^0-9] \s 空白字符:[ \t\n\x0B\f\r] \S 非空白字符:[^\s] \w 单词字符:[a-zA-Z_0-9] \W 非单词字符:[^\w]