J2EE探索者: 创建和管理有状态Web应用程序

在本文中,我们将紧随本系列的第二期“ 有状态网络的 J2EE 技术”。在 那一期,您可以了解到 J2EE 中有状态应用程序开发的一些基础知识。这一次,我们将把 注意力从大范围的概述转移到如何创建和管理有状态用户体验的细节上来。

创建有状态应用程序的一个基本组成部分就是数据管理。通过从一个会话全面地收集有 关一个用户的数据,我们可以为那个用户创建一个简要表(profile),然后使用这个简要 表来个性化他的用户体验。为了智能地管理用户数据,必须将其置于上下文中。出于这个 原因,我们使用 作用域。

在 J2EE 中有 4 种作用域(或者说上下文)用于管理数据:application(应用程序) 、session(会话)、request(请求)和page(页面)。在本月,您将学到每种作用域为 J2EE 中的有状态应用程序开发带来了哪些东西,以及每种作用域最适合于哪种会话管理场 景。

首先我们来快速回顾一下 J2EE 中有状态 Web 应用程序的开发。

构建有状态 Web 应用程序

如果用户只需要用 Web 应用程序来查看静态内容,那么除了 HTML 外我们不需要任何 其他的技术。但是,除了基于文本的信息和好看的背景颜色之外,大多数用户还想从 Web 那里得到更多的功能。实际上,目前多数的用户访问网络都是为了执行复杂的电子商务交 易,参与在线社团,下载(和上传)媒体,等等。对于大多数流行站点来说,交互性是关 键,而且,个性化的功能越多越好。对于这种类型的开发,我们使用一些高级的 Web 技术 ,例如 CGI、PHP、ASP、JSP 以及 Java Servlet。

交互性的一个重要的组成部分就是个性化。 个性化的 Web 站点能够针对用户的特定需 求和兴趣来定制内容和输出。个性化的一个重要组成部分就是 duration。用户体验不仅应 该具有内聚性,还应该加以扩展,超越单事务模式。例如,当登录到像 Yahoo 这样的一个 个性化的门户时,您将建立一个 身份(identity),在 Yahoo 域中,无论导航到哪里, 您的身份都不会改变。对于许多在线银行、信用卡以及股票交易系统来说,也是如此。在 线商店也逐渐地采用了这种模型。

当我们谈到扩展了单事务模式的用户体验时,我们称之为 会话。当我们创建支持会话 而不是单独的、孤立的事务的 Web 应用程序时,我们就是在创建 有状态的应用程序。

在一个有状态应用程序中,用户可以导航到站点的许多不同的地方,并执行多个事务, 但是他将一直维护着他自己惟一的身份。这是可以实现的,因为系统会不断地跟踪他的会 话的 状态。在 J2EE 中,这种类型的开发是通过将每个用户的信息存储在一个后端数据服 务器上来进行管理的。当一个用户第一次登录到站点时,他便建立一个惟一的 ID。从那一 刻开始,与该用户的 ID 相关的数据便被存储起来,并且在需要的时候系统可以访问这些 数据。

至于 Java 平台,我们可以使用三种技术之一来将用户 ID 与单个用户关联起来,这三 种技术是:URL 重写、隐藏表单字段以及 HTTP cookies。在 J2EE 中,我们使用 HTTPSession API 来存储、检索会话数据,或者将会话数据与某一特定用户 ID 相关联。

除了存储数据,我们还必须能够 contextualize数据(将数据置于上下文中)。术语 作用域 指的是被存储数据的上下文(即该数据的 “作用域”);对作用域的 适当处理在有状态 Web 应用程序的设计中处于核心地位。

会话作用域

术语“作用域”指的是一个上下文,在这个上下文中数据被关联或者存储。 在传统的独立应用程序中存在着一些可以在其中关联变量和对象引用的上下文(或作用域 )。典型的作用域包括:

局部/方法

类/对象/组件

包/库

protected(受保护的)

全局/public(公共的)

时间: 2024-10-24 17:06:59

J2EE探索者: 创建和管理有状态Web应用程序的相关文章

J2EE基础:使用JSF技术开发Web应用程序

j2ee|js|web|程序 (1)视图设计 方便.快捷地开发基于JSF的Web应用程序,是在JSF提供了一组丰富的.可重用的服务器端用户界面组件的条件下实现的.在开发工具的支持下,用户可以很容易地在可视化环境中利用这些组件构建Web用户界面,处理组件的数据校验.事件处理等用户界面管理问题. 设计每个需要的JSP页面,在页面中放置JSF的内置组件,并将组件与应用层的JavaBean绑定.利用RAD工具能通过拖放组件的方式轻松实现页面文件,不需要手写大量代码.开发工具自动生成页面对应的java文件

Java 开发 2.0: 使用方便的 EC2--快速创建 CRUD Web 应用程序并在 Amazon Elastic Compute Cloud 上运行它

