新闻正文

会话(Session)数据到底是什么?

来源:JAVA天堂  JAVA学习者  2007-6-18 02:01:56 网友评论 0 条 字体:[ ] ~我要投稿!
通常,Web 环境中的会话是指用户/客户机的 Web 浏览器和一个特定的 Web 服务器之间的一组交互。会话从最初浏览器调用 Web 服务器的 URL 开始,到 Web 服务器结束会话,这个会话“超时”,或当用户关闭浏览器时结束。会话数据是指在永久保存之前用户提供的在多个页面上使用的信息。会话数据和事务数据(Transaction data)之间的区别在于,会话数据是暂时的 - 只用于一组相连接的页面 - 而事务数据是用于永久的存储。会话数据通常在一组 Web 页面之后被转换成事务数据(当用户选择“提交”事务,或为购物车“付帐”时)。

考虑下面的情节:我们的用户 Rob 输入了他最喜欢的(假定的)酒类购物站点的 URL,www. winesRus.com。Rob 浏览页面寻找要买的酒,并在购物车里添加了一些。与站点的所有交互发生在一个由 www.winesRus.com Web 服务器控制的单一会话中。当 Rob 逐屏浏览,购买更多酒时,他要购买的物品的信息、他的地址,还有 Rob 提供的其它任何信息都被保存为会话数据。站点给他要购买的物品定价,并请求他确认。当 Rob 确认时,会话数据被用来执行购买事务,然后数据变成永久性的。

Servlet 与特定的 HTTP URL 一一对应,这很象传统的 Web 编程中每个 URL 要有自己的 CGI 脚本一样。例如,http://winesRus/servlet/purchaseWinesServlet 脚本对应于 http://winesRus.com/servlet/purchaseWinesServlet。



就象 CGI 脚本一样,servlet 自己是无状态的。和 CGI 脚本相似,servlet 也从 HTTP 参数和 HTML 表单获得客户机数据。在一个特定的应用服务器上,每个 servlet 类的一个单独实例为它的特定 URL 处理所有的 doGet() 和 doPost() 请求。每一个 HTTP 请求都在一个运行该实例的 service() 方法的唯一线程上处理。因为每个 servlet 实例都是共享资源,您不能在 servlet 本身存储客户机会话数据(比如顾客的购物车)。会话数据必须存储在 servlet 之外。



收藏到ViVi   收藏此页到365Key
上一篇:小议String类和stringBuffer类下字符串的区别
下一篇:部署EJB组件的艺术
用户名:新注册) 密码: 匿名评论 [所有评论]
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
本栏搜索
  • Google
   网站首页 -  网站地图 -  技术学习 -  网站投稿 -  帮助中心
Copyright 2003-2008 www.javah.net All Rights Reserved
2008 如果你喜欢本站 请收藏本站 并推荐给你的朋友一起分享