作者:动物园的猪 002.7.26
Sun J2EE 宠物店例子 作者: 动物园的猪 2002.7.26
1.1系统架构统览 12宠物店网上商店 1.2.1 宠物店走一遭 12.1.1开始窗口 12.12欢迎窗口 121.3种类窗口( Category Screen) 货架厅品窗口 121.5货物tem窗口 12.16购物车窗口 1217登陆窗口 12.18账户信息窗口 333455566788 12.1.9订单信息窗口 12.1.10订单完成窗口 122概要,高层设计吧,我有何选择? 123宠物店的结构 1.24 宠物店网站的结构 1.2.5 宠物店模块设计. 126各个模块的设计方面的深入 12.61控制模块 1262用户登陆,和客户登记模块 99000039 12.63异步消息模块 12.64货架目录模块 20 1.26.5客户模块( Customer Module) 12.661购物车模块 27宠物店的组件这里仅仅总结一下宠物店用到的各种组件和文件类型:23 12.7.1宠物店的EJB 24 1272宠物店的JSP页面 24 1.2.7.3宠物店的过滤器( filter)) 1274宠物店的xm文件 12.7.5异步信息发送 12.76数据产生 Servlet 13资源和引用
1.1 系统架构统览 .......................................................................................... 3 1.2 宠物店网上商店.......................................................................................3 1.2.1 宠物店走一遭.............................................................................3 1.2.1.1 开始窗口..............................................................................3 1.2.1.2 欢迎窗口..............................................................................4 1.2.1.3 种类窗口(Category Screen)..................................................5 1.2.1.4 货架/产品窗口.....................................................................5 1.2.1.5 货物 item窗口.....................................................................5 1.2.1.6 购物车窗口..........................................................................6 1.2.1.7 登陆窗口..............................................................................6 1.2.1.8 账户信息窗口......................................................................7 1.2.1.9 订单信息窗口......................................................................8 1.2.1.10 订单完成窗口......................................................................8 1.2.2 概要,高层设计吧,我有何选择?.........................................9 1.2.3 宠物店的结构.............................................................................9 1.2.4 宠物店网站的结构...................................................................10 1.2.5 宠物店模块设计.......................................................................10 1.2.6 各个模块的设计方面的深入...................................................10 1.2.6.1 控制模块............................................................................10 1.2.6.2 用户登陆,和客户登记模块............................................13 1.2.6.3 异步消息模块....................................................................19 1.2.6.4 货架目录模块....................................................................20 1.2.6.5 客户模块(CustomerModule).............................................21 1.2.6.6 1 购物车模块.....................................................................22 1.2.7 宠物店的组件 这里仅仅总结一下宠物店用到的各种组件和文件类型:..23 1.2.7.1 宠物店的 EJB....................................................................24 1.2.7.2 宠物店的 JSP 页面............................................................24 1.2.7.3 宠物店的过滤器(filter) .....................................................25 1.2.7.4 宠物店的 xml文件............................................................25 1.2.7.5 异步信息发送....................................................................26 1.2.7.6 数据产生 Servlet ...............................................................26 1.3 资源和引用.............................................................................................26
1.1系统架构统览 petstorel3是一个集客户购物,下订单,管理一体的例子! 现实的系统不会是这样单贝儿的,大多数的系统要和多个数据源和其他的S(企业信息系统)打交道 的。这些外部系统可能是资产信息,ERP。也有可能是一个别的公司的 Webservice(这东东最近太XX热 了)。屁如说,订单的提交可能是一个公司,信用卡服务可能另外的公司,运送又是一个公司 PetstoreI3划分成了多个模块,松耦合的设计架构,允许可以和多个数据源,FIS进行交互。这个例子, 分成4个部分: eb购物站点 管理 看销售统计,手工接受/绝订单,界面也是个web应用 订单处理 通过JMS接受/处理订单消息(xm的) 用 Java mal来通知客户 通过JMS发订单给供应商 为何订单数据库 供应商 通过JMS接受订单 派送货物给用户 提供一个基于web的库存管理 维护库存数据库 1.2宠物店网上商店 通过浏览器,让客户可以浏览,把货物放入购物车,创建账户/登陆账户,创建订单,通过信用 卡支付 12.1宠物店走一遭 这章代表了一个用户的视图,他看到的是个啥东西,也就是所说的业务建模 1.211开始窗口 开始界面吧,呵呵,干啥呢:很多功能,运行管理程序:进入宠物店:等,你一点的 接吧,就激活了” mail.screen的URL请求诶
1.1 系统架构统览 petstore1.3 是一个集客户购物,下订单,管理一体的例子! 现实的系统不会是这样单贝儿的,大多数的系统要和多个数据源和其他的 EIS(企业信息系统)打交道 的。这些外部系统可能是资产信息,ERP。也有可能是一个别的公司的 WebService(这东东最近太 XX 热 了)。屁如说,订单的提交可能是一个公司,信用卡服务可能另外的公司,运送又是一个公司。 Petstore1.3 划分成了多个模块,松耦合的设计架构,允许可以和多个数据源,EIS 进行交互。这个例子, 分成 4个部分: • web 购物站点 • 管理 看销售统计,手工接受/拒绝订单,界面也是个 web 应用 • 订单处理 通过 JMS 接受/处理订单消息(xml的) 用 java mail来通知客户 通过 JMS 发订单给供应商 为何订单数据库 • 供应商 通过 JMS 接受订单 派送货物给用户 提供一个基于 web 的库存管理 维护库存数据库 1.2 宠物店网上商店 通过浏览器,让客户可以浏览,把货物放入购物车,创建账户/登陆账户,创建订单,通过信用 卡支付 1.2.1 宠物店走一遭 这章代表了一个用户的视图,他看到的是个啥东西,也就是所说的业务建模。 1.2.1.1开始窗口 开始界面吧,呵呵,干啥呢:很多功能,运行管理程序;进入宠物店;等,你一点的 恋接吧,就激活了”mail.screen”的 URL请求诶
JavaTM Pet Store demo 1.3 The Java Pet Store Demo Is a sample applcaton brought to you by the java 2 Platform, Enterpnse Edtion Blue Prents EEM Blue Prints) program at Java Software, Sun Microsystem Thus sample applcaton demonstrates how to use the capabilites of the J2EE platform to develop feable, scalable, cross-platform comes wth fill source code and documentation, so you can expenment wth zEE technology and leam To start usng the demo, enter the store. Iyou are using this demo for the very firat time, the demo 's database will be automaticall populated( Be prepared to wa for a while as the database s populated. ) You may also forcefully repopulate the demo's database Be prepared to wast for a whle as the database is populated You ca also use the admuagtrator bent About J2EE Blue Prints EE Blue Prnts progam defines the apphcabon programmng model for the EE platform It prowdes best practce guidelines chutectural recommendations for real-world apphcahon scenarios to enable developers to buld portable, scalable, and robust ats program and the Java Pet Store Demo are showcased m the upcoming second edon of Designing Enterprise Appications with the Java 2 Platform, Enterprise Edition. The first editon of thus best-selng book, is avalable at bookstores everywhere, amcludng DigtalGuru and Amazon com CheckouttheJeeBhefrntsWebsteathetp://amyasun.com/iree/Blveprint/ 1.212欢迎窗口 这些可爱的宠物的数据都有了,准备一下,得,显示吧,就下面的这个画面。这个画面其实 是个模板组装的,布局挺好看的吧,呵呵 这个屏幕允许你浏览大类,登录,维护帐户信息(如果你已经登录),改变语言设置。语言 切换是通过一个美国,日文国旗图标恋接实现的,可惜没中文⑧。动物图标代表了种类,鱼 代表鱼,狗代表狗,。。。,点点狗,一看,嘿,恋接 是 product.screen? product id=DOGS”。 JavaTM Pet Store Account ICa 5D J2EEBlue Prints Sample Application etoamalon yst he ef图 ep calon om te ee terms Fo mo ea1sn5数ekm
1.2.1.2欢迎窗口 这些可爱的宠物的数据都有了,准备一下,得,显示吧,就下面的这个画面。这个画面其实 是个模板组装的,布局挺好看的吧,呵呵。 这个屏幕允许你浏览大类,登录,维护帐户信息(如果你已经登录),改变语言设置。语言 切换是通过一个美国,日文国旗图标恋接实现的,可惜没中文。动物图标代表了种类,鱼 代表鱼,狗代表狗,。。。,点点狗,一看,嘿,恋接 是”/product.screen?product_id=DOGS
1213种类窗口( Category Screen 得,列出这个种类下,都有哪些产品,点某个产品,就进去看看这个产品的条目下,有哪些 具体的货物在架,选个吧,然后就可以进去看了 JavaTM Pet Store「m J2EE Blue Prints Sample Application Products for this Category My List uana 器 rattlesnake eptiles companon dog more informaton, visit he e2EE BuP路己 om the J2EE Blue Prints. For The Java pet store Demo is a icbonal 1.214货架/产品窗口 产品屏幕显示所有的产品内容,右面列出了单价,并且有一个 Add to car的加入购物车的 ③ JavaTM pet store As J2EE BluePrints Sample Application Pets Items for this product 馏m The Java Pet store Demo is a icon 0wer路 m the 2EE BveP ea19n8NB超得器是图数em 121.5货物tem窗口 显示每个内容(tem)的详细信息,有个链接可以让你把它放入购物车
1.2.1.3种类窗口(Category Screen) 得,列出这个种类下,都有哪些产品,点某个产品,就进去看看这个产品的条目下,有哪些 具体的货物在架,选个吧,然后就可以进去看了 1.2.1.4货架/产品窗口 产品屏幕显示所有的产品内容,右面列出了单价,并且有一个 Add to Cart的加入购物车的 链接。 1.2.1.5货物 item 窗口 显示每个内容(item)的详细信息,有个链接可以让你把它放入购物车
JavaTM Pet store Account Tcat J2EE BluePrints Sample Application List Price: $125. 50 gates The Java Pet oe bemais a tst he s2ep B UpPicas ep ste al zee epNs. For ea1n5A是得e8 oense tem5 121.6购物车窗口 允许用户更改iem数量,还有个 remove,可以删除item,“ Proceed to Checkout”链接带你 去订单屏幕,当然,如果你没有登录,登录窗口会在你点击之后出现 ③出 /aTM Pet Store Your sh。 pping Cart AoJ! Mae Chuanya Eemo姓 @$12550 Update Car ubtotal: $12550 more thema s a vsit nhe .aep e appinas nebst a ee BuePins For 92001 Sun ense tems 1217登陆窗口 登录窗口允许存在的用户登录,或者创建一个新的帐户和客户
1.2.1.6购物车窗口 允许用户更改 item数量,还有个 remove,可以删除 item, “Proceed to Checkout”链接带你 去订单屏幕,当然,如果你没有登录,登录窗口会在你点击之后出现。 1.2.1.7登陆窗口 登录窗口允许存在的用户登录,或者创建一个新的帐户和客户
JavaTM Pet Store Accourt Cart ints Sample Application n In Are you a returning customer? nestles No, I would like to si Password. Password epeat: 1.218账户信息窗口 用来填写新创建的账户的详细信息,同时也用来维护某个帐户的详细信息 JavaTM Pet store Accoun 'iCan Is J2EE BluePrints Sample Application Pets Your Account Information Contact Information province califomia A Country [United States a E-Mail aaa@bbbc Credit Card Information Card Type [ Java(TM) Card A Profile Information want MyPetStore to be n[English a re. Myst makes your lavon nems and cargoes more/
1.2.1.8账户信息窗口 用来填写新创建的账户的详细信息,同时也用来维护某个帐户的详细信息
1.219订单信息窗口 用来让用户填写订单的发送信息,默认值是当前登录的用户的客户信息中的地址信息,当然 你可以修改。一旦点 submit,就会创建一个订单,发送到订单处理中心 JavaTm pet store Accoun i cart Is SO Pets Your Account Information Billing Informatie。n Ft234 Anywhere steet City [PaD AID Provinee (ca. Postal Code[oDoT Country [United States a ombre 555555555 Shipping Information Nant [ABC [2s4 Anywhere steer s55 Pao Ao Cae ode Moon Country (United States a 12110订单完成窗口 JavaTM Pet Store 'Accor J2EEBluePrints Sample Application eptiles You should recerve a confrmation e-ma soon at Thank you for shoppng with the Java Pet Store Demo The Java Pet more thema is a st he sp e appia wep m h ea 2EE BUePmns For ins
1.2.1.9订单信息窗口 用来让用户填写订单的发送信息,默认值是当前登录的用户的客户信息中的地址信息,当然 你可以修改。一旦点 submit,就会创建一个订单,发送到订单处理中心。 1.2.1.10 订单完成窗口
12,2概要,高层设计吧,我有何选择? ·使用应用框架 小的应用经常不使用应用框架,管理简单的请求转发凌乱的编码习惯大的应用常常使用 MVC应用框架,譬如WAF这样的架构和MVC的功能分离使得应用程序具有更好的重 用性和可维护性 ·WEB层处理商业逻辑 VS EJB层处理 许多应用把商业处理逻辑放到了web层而更大规模的应用常常把处理逻辑放到EJB层, 来提供一个稳定的,大规模的,基于组件的开发模式,以及各种稳定的企业特性如持续性 管理,安全管理,异步通讯,事务处理等特性 本地vs分布处理企业EJB在一个分布架构中 通过远程接口来访问EJB远程EJB提高了稳定性和性能,同时因为是远程调用,要求 EB必须是粗谷粒的。而本地EB和客户端再同一个虚拟机上由于速度快,可以做到 细谷粒。 petstore量采用了 local EJB来提高性能 ·声明的或者是编程实现事务控制 声明的方式,使得管理更容易,但是呢,编程的方式提供了更高的控制。宠物店在显示 数据的时候使用了程序控制,而在更新数据的时候,采用了声明方式。 同步和异步通讯 同步应用适用于适当的时间完成一个特定结果。异步呢,管理起来比较复杂,但对于松 耦合以及可信度不是很高的,并行的操作,很适合。大多数应用使用同步异步结合的方 式。例如,宠物店使用同步方式读取货品的目录 - catalog。而对于发送订单,使用了异步 方式,因为这需要很长时间,而且,订单处理中心不一定在运作过程中。 123宠物店的结构 宠物店的服务从上而下。最上层是WAF( web application framework),来控制应用的屏幕跳转, 产生视图,调用商业组件来完成商业处 图 Pet Store Application Application Logic Application Control and Business Logic and Data. Utilities, Interoperation J2EE Platform System Services WAF提供了许多WEB应用所需的服务,包括,请求的过滤和分发,模板视图的产生, 系列可重用的 taglib,以及屏幕流程控制 应用的组件封装了处理的逻辑,他们代表了商业的数据,并且操作这些商业数据,实体 EB代表了商业实体,如, Customer, Address, Account. Session EjB提供了一些方法, 如登陆一个用户,登出一个用户,管理购物车等。别的 session ejb提供了一些共同的方 法,如产生唯一 identifier。传统的 JavaBean组件变成了值对象,用来在EJB组件和应 用间传递数据。XML文档类则用来处理订单信息
1.2.2 概要,高层设计吧,我有何选择? • 使用应用框架 小的应用经常不使用应用框架,管理简单的请求转发,凌乱的编码习惯.大的应用常常使用 MVC 应用框架,譬如 WAF.这样的架构和 MVC 的功能分离使得应用程序具有更好的重 用性,和可维护性. • WEB 层处理商业逻辑 vs EJB 层处理 许多应用把商业处理逻辑放到了 web 层.而更大规模的应用常常把处理逻辑放到 EJB 层, 来提供一个稳定的,大规模的,基于组件的开发模式,以及各种稳定的企业特性,如,持续性 管理,安全管理,异步通讯,事务处理等特性. • 本地 vs 分布处理. 企业 EJB 在一个分布架构中 通过远程接口来访问 EJB.远程 EJB 提高了稳定性和性能,同时因为是远程调用,要求 EJB 必须是粗谷粒的。而本地 EJB 和客户端再同一个虚拟机上,由于速度快,可以做到 细谷粒。petstore大量采用了 local EJB 来提高性能。 • 声明的或者是编程实现事务控制 声明的方式,使得管理更容易,但是呢,编程的方式提供了更高的控制。宠物店在显示 数据的时候使用了程序控制,而在更新数据的时候,采用了声明方式。 • 同步和异步通讯 同步应用适用于适当的时间完成一个特定结果。异步呢,管理起来比较复杂,但对于松 耦合以及可信度不是很高的,并行的操作,很适合。大多数应用使用同步异步结合的方 式。例如,宠物店使用同步方式读取货品的目录-catalog。而对于发送订单,使用了异步 方式,因为这需要很长时间,而且,订单处理中心不一定在运作过程中。 1.2.3 宠物店的结构 宠物店的服务从上而下。最上层是 WAF(web application framework),来控制应用的屏幕跳转, 产生视图,调用商业组件来完成商业处理。 WAF 提供了许多 WEB 应用所需的服务,包括,请求的过滤和分发,模板视图的产生, 一系列可重用的 taglib,以及屏幕流程控制。 应用的组件封装了处理的逻辑,他们代表了商业的数据,并且操作这些商业数据,实体 EJB 代表了商业实体,如,Customer, Address, Account。Session EJB 提供了一些方法, 如登陆一个用户,登出一个用户,管理购物车等。别的 session ejb 提供了一些共同的方 法,如产生唯一 identifier。传统的 JavaBean 组件变成了值对象,用来在 EJB 组件和应 用间传递数据。XML文档类则用来处理订单信息
宠物店网站的结构 12.5宠物店模块设计 宠物店是一堆接口定义清晰的独立模块组成 控制模块它来分发请求到各个业务处理逻辑,屏幕跳转控制,对应的组件处理,以及用户 的 登录和注册控制模块由WAF实现和扩展 购物车模块-购物车跟踪用户购物过程 登录模块需要用户登录在某些页面登录 消息模块-从宠物店到等单中心用来异步传输订单 别模块-根据用户查询需求提供一个类别视图 客户模块-表示客户信息地址信用卡,联系方式等 Site User Control Product Customer Account Order Message 上图所示,控制模块总控所有的交互和执行,每个用户 session有一个购物车对应 126各个模块的设计方面的深入 每个都分为需求,设计,实现来描述 1.261控制模块 控制模块由WAF组成并且加上用户定义的类和一些相关文件它协调别的模块的动作 控制模块需求控制模块组成了应用的框架,所以,它自然需要一个很高层次的设计/抽象.扩 展性和可维护性应该首要考虑 模块必须能处理所有的HTTP请求
1.2.4 宠物店网站的结构 1.2.5 宠物店模块设计 宠物店是一堆接口定义清晰的独立模块组成. • .控制模块 它来分发请求到各个业务处理逻辑,屏幕跳转控制,对应的组件处理,以及用户 的 • 登录和注册.控制模块由 WAF 实现和扩展. • .购物车模块-购物车跟踪用户购物过程 • .登录模块-需要用户登录在某些页面登录 • .消息模块-从宠物店到等单中心用来异步传输订单 • .类别模块-根据用户查询需求提供一个类别视图 • .客户模块-表示客户信息:地址,信用卡,联系方式等 上图所示,控制模块总控所有的交互和执行,每个用户 session 有一个购物车对应. 1.2.6 各个模块的设计方面的深入 每个都分为需求,设计,实现来描述 1.2.6.1控制模块 控制模块由 WAF 组成,并且加上用户定义的类和一些相关文件.它协调别的模块的动作. 控制模块需求控制模块组成了应用的框架,所以,它自然需要一个很高层次的设计/抽象.扩 展性和可维护性应该首要考虑. ⚫ 模块必须能处理所有的 HTTP 请求