提供一个 EC2 实例来托管 Java Web 应用程序将非常简单.在这一期 Java 开发 2.0 中,我们将快速构建一个利用 Groovy.Spring 和 Hibernate(通过 Grails 框架)的 Web 应用程序并将其部署到一个 EC2 实例. 正如您从 "Java 开发 2.0:您也可以租用 EC2" 中了解到的一样,Amazon 的 Elastic Compute Cloud (EC2) 是一个用于托管(Linux®.OpenSolaris 甚至 Windows®)

如何使用Docker部署一个Go Web应用程序

本文讲的是如何使用Docker部署一个Go Web应用程序,[编者的话]这是国外轻量级CJ厂商Semaphore发布的教程,旨在让开发人员如何借助于Docker让Go应用程序的编译及发动实现自动化,提升开发效率的同时也能保证软件部署的可靠性. 熟悉Docker如何提升你在构建.测试并部署Go Web应用程序的方式,并且理解如何使用Semaphore来持续部署. 简介 大多数情况下Go应用程序被编译成单个二进制文件,web应用程序则会包括模版和配置文件.而当一个项目中有很多文件的时候,由于很多文件

ASP.net中新建Web网站与新建Web应用程序的区别

asp教程.net中新建web网站与新建web应用程序的区别 在visual studio 2010中,除了可以使用创建web应用程序的方式来构建自己的web项目之外,还可以通过创建web网站的方式来构建web项目. 其中,web网站的创建方法:打开visual studio 2010主窗体,在工具栏里选择"new"|"web site"命令,在弹出的new web site窗体里可以通过"asp.net教程 web site"和"em

使用Dojo国际化Web应用程序

简介 Wikipedia 将国际化定义为在无需进行工程性更改的前提下让所设计的软件应用程序能够适应各种语言和地区.(参见 参考资料).根据这个定义,为了得到国际化的软件,有三个元素必不可少: 负责告知软件其所要运行的本地语言环境的一个元素 可应用到软件当前的本地语言环境的一组翻译文件 负责连接前两个元素的一个组件 在本文中,我们将创建一个简单的国际化 Web 应用程序并展示针对前两个元素的 Dojo 工具箱标准(更多有关 Dojo 的信息,参见 参考资料).之后,我们将针对第三个元素仔细研究两个

使用Google Sitebricks构建更好的Web应用程序

使用 Maven.Sitebricks 和 Guice 创建一个样例 Java Web 应用程序 简介 Sitebricks 目前仍然处于测试阶段,它是一种新的 Java Web 应用程序框架.您可能想问:"为什么我还需要另一个 Web 框架?" 通过 Google Sitebricks,您可以快速构建一个可由他人维护或操作的 Web 应用程序.Sitebricks 构建于 Guice 之上.它将许多 Guice 原则扩展到 Web.它像 Guice 一样大量使用注释将配置作为代码的一

通过Visual Studio应对Web应用程序安全威胁

对于Web应用程序的开发者来说,性能与安全就好像两把利剑插在他们心头.Web应用程序由 于其面对用户的特殊性,所以特别容易受到攻击.笔者在这里以ASP.NET+VisualStudio为例, 谈谈该如何有效应对Web应用程序安全威胁. 一.主要安全威胁分析. 对于Web应用程序来说,其可能受到的安全威胁有很多.如电子欺骗.篡改等等.笔者在这 里将常见的一些安全威胁作一些讲解.这些内容可以为后面讲到的应对措施建立一个背景知识 . 第一个威胁是篡改.篡改是指在未经管理员授权的情况下更改或者和删除资源

J2EE创建多媒体管理软件解决方案

新的事务模型的目的是逐渐使最终用户能够用标准化的和常见的软件管理.检索和操作存储的多媒体资源--例如相片.视频和行情资料.在利用现有的内部技术来降低成本和产生利润的时候,现有的媒体业务还用来实现访问它们的多媒体资源的标准化值.尽管在过去几年中存储量.处理能力和软件都有重大的发展,但是管理数字媒体资源仍然是一件代价相当高的事情.一些研究表明,大多数的多媒体文件是非结构化的资源:只有很少一部分存在于关系数据库和现有的应用程序中.结构化的缺乏使有效地访问和重新利用数字资源变得非常困难. 中间件平台--

J2EE探索者:隐式对象的多种用法

j2ee|对象 接着上月对会话作用域的介绍,企业 Java 专家 Kyle Gabhart 深入研究了 JSP 隐式对象的多种用法.接下来,他将介绍 9 个隐式对象,解释每个对象的用途(或者多种用途),最后给出一些怎样在 JSP 编程中使用这些便利工具的最佳实践.您可以到我们的 讨论论坛 中分享您对这篇文章或者 J2EE 探索者 系列中的任何其他文章的想法. 本期的 J2EE探索者 是上个月的 正确处理会话作用域入门 的续篇.除了访问会话作用域之外,JSP 隐式对象还可以用来处理 HTML 参数