Geronimo!第 3 部分: 状态问题
2009-11-11 00:00:00 来源:WEB开发网跟踪难以捉摸的客户
如前所述,有几种可用的方法将会话信息和特定的用户关联起来,所有这些方法都要求在客户机和服务器计算机间传递一定种类的标识符。已经提到的一种方法是 cookie 方法。另一种方法是将该标识符包含到每一个后来发送回客户机浏览器的 URL 中。这个标识符(通常是数据库键)能够作为该 URL 参数之一而生成并发送到客户机。很肯定地说,如果您看到和下列相似的 URL 时,就说明您正在被跟踪:http://www.somedomain.com/applications /thecart?jsessionid=868D6879824E0F3FB499D8146A9EE7F
这个叫做 jsessionid 的十六进制数字是到 Geronimo 会话句柄的主键,并为系统提供了关于您的信息(您在过去某时提供的)。这是一个会话编号(准备好再现关于您的数据),它存储在之前对 Web 站点访问的持久性存储中。使用该方法维护状态有诸多优势,最显著的是它并不依赖用户浏览器 cookie 机制的打开(正如时下许多人所做的)。
Web 应用程序必须重写每一个在 Web 页面中发送给用户的 URL,否则将丢失该会话信息。如果用 J2EE 的方式(因而也是 Geronimo 方式)来实现,就要对所有由 servlet 返回的 URL 调用响应对象的 encodeURL() 方法。这样,只有当用户浏览器关闭了 cookie 处理,生成的 URL 中才会包含会话 ID。否则,浏览器返回未改变的 URL,例如:
out.println("<a href=\"" +
response.encodeURL(request.getContextPath() +
"/thecart") + "\">Continue Shopping?</a>");
如果用户关闭了浏览器中的 cookie,将看到与此类似的(显示):http://www.somedomain.com/applications/thecart?jsessionid=868D6879824E0F3FB499D8146A9EE7F 。
但如果 cookie 机制仍打开着,将看到与此类似的(显示):http://www.somedomain.com/applications/thecart 。
结束语
通过使用顶级的工具,如 Geronimo 及其所实现的 J2EE 技术,现代 Web 应用程序所必须维护的许多状态问题都可以得到极大的简化。如果您是一个珍惜自己睡眠时间的公司经理,那么您尽可以高枕无忧,因为 Geronimo 架构可以为您的客户提供愉快的体验以使其在下次光顾时仍能保持愉悦;该架构还可以让您的程序员们也非常满意,因为它可以为程序员们提供一个可靠的环境以使维护用户状态变得十分简单。
- ››Geronimo V2.1.5 中的安全提升
- ››Geronimo 叛逆者: Apache Geronimo 的 JMS 实现:...
- ››Geronimo 叛逆者: Geronimo 与 Apache 许可带来的...
- ››Geronimo 叛逆者: 加入集群功能
- ››Geronimo 叛逆者: 摒弃 JBoss,使用 Apache Geron...
- ››Geronimo 叛逆者: 使用集成软件包:Codehaus 的 W...
- ››Geronimo 叛逆者: 直面 JSF
- ››部分 WM6.5 手机有望升级到 Windows Phone 7
- ››Geronimo!第 2 部分: 构建 Geronimo
- ››Geronimo!第 3 部分: 状态问题
- ››Geronimo!第 4 部分: 模式
- ››Geronimo 叛逆者: 使用集成程序包:GlassFish JST...
更多精彩
赞助商链接