对JavaEE中session的理解

在做网站开发的时候,我们经常会用到session对象,下面我来谈谈对session的理解;

Java Servlet API引入session 机制来跟踪客户的状态,session指的是在一段时间内,单个客户和web

服务器之间一连串的交互过程,在一个session中,一个客户可能会多次请求同一个网页,也可能请求多个不同服务器资源,例如:在一个邮件系统应用中,从一个客户登录到邮件系统,到写信,收信和发信等,到最后退出邮件系统,整个过程为一个session;再例如:大家在网上购物的时候,从购物到最后的付款,整个过程也是一个session 。

session对像是jsp中的内置对象,可以直接使用;在Servlet中使用session时,必须先创建出该对象,Servlet中创建session的方法:

HttpSession session=request.getSession();或   HttpSession session=request.getSession(boolean value);

在服务器上,通过session ID来区分每一个请求服务器的用户,用户只要一连接到服务器,服务器就会为之分配一个唯一的不会重复的session ID,session ID由服务器统一管理,人为不能控制

session中的主要方法:

  1. session.getId();//获取session ID,长度为32位
  2. session.isNew();//判断是否是新建立的session
  3. session.getCreationTime();//获取session创建的时间
  4. session.getLastAccessedTime();//获取用户最后操作时间
  5. sesson.setAttribute(String key,Object value);//将对象存到session中
  6. session.getAttribute(String key);//获取session中存的Object对象
  7. session.removeAttribute(String key);//将键值为key的对象从session中删除

session的销毁

  1. web容器关闭或重启,session会死亡
  2. 调用session.invalidate();方法,强制session死亡
  3. 前后两次请求超过了session指定的生命周期时间,默认为30分钟,我们可以通过在web.xml文件中进行如下配置:
<session-config>
      <session-timeout>5</session-timeout>
</session-config>

也可以调用session.setMaxInactiveInterval(int intelval);方法来设置,单位为秒。

补充:session与cookie的区别

  1. session将信息保存在服务器上,cookie保存在客户端上
  2. session比cookie更安全,session比cookie更占资源
  3. session使用cookie的机制,如果cookie被禁用,那么session也无法使用,因为session ID是以cookie的形式保存在客户端的内存当中
时间: 2024-11-09 00:59:12

对JavaEE中session的理解的相关文章

php中session的理解

一.Session是什么 Session一般译作会话,牛津词典对其的解释是进行某活动连续的一段时间.从不同的层面看待session,它有着类似但不完全同样的含义.比方,在web应用的用户看来,他打开浏览器訪问一个电子商务站点,登录.并完毕购物直到关闭浏览器,这是一个会话. 而在web应用的开发人员开来.用户登录时须要创建一个数据结构以存储用户的登录信息.这个结构也叫做session. 因此在谈论session的时候要注意上下文环境. 二.Session因何而来? 我们知道http协议是WEBse

hibernate中session的获取使用以及其他注意事项

hibernate中session的获取使用以及其他注意事项 前言:工作时,在同时使用Hibernate的getSession().getHibernateTemplate()获取Session后进行数据查询时不是出现了"session is close"异常就是出现其他异常问题,痛定思痛,决定收集并整理相关资料,方便今后的使用. 一.session的获取 在hibernate中的Session对象通过SessionFactory来管理,可以通过使用openSession ().get

NHibernate中Session与ASP.NET MVC中Action的综合使用

NHibernate的基本特征是完成面向对象的程序设计语言到关系数据库的映射,在NHibernate中使用持久化对象PO(Persistent Object)完成持久化操作,对PO的操作必须在Session管理下才能同步到数据库, 但是这里的Session并非指HttpSession,可以理解为基于ADO.NET的Connnection,Session是NHibernate运作的中心,对象的生命周期.事务的管理.数据库的存取都与Session息息相关,首先,我们需要知道, SessionFact

关于 PHP 中 Session 的几个问题

什么是 Session 在 web 应用开发中,Session 被称为会话.主要被用于保存某个访问者的数据.由于 HTTP 无状态的特点,服务端是不会记住客户端的,对服务端来说,每一个请求都是全新的.既然如此,那么服务端怎么知道是哪个访问者在请求它呢?又如何将不同的数据对应上正确的访问者?答案是,给访问者一个唯一获取 Session 中数据的身份标示. 打个比方:当我们去超市购物时,被保安告之我们是不能带物品进去的,必须将物品寄放在超市的储物箱中.我们把物品交给了他,他怎么知道这些物品谁是谁的,

php中session的使用

php里使用session比较简单,通过session_start();启动sesssion会话功能(也可以在php 配置文件里设置 session.auto_start =1 这样就不需要调用session_start(),直接就能使用session),且该语句在脚本中必须放在所有输出语句之前(php手册中有的If you are using cookie-based sessions, you must call session_start() before anything is outp

Spring MVC中Session的正确用法&lt;转&gt;

Spring MVC是个非常优秀的框架,其优秀之处继承自Spring本身依赖注入(Dependency Injection)的强大的模块化和可配置性,其设计处处透露着易用性.可复用性与易集成性.优良的设计模式遍及各处,使得其框架虽然学习曲线陡峭,但 一旦掌握则欲罢不能.初学者并不需要过多了解框架的实现原理,随便搜一下如何使用“基于注解的controller”就能很快上手,而一些书籍诸如 “spring in action”也给上手提供了非常优良的选择. 网上的帖子多如牛毛,中文的快速上手,英文的

Zookeeper中Session Timeout的那些事

前言: RDS系统致力于MySQL数据的高可用,高可靠,高性能以及在线扩展功能,实现这些特性的主要逻辑功能都运行在管理服务器上,一旦管理服务器宕机,数据库的在线扩展功能/备份功能/故障恢复功能等都无从谈起.然而,之前RDS系统管理服务器却是单点服务,为了保证整个系统的稳定性,管理服务器需要实现高可用,结合当前主流的高可用方案,决定使用Zookeeper来实现服务的高可用. 基本设计方案原理: 如下图所示,管理服务器A B C会在zk的root节点上注册临时序列节点/root/manager000

跟我一起学WCF(8)——WCF中Session、实例管理详解

一.引言 由前面几篇博文我们知道,WCF是微软基于SOA建立的一套在分布式环境中各个相对独立的应用进行交流(Communication)的框架,它实现了最新的基于WS-*规范.按照SOA的原则,相对独自的业务逻辑以Service的形式进行封装,调用者通过消息(Messaging)的方式来调用服务.对于承载某个业务功能实现的服务应该具有上下文(Context)无关性,意思就是说构造服务的操作(Operation)不应该绑定到具体的调用上下文,对于任何的调用,具有什么的样输入就会对应怎样的输出.因为

hibernate中session

hibernate中的session是一级缓存,可以理解为进程级的缓存.在进程运行期间一直存在. session可以理解为一个可以操作数据库的对象 具体如何操作数据库? session中有方法, 如果只是单独的hibernate程序的话. 获得session之后,打开事务,操作数据库,提交(回滚事务),关闭session.就这样完成了操作DB ? Hibernate中session的使用: 在Hibernate中session主要是用来操作数据库? Hibernate在操作数据库前需要得到Ses