关于session,建议大家看看!

zhusuhao 2003-01-10 11:18:27
(转贴)
Session管理

  用户Session指的是跨越一个客户和服务器多个请求间的一个对话。我们将在以下部分根据用户Session的概念讨论这个问题。

  客户端的Session状态

  在客户端保存Session的状态指的是将Session的状态串行化并且嵌入到返回给客户的HTML页面中。

  在客户端保存Session的状态有这以下的好处:

   . 它实现起来相对容易

   . 在保存少量的状态信息时,它工作得很好

  此外,这个策略还消除了跨越多个服务器复制状态的问题,例如多个服务器间实现负载均衡时就会遇到这种情况。

  在客户端保存Session状态通常有两个方法--HTML的隐藏字段和HTTP cookies--我们将在下面讨论这些策略。第三个策略则是在每个页面的URL中嵌入Session状态信息,例如<form action=someServlet?var1=x&var2=y method=GET>。虽然第三个方法比较少见,但它也有着其它两个方法的许多限制。

  HTML的隐藏字段(HTML Hidden Fields)

  虽然这个方法实现起来相对容易,不过使用HTML隐藏字段在客户端保存Session状态仍然有着许多的缺点。这些缺点在保存大量的状态时尤为突出。保存大量的状态将会对性能有很大的影响。因为每次发出请求和响应时,都需要在网络中传送这些状态信息。

  此外,当你利用隐藏的字段来保存Session状态时,这些持久的状态值只能是字符串值,因此所有的对象引用都必须被“字符串化”,而这些信息除非经过特别的加密,否则都是以明文的形式显示在HTML的源代码中。

  HTTP Cookies

  与隐藏字段的方法一样,使用HTTP Cookies的方式也是相对简单的。不幸的是,这两个方法有着许多相同的缺点。特别是,在保存大量的状态信息时将会对性能产生很大的影响,因为在每次的请求和响应时,都必须在网络上传送全部的Session状态信息。

  在客户端保存Session状态时,我们也会遇到大小和类型的局限问题。cookie headers的大小是有限制的,这样就限制了可以被持久保存的数据量,而且和隐藏字段的方法一样,当你使用cookies来保存Session状态时,这些持久的状态信息只能使用字符串值。

  在客户端保存Session状态会带来的安全问题

  当你在客户端保存Session状态时,你必须考虑到由此带来的安全问题。如果你不想数据暴露给客户端,你就需要一些方法来加密数据,从而保证数据的安全。

  虽然在客户端保存Session状态相对容易实现,不过它有着很多的缺点,这些都要我们花费时间去解决。对于需要处理大量数据的项目,特别是企业的系统,使用这种方式是得不偿失的。

表现层的Session状态

  当Session状态保存在服务器端时,它使用一个Session ID得到,并且会一直保持住,直到发生以下的情形:

   . 一个预定义的Session超时发生了

   . Session被手动设置为无效

   . 状态由Session中移除

  要注意的是服务器关闭后,一些内存中的Session管理机制可能不能恢复。

  很明显,对于要保存大量Session状态的应用,将它们的Session状态放在服务器是更好的。当状态被保存在服务器上时,你不会有客户端Session管理的大小和类型限制。此外,还避免了由此带来的安全问题,而且也不会遇到由于在每个请求间传送Session状态带来的性能影响。

  使用该方式,你可以更加灵活地作处理,并且便于扩展和提高性能。

  如果你在服务器上保存Session状态,你必须要决定如何使该状态信息被每个服务器得到,即你运行该应用的服务器。如果群集的软件是运行在负载均衡的硬件上,那么就要处理这个Session状态的复制问题,这是一个多维的问题,不过,众多的应用服务器现在都提供了各种各样的解决方案。也就是说,在应用服务器的级别上有解决的方法。其中的一个方法是保证用户只与一个服务器打交道,它在流量管理软件上用得比较多,例如Resonate [Resonate]的软件,在用户的Session中,该用户发出的每个请求都会被路由到同一个服务器处理。这种方式也被称为server affinity。

  另一个可选的方式是在商业层或者资源层保存Session状态。企业JavaBeans组件可用来在商业层保存Session的状态,而一个关系数据库则可用在资源层。
...全文
51 48 打赏 收藏 转发到动态 举报
写回复
用AI写文章
48 条回复
切换为时间正序
请发表友善的回复…
发表回复
tangbow 2003-03-07
  • 打赏
  • 举报
回复
收藏
pzl686 2003-03-07
  • 打赏
  • 举报
回复
收藏
ForwardHan 2003-02-10
  • 打赏
  • 举报
回复
高手云集.
学习!
chenqianliang 2003-02-10
  • 打赏
  • 举报
回复
贴得好,接分。。。
zhusuhao 2003-02-10
  • 打赏
  • 举报
回复
to griffith(格里菲斯):
期待你的崩溃!呵呵!
海东 2003-02-10
  • 打赏
  • 举报
回复
收藏ing
colee 2003-02-10
  • 打赏
  • 举报
回复
收集
PeterMCT 2003-02-10
  • 打赏
  • 举报
回复
up
griffith 2003-02-09
  • 打赏
  • 举报
回复
等我的网站建成了,实际测试一下网站访问量达到最高峰的时候,session所占用的系统资源究竟占多少比例,哈哈。
不过我一直很担心,我的xseries 200会崩溃。
KEBB 2003-02-09
  • 打赏
  • 举报
回复
呵呵,学知识,有分拿~~~
hou_jg 2003-01-24
  • 打赏
  • 举报
回复
看看再说。
zhusuhao 2003-01-24
  • 打赏
  • 举报
回复
不烦!
baisun 2003-01-24
  • 打赏
  • 举报
回复
你怎么会这样啊?我是看你老“将帖子提前”,觉得烦啊。 :(
zhusuhao 2003-01-24
  • 打赏
  • 举报
回复
baisun(蟋蟀):

我鄙视你!!!
zhusuhao 2003-01-24
  • 打赏
  • 举报
回复
呵呵!你说得太惨了吧!我只是想多让写人看看!
baisun 2003-01-24
  • 打赏
  • 举报
回复
结吧,没什么可榨的油了 :)
xjd5555 2003-01-23
  • 打赏
  • 举报
回复
THANK !
chf0797 2003-01-22
  • 打赏
  • 举报
回复
GZ!sdudy!!!
zhusuhao 2003-01-20
  • 打赏
  • 举报
回复
谢谢jtmoon(逍遥小贼)

:)
gage 2003-01-19
  • 打赏
  • 举报
回复
up
加载更多回复(28)

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