当前位置:首页 » 编程博文
开发技术指南» 文章正文
    引言: 大多数具有一定重要性的 Web 应用程序都要求维护某种会话状态,如用户购物车的内容。
 

 

 ·windows网络编程(一)    »显示摘要«
    摘要:windows网络编程(一) 1. 关于bind inaddr_any 的具体含义是,绑定到0.0.0.0。此时,对所有的地址都将是有效的,如果系统考虑冗余,采用多个网卡的话,那么使用此种bind,将在所有网卡上进行绑定。在这种情况下,你可以收到发送到所有有效地址上数据包。 例如: sockaddr_in local; local.sin_addr.s_addr = htonl(......
    摘要:final 关键字常常被误用 - 声明类和方法时使用过度,而声明实例字段时却使用不足。本月,java 实践者 brian goetz 探究了一些有关有效使用 final 的准则。 如同它的“表亲”- c 中的 const 关键字一样,根据上下文,final 表示不同的东西。final 关键字可应用于类、方法或字段。应用于类时,意味着该类不能再生成子类。应用于方法时,意味着......


Java 理论与实践: Web 层的状态复制
大多数具有一定重要性的 web 应用程序都要求维护某种会话状态,如用户购物车的内容.如何在群集服务器应用程序中管理与复制状态对应用程序的可伸缩性有显著影响.许多 j2se 与 j2ee 应用程序将状态存储在由 servlet api 提供的 httpsession 中.本月,专栏作家 brian goetz 分析了状态复制的一些选项以及如何最有效地使用 httpsession 以提供好的伸缩性与性能.在本文论坛中与本文作者与其他读者分享您的观点.(可以单击文章顶部或者底部的 讨论 访问论坛.)

不管正在构建的是 j2ee 还是 j2se 服务器应用程序,都有可能以某种方式使用 java servlet —— 可能是直接地通过像 jsp 技术.velocity 或者 webmacro 这样的表示层,也可能通过一个基于 servlet 的 web 服务实现,如 axis 或者 glue.servlet api 提供的一个最重要的功能是会话管理 —— 通过 httpsession 接口进行用户状态的认证.失效与维护.

【程序编程相关:ASP六大对象介绍

会话状态 【推荐阅读:xmlhttp 抓取网页内容1

如果应用程序能够在 httpsession 中存储用户状态,这种方法通常比其他方法更好.在客户端用 http cookie 或者隐藏表单字段存储会话状态有很大的安全风险 —— 它将应用程序的一部分内部内容暴露给了非受信任的客户层.(一个早期的电子商务网站将购物车内容(包括价格)存储在隐藏表单字段中,从而可以很容易被非法利用,让任何了解 html 与 http 的用户可以以 0.01 美元购买任何商品.噢)此外,使用 cookie 或者隐藏表单字段很混乱,容易出错,并且脆弱(如果用户禁止在浏览器中使用 cookie,那么基于 cookie 的方法就完全不能工作). 【扩展信息:[intro.compliance] -

几乎每一个 web 应用程序都有一些会话状态,这些状态有可能像记住您是否已登录这么简单,也可能是您的会话的更详细的历史,如购物车的内容.以前查询结果的缓存或者 20 页动态问卷表的完整响应历史.因为 http 协议本身是无状态的,所以需要将会话状态存储在某处并与浏览会话以某种方式相关联,使得下次请求同一 web 应用程序的页面时可以容易地获取.幸运的是,j2ee 提供了几种管理会话状态的方法 —— 状态可以存储在数据层,用 servlet api 的 httpsession 接口存储在 web 层,用有状态会话 bean 存储在 enterprise javabeans(ejb)层,甚至用 cookie 或者隐藏表单字段将状态存储在客户层.不幸的是,会话状态管理不当会带来严重的性能问题.

在 j2ee 应用程序中存储服务器端状态的其他方法是使用有状态会话 bean,或者在数据库中存储会话状态.虽然有状态会话 bean 在会话状态管理方面有更大的灵活性,但是在可能的情况下,将会话状态存储在 web 层仍然有好处.如果业务对象是无状态的,那么通常可以仅仅添加更多 web 服务器来扩展应用程序,而不用添加更多 web 服务器与更多 ejb 容器, 这样的成本一般要低一些并且容易完成.使用 httpsession 存储会话状态的另一个好处是 servlet api 提供了一种会话失效时通知的容易方法.在数据库中存储会话状态的成本可能难以承受.


...   下一页
    摘要:如果您不小心,线程可能会在没有(堆栈)跟踪的情况下从服务器应用程序中消失。在本文中,线程问题专家 brian goetz 提供了用于预防和检测线程“擅离职守”的技术。 当单线程应用程序中的主线程抛出一个未捕获的异常时,因为控制台中会打印堆栈跟踪(也因为程序停止),所以您很可能注意到。但在多线程应用程序中,尤其是在作为服务器运行并且不与控制台相连的应用程序中,线程死亡可能成......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE