session对象(session对象中invalidate方法的含义是)
本篇文章给大家谈谈session对象,以及session对象中invalidate方法的含义是对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、session对象的理解
- 2、jsp中会话对象是啥?
- 3、session是什么意思 session的意思是什么
- 4、Struts架构中的Session对象创建和控制
- 5、session对象是什么意思,通常都是在什么情况下使用
session对象的理解
1.客户端和服务前端连接,服务器端就会自动创建一个session对象
session.serAttribute("username",uesername),是将username保存在session中!
session的key值为“username”
value值就是username真实的值,或者引用值.
这样以后你可以通过session.getAttribute("username")的方法获得这个对象. 比如说,当用户已登录系统后你就在session中存储了一个用户信息对象,此后空察你可以随时从session中将这个对象取出来进行一些操作,比如进行身份验证等等.
2.request.getSession()可以帮你得到HttpSession类型的对象,通常称之为session对象,session对象的作斗伏茄用域为一次会话,通常浏览器不关闭,保存的值就不会消失,当然也会出现session超时。服务器里面可以设置session的超时时间,web.xml中有一个session time out的厅闹地方,tomcat默认为30分钟
3、session.setAttribute("key",value);是session设置值的方法,原理同java中的HashMap的键值对,意思也就是key现在为“user”;存放的值为userName,userName应该为一个String类型的变量吧?看你自己的定义。
4、可以使用session.getAttribute("key");来取值,以为着你能得到userName的值。
5、注意:getAttribute的返回值类型是Object,需要向下转型,转成你的userName类型的,简单说就是存什么,取出来还是什么。
6、setAttribute和getAttribute就是基于HashMap的put方法和get方法实现的,一般叫键值对或者key-value,即通过键找到值。例如你的名字和你的人的关系,只要一叫你的名字,你就会喊到,通过你的名字来找你的人,简单说这就是键值对的概念。
jsp中会话对象是啥?
session会话对象
session对象属于Javax.servlet.http.Htpsessio接口的实例化对象。
【作用】 session对象用来表示用户的会话状况,一般用于保存用户的各种信息,直到生命周期(一般为900s)超时或者被人为释放掉为止。
【机制】当一个用户首次访问服务器上的一个JSP页面时,JSP引擎产生一个 session对游败乎象,同时神悉分配一个 String类型的ID号,JP引擎同时将这个枯脊ID号发送到用户端,存放在Cookie中,这样session对象和用户之间就建立了一一对应的关系。当用户再访问连接该服务器的其他页面时,不再分配给用户新的 Session对象。直到关闭浏览器后,服务器端该用户的 Session对象才取消,与用户的对应关系也一并消失。当重新打开浏览器再连接到该服务器时,服务器会为该用户再创建一个新的 Session对象。
session是什么意思 session的意思是什么
1、Session:在计算机中轿慧慧,尤其是在网络应用中,称为“会话控制”。
2、Session对象存储特定用户会话所需的属性及配置信息。这样闭答,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web页时,如果该用户还没有会话,则Web服务器将自动创建一个 Session对象。当会话过期或被放弃后,服务器将终止碧启该会话。
3、Session 对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在Session对象中。
[img]Struts架构中的Session对象创建和控制
首先谈一下对session对象在web开发中的创建以及sessionId生成并返回客户端的运行机制
session对象当客户端首次访问时 创建一个新的session对象 并同时生成一个sessionId 并在此次响应中将sessionId以响应报文的方式些回客户端浏览器内存或以重写url方式送回客户端 来保持整个会话 只要sever端的这个session对象没有销毁 以后再调用request getSession()时就直接根据客户端的sessionId来检索 server端生成的session对象并返回 不会再次去新建 除非根据此sessionId没有检索到session对象
下面是在IE下测试 因为IE 的一个BUG就是IE的隐私设置即使是阻止所有cookie时 也还是会以会话cookie来保存sessionId 所以下面都是以会话cookie来讨论的
( )在server没有关闭 并在session对象销毁时间内 当客户端再次来请求server端的servlet或jsp时 将会将在第一次请求时生成的sessionId并附带在请求信息头中并向server端发送 server端收到sessionId后根据此sessionId会去搜索(此过程是透明的)server对应的session对象并直接返回这个 session对象 此时不会重新去建立一个新的session对象
( )当server关闭(之前产生的session对象也就消亡了) 或 session对象过了其销毁时间后 浏览器窗口不关 并在本浏览器窗口再次去请求sever端的servlet和jsp时 此时同样会将 sessionId(server关闭或session销毁时生成的sessionId)发送到server端 server根据sessionId去找其对应的族此session对象 但此时session对象已经不存在 此时会重新生成一个新的session对象 并生成新的sessionId并同样将这个新生成的sessionId以响应报文的形式送到浏览器内存中
( )当server没有关闭 并session对象在其销毁时间内 当请求一个 jsp页面回客户端后 关闭此浏览器窗口 此时其内存中的sessionId也就随之销毁 在重新去请求sever端的servlet或jsp时 会重新生成一个sessionId给客户端浏览器 并存在浏览内存中
上面的理论在servlet中测试都是成立的 下面谈一下在struts框架下进行兆缓迅上面的测试时的不同的地方
先简要说下测试程序的流程
客户端请求index do——哪顷进入server端的IndexAction——转向login jsp页面——请求login do——进入server端的LoginAction
首先说明 IndexAction中没有去产生session对象 login jsp中设置%@ page session= false %
( )环境servlet + jsp
在sevlet+jsp测试跟踪时 在index do进入IndexAction 后转向login jsp时 此时浏览器内存中是没有会话cookie的 那么在login jsp上请求login do进入LoginAction 后 用request getCookies()测试时 其值是为null的!结果是稳合的 因为从始置终没有产生过session嘛!
( )环境struts + jsp
在struts+jsp测试跟踪时 跟上面的流程一样 开始想结果也应该是一样的 但经过调试后发现结果却不是所想的那样 在login do进入LoginActoin后用 用request getCookies()测试时 发现其值不为null 即其有name和value 开始很不理解 因为根本就没有创建过session对象 哪来的会话cookie值呢 但是结果有 那么想着此时浏览器内存中也就应该有会话cookie 问题就在这里!从哪里来的?
后来经过仔细考虑后 想到struts中的特点 我们自己写的Action类是继承struts的Action的 而且之前是经过struts的中央控制器ActionServlet来控制转向的 所以我想肯定是在程序进入我自己写的 IndexAction之前 struts框架中的代码肯定已经创建了session对象并已经生成了sessionId 于是就找到相关书籍查看了 ActionServlet工作流程以及调用哪些类 看了之后果然在其中看到了HttpSession session = request getSession() 这样一句话!于是答案也就明了了
大家知道struts的ActionServlet类中在接收到我们客户端的请求 (* do)后(之前会做一系列初始化工作) 并不是直接去处理我们的请求并调用相应的Action(我们写的如IndexAction) 而是将处理工作交给RequestProcessor类 其process方法中会调用一系列的方法来完成相应的请求处理和转向操作 其中有一个方法引起了我的关注 就是processLocale()方法
Struts框架 RequestProcess类中的processLocale()方法原型如下
程序代码
protected void processLocale(HttpServletRequest request HttpServletResponse response) { // Are we configured to select the Locale automatically? if (!moduleConfig getControllerConfig() getLocale()) { return; } // Has a Locale already been selected? HttpSession session = request getSession(); if (session getAttribute(Globals LOCALE_KEY) != null) { return; } // Use the Locale returned by the servlet container (if any) Locale locale = request getLocale(); if (locale != null) { if (log isDebugEnabled()) { log debug( Setting user locale + locale + ); } session setAttribute(Globals LOCALE_KEY locale); } }
此类在struts config xml配置文件中有对应的配置项 controller locale= true /controller 其缺省状态locale属性的值为true 也就会调用processLocale方法 并在第一次请求时创建session对象和生成 sessionId 但改为false后 在第一次请求到达ActionServlet后不会调用processLocale方法 也就不会生成 session对象了
结果也就出来了 在struts应用中 * do到达server端后经过 ActionServlet后转想我们自己写的IndexAction之前 controller locale= true /controller(缺省状态) 时 就已经产生了session对象和sessionId 这是struts框架类中生成的 即使我们在IndexAction中写上 HttpSession session = request getSession() 其也是RequestProcess类中的processLocale()方法生成的 此时其session 的isNew也还是true 因为还没有返回客户端 其是新创建的 那么按照上面的流程 当在login jsp上通过login do进入 LoginAction后 其request getCookies()固然也就有值了!并且其值是RequestProcess类中的 processLocale()方法产生session对象时生成的
lishixinzhi/Article/program/Java/ky/201311/28281
session对象是什么意思,通常都是在什么情况下使用
session对象:
session对象主要用于保存用户的各种信息,知道它的生命周期(一般是900S)超时或者被人为释放为止
可以通过session对象来判断此用户是否是合法用户
在服务器上通过session来区分每一个上网用户
session对象属于javax.servlet.http.HttpSession接带茄毕口的实例化对象
session属于HTTP协议范畴之内的对象,所以只有唯一的一个http包下有此接口,没有任何继承关系
用户只要一连接服务器则立刻分配一个session给用户
session的主要方法:
服务器上通过session来分别不同的用户--sessionID:任何连接到服务器上的用户,服务器都会为之分配唯一一个不会重复的sessionID
sessionID是由服务器同意管理的,人为不能控制
方法:session.getId()
sessionID的长度为32位
判断是不是新的session
Public boolean isNew(),判断当前的session是否是新建立的session
session的属性设置
设置属性setAttribute()
取得属性getAttribute()
删除属性removeAttribute()
通过session能够对用户是否登陆做出验证
★用户注销:让用户的session失效
若用户的session失效,则在session所保留的全部操作也会消失
方法:Public Void invalidate()使session失效(需手工操作蠢芹)
若session长时间不被使用,也会自动失效
得到纳仿session的创建时间
方法:Public long getCreationTime(),此方法返回一个long类型,通过Date类可以取得一个完整的时间
取得用户最后一次操作的时间
方法:Public long getLastAccessedTime()
用户在线时间=session最后一次操作时间-session创建时间
session与Cookie区别:
session将信息保存在服务器上而Cookie保存在客户端上
session比Cookie更安全,session比Cookie更占资源
开发原则:
sessiom要尽量少使用--尽量少向session中保存信息
session使用Cookie机制,若Cookie被禁用,则session也无法使用
关于session对象和session对象中invalidate方法的含义是的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。