每次请求Session不一致问题

每次请求Session不一致问题

问题描述:

如果在得到session时,发现每次得到的session都不一致,而代码和设置又都正确的情况下,很有可能就是cookie的设置有问题。

解决方法:

1、将cookie设置到最低状态,再次运行项目,会发现session已经一致了,此时可以继续

调整cookie的值。

解释:

因为每次浏览器访问服务器时,服务器都会产生一个唯一的session,并把这个session 返回给浏览器,同时服务器也会将此session保存。

浏览器在接受到session后,一般会存储在cookie中,当再次请求服务器时,会带上此session信息,服务器也就是通过此时提交的session来判断是否是同一客户端在操作。

如果将cookie的安全级别设置太高,相当于服务器每次返给客户端的session并没有进行存储,所以,再次请求时,将会重新生成session的值。

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

深入理解ServletJSP之Cookie和Session原理

由于H T T P协议的无状态特征,W e b应用中经常使用C o o k i e和S e s s i o n来保存用户在与系统交互过程中的状态数据。下面通过分析H T T P协议对C o o k i e和S e s s i o n的工作原理加以了解。 一、C o o k i e C o o k i e的含义是“服务器送给浏览器的甜点”,即服务器在响应请求时可以将一些数据以“键-值”对的形式通过响应信息保存在客户端。当浏览器再次访问相同的应用时,会将原先的C o o k i e通过请求信息带到服务器端。 下面的S e r v l e t展示了C o o k i e的功能。 ......... p u b l i c v o i d d o G e t(H t t p S e r v l e t R e q u e s t r e q u e s t,H t t p S e r v l e t R e s p o n s e r e s p o n s e) t h r o w s S e r v l e t E x c e p t i o n,I O E x c e p t i o n{ r e s p o n s e.s e t C o n t e n t T y p e("t e x t/h t m l"); P r i n t W r i t e r o u t=r e s p o n s e.g e t W r i t e r(); S t r i n g o p t i o n=r e q u e s t.g e t P a r a m e t e r("o p t i o n"); i f("s h o w".e q u a l s(o p t i o n)){ //获得请求信息中的C o o k i e数据 C o o k i e[]c o o k i e s=r e q u e s t.g e t C o o k i e s(); i f(c o o k i e s!=n u l l){ //找出名称(键)为“c o o l”的C o o k i e f o r(i n t i=0;i"+c o o k i e s[i].g e t N a m e()+":" +c o o k i e s[i].g e t V a l u e()+""); } } } }e l s e i f("a d d".e q u a l s(o p t i o n)){ //创建C o o k i e对象 C o o k i e c o o k i e=n e w C o o k i e("c o o l","y e a h!"); //设置生命周期以秒为单位 c o o k i e.s e t M a x A g e(20); //添加C o o k i e r e s p o n s e.a d d C o o k i e(c o o k i e); }

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.360docs.net/doc/d9689720.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.360docs.net/doc/d9689720.html,ERNUM--; //用户数减一 https://www.360docs.net/doc/d9689720.html,erMap.remove(id); //从用户组中移除掉,用户组为一个map } }

几种session存储方式比较

几种session存储方式比较 1. 客户端cookie加密 这是我以前采用的方式,简单,高效。比较好的方法是自己采用cookie机制来实现一个session,在应用中使用此session实现。 问题:session中数据不能太多,最好只有个用户id。 参考实现:https://www.360docs.net/doc/d9689720.html, 2. application server的session复制 可能大部分应用服务器都提供了session复制的功能来实现集群,tomcat,jboss,was都提供了这样的功能。 问题: 性能随着服务器增加急剧下降,而且容易引起广播风暴; session数据需要序列化,影响性能。 如何序列化,可以参考对象的序列化和反序列化. 参考资料 Tomcat 5集群中的SESSION复制一 Tomcat 5集群中的SESSION复制二 应用服务器-JBoss 4.0.2集群指南 3. 使用数据库保存session 使用数据库来保存session,就算服务器宕机了也没事,session照样在。 问题: 程序需要定制; 每次请求都进行数据库读写开销不小(使用内存数据库可以提高性能,宕机就会丢失数据。可供选择的内存数据库有BerkeleyDB,MySQL的内存表); 数据库是一个单点,当然可以做数据库的ha来解决这个问题。 4. 使用共享存储来保存session 和数据库类似,就算服务器宕机了也没事,session照样在。使用nfs或windows文件共享都可以,或者专用的共享存储设备。 问题: 程序需要定制; 频繁的进行数据的序列化和反序列化,性能是否有影响; 共享存储是一个单点,这个可以通过raid来解决。 5. 使用memcached来保存session 这种方式跟数据库类似,不过因为是内存存取的,性能自然要比数据库好多了。 问题: 程序需要定制,增加了工作量; 存入memcached中的数据都需要序列化,效率较低; memcached服务器一死,所有session全丢。memchached能不能做HA 我也不知道,网站上没提。 参考资料 应用memcached保存session会话信息 正确认识memcached的缓存失效 扩展Tomcat 6.x,使用memcached存放session信息 6. 使用terracotta来保存session

c#下使用cookie和session

c#如何记住用户的信息 记录加密之后的信息,确保用户的信息安全 使用cookie和session记录用户的信息 1、保存时间 session的默认保存时间是24分钟 cookie在没有设置的情况下关闭之后立即结束生命周期 设置cookie的时间,cookie-name.Expires=Date.Now.AddDays();/DateTime.MaxValue;(永久) C#读取设置Cookie 设置: HttpCookie cookie = new HttpCookie("cookieName"); cookie.Value = "name1" HttpContext.Current.Response.Cookies.Add(cookie); 读取: HttpContext.Current.Request.Cookies["cookieName"].Value 判断cookie是否存在: if(HttpContext.Current.Request.Cookies["cookieName"]==null){ //do something } 设置cookie有效期 cookie.Expires = DateTime.Now.AddDays(1); https://www.360docs.net/doc/d9689720.html,中Cookies的用法(转) 一,cookies 写入 方法1: Response.Cookies["username"].Value="gjy"; Response.Cookies["username"].Expires=DateTime.Now.AddDays(1); 方法2: System.Web.HttpCookie newcookie=new HttpCookie("username"); newcookie.Value="gjy"; newcookie.Expires=DateTime.Now.AddDays(1); Response.AppendCookie(newcookie); 创建带有子键的cookies: System.Web.HttpCookie newcookie=new HttpCookie("user"); newcookie.Values["username"]="gjy"; newcookie.Values["password"]="111";

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 对象中的信息在会话及会话作用域内有效。下列脚本演示两种类型的变量的存储方式。 <%

Cookie和Session的作用和工作原理

一、Cookie详解 (1)简介 因为HTTP协议是无状态的,即服务器不知道用户上一次做了什么,这严重阻碍了交互式Web应用程序的实现。在典型的网上购物场景中,用户浏览了几个页面,买了一盒饼干和两饮料。最后结帐时,由于HTTP的无状态性,不通过额外的手段,服务器并不知道用户到底买了什么。为了做到这点,就需要使用到Cookie了。服务器可以设置或读取Cook ies中包含信息,借此维护用户跟服务器会话中的状态。 Cookie(复数形态:Cookies),是指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。 Cookie是由服务端生成的,发送给客户端(通常是浏览器)的。Cookie总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie: 内存Cookie由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在时间是短暂的。 硬盘Cookie保存在硬盘里,有一个过期时间,除非用户手工清理或到了过期时间,硬盘Cookie不会被删除,其存在时间是长期的。所以,按存在时间,可分为非持久Cookie和持久Cookie。 (2)工作原理 1、创建Cookie 当用户第一次浏览某个使用Cookie的网站时,该网站的服务器就进行如下工作: ①该用户生成一个唯一的识别码(Cookie id),创建一个Cookie对象; ②默认情况下它是一个会话级别的cookie,存储在浏览器的内存中,用户退出浏览器之后被删除。如果网站希望浏览器将该Cookie存储在磁盘上,则需要设置最大时效(maxAge),并给出一个以秒为单位的时间(将最大时效设为0则是命令浏览器删除该Cookie); ③将Cookie放入到HTTP响应报头,将Cookie插入到一个Set-Cookie HTTP请求报头中。 ④发送该HTTP响应报文。 2、设置存储Cookie 浏览器收到该响应报文之后,根据报文头里的Set-Cookied特殊的指示,生成相应的Cookie,保存在客户端。该Cook ie里面记录着用户当前的信息。 3、发送Cookie 当用户再次访问该网站时,浏览器首先检查所有存储的Cookies,如果某个存在该网站的Cookie(即该Cookie所声明的作用范围大于等于将要请求的资源),则把该cookie附在请求资源的HTTP请求头上发送给服务器。 4、读取Cookie 服务器接收到用户的HTTP请求报文之后,从报文头获取到该用户的Cookie,从里面找到所需要的东西。 (3)作用 Cookie的根本作用就是在客户端存储用户访问网站的一些信息。典型的应用有: 1、记住密码,下次自动登录。 2、购物车功能。 3、记录用户浏览数据,进行商品(广告)推荐。 (4)缺陷 ①Cookie会被附加在每个HTTP请求中,所以无形中增加了流量。 ②由于在HTTP请求中的Cookie是明文传递的,所以安全性成问题。(除非用HTTPS) ③Cookie的大小限制在4KB左右。对于复杂的存储需求来说是不够用的。 二、Session详解 (1)简介 Session代表服务器与浏览器的一次会话过程,这个过程是连续的,也可以时断时续的。Session是一种服务器端的机制,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,cookie

深入理解Servlet/JSP之“Cookie和Session原理” (2008-06-29 13:41:09) 转载 标签:it it培训 java jsp servlet session cookie session持久化 由于HTTP协议的无状态特征,Web应用中经常使用Cookie和Session来保存用户在与系统交互过程中的状态数据。下面通过分析HTTP协议对Cookie和Session的工作原理加以了解。 一、Cookie Cookie的含义是“服务器送给浏览器的甜点”,即服务器在响应请求时可以将一些数据以“键-值”对的形式通过响应信息保存在客户端。当浏览器再次访问相同的应用时,会将原先的Cookie通过请求信息带到服务器端。 下面的Servlet展示了Cookie的功能。 ... ... ... public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); String option = request.getParameter("option"); if ("show".equals(option)) { //获得请求信息中的Cookie数据 Cookie[] cookies = request.getCookies(); if (cookies != null) { //找出名称(键)为“cool”的Cookie for (int i = 0; i < cookies.length; i++) { if ("cool".equals(cookies[i].getName())) { out.println("

" + cookies[i].getName() + ":" + cookies[i].getValue() + "

"); } } } } else if ("add".equals(option)) { //创建Cookie对象 Cookie cookie = new Cookie("cool", "yeah!");

session超时重新登录

1.首先在web.xml中配置过滤器: SessionFilter https://www.360docs.net/doc/d9689720.html,mon.web.SessionFilter SessionFilter *.sino SessionFilter *.jsp 2.SessionFilter.java文件 package https://www.360docs.net/doc/d9689720.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.360docs.net/doc/d9689720.html,mon.ClientConfig; public class SessionFilter implements Filter { private FilterConfig fc = null; public void destroy() { }

页面跳转及Cookie和Session

第十五天课堂笔记 1.页面跳转的两种方式 a)请求转发 i.实现代码: ii.特点: 1.不管转发几次, 只发送一次请求 2.请求携带的数据在转发后还可以继续获取 3.地址栏在多次转发时不会改变 4.转发后的代码还可以继续执行, 但是, 只能转发一 次 5.可以转发给项目内的资源(servlet, 界面…), 但是不 能转发到项目外的资源 b)重定向 i.实现代码 ii.特点 1.重定向一次会发送两次请求 2.因为是两次请求, 所以第一次携带的数据在第二次 请求时就已经无效了, 需要再次携带数据 3.地址栏会发生改变

4.重定向后代码还可以继续执行, 但是, 只能重定向 一次 5.重定向既可以访问内部资源, 也可以访问外部资源 2.ServletContext对象 a)一个应用程序只有一个ServletContext对象, 被所有 Servlet所共享, 因此, 该对象也被称之为Application对象 b)获取ServletContext对象的三种方式: c)ServletContext对象常用的功能 i.获取全局配置信息 1.全局配置信息的定义 2.获取全局配置信息 ii.获取相关路径信息 iii.获取WebRoot下的资源文件

iv.请求转发 3.Cookie a)Cookie是一个类, 它用于存储一些少量的信息, 首先在Servlet 中创建, 然后发送到客户端浏览器进行保存, 在之后的访问服 务器的过程中, 浏览器会自动携带Cookie信息 b)Cookie信息默认存储于浏览器内存中, 关闭浏览器或使用不同 的浏览器, 均无法获取到cookie信息 c)可以通过setMaxAge(seconds)方法给Cookie设置最大存活时间. 设置后, Cookie会保存到本地硬盘中, 到期后自动删除.如果时 间设置为0, cookie会被直接删除. d)可以通过setPath(uri)方法给Cookie设置访问路径, 设置后只有 访问固定路径时, 才会携带Cookie信息

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协议本来的目的是相符的,客户端只需要简单的向服务器请求下载某些文件,无论是客户端还是服务器都没有必要纪录彼此过去的行为,每一次请求之间都是独立的,好比一个顾客和一个自动售货机或一个普通的(非会员制)大卖场之间的关系相同。

利用FIDDLER工具进行session和cookie欺骗

利用FIDDLER工具进行session和cookie欺骗 Agileone登录捕获: 选中post请求,在内容中修改密码并执行。 将password=admin,改成password=123,显示结果如下: 在textview中,结果反馈为password invalid。 进行session欺骗:把登录后的任意一个请求的sessionIDcopy到登录get请求内容中,结果响应出已经进入到登录后的首页,和首页中的源文件一样。如图,

请求内容: GET http://localhost/agileone/ HTTP/1.1 Host: localhost Connection: keep-alive Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36 Accept-Encoding: gzip, deflate, sdch Accept-Language: zh-CN,zh;q=0.8 Cookie:PHPSESSID=68aa4b8855d4e704dce53b23eb9a5c92;PHPSESSID=4766b699b16758c0ce 8eca2756a3a459; Cookie欺骗操作同理。

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

相关文档
最新文档