版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 HYPERLINK ./ HYPERLINK ./ HYPERLINK ./ 更多资料请请访问.HYPERLINK E:需需要处理理文档=行行业分类类金金融保险险(htttp:.)(.)更多企业学学院: HYPERLINK ./Shop/ ./SShopp/中小企业业管理全全能版183套讲讲座+8897000份资料 HYPERLINK ./Shop/40.shtml ./Shhop/40.shttml总经理、高高层管理理49套讲座座+1663888份资料 HYPERLINK ./Shop/38.shtml ./Shhop/38.shttml中层管理理学院46套讲座座+60020份份资料 HY
2、PERLINK ./Shop/39.shtml ./Shhop/39.shttml国学智慧慧、易经经46套讲座座 HYPERLINK ./Shop/41.shtml ./Shhop/41.shttml人力资源源学院56套讲座座+2771233份资料 HYPERLINK ./Shop/44.shtml ./Shhop/44.shttml各阶段员员工培训训学院77套讲座座+ 3324份份资料 HYPERLINK ./Shop/49.shtml ./Shhop/49.shttml员工管理理企业学学院67套讲座座+ 887200份资料 HYPERLINK ./Shop/42.shtml ./Shhop
3、/42.shttml工厂生产产管理学学院52套讲座座+ 1139220份资料 HYPERLINK ./Shop/43.shtml ./Shhop/43.shttml财务管理理学院53套讲座座+ 1179445份资料 HYPERLINK ./Shop/45.shtml ./Shhop/45.shttml销售经理理学院56套讲座座+ 1143550份资料 HYPERLINK ./Shop/46.shtml ./Shhop/46.shttml销售人员员培训学学院72套讲座座+ 448799份资料 HYPERLINK ./Shop/47.shtml ./Shhop/47.shttmlJ2EE在在线的银
4、银行应用用程序我们讨论DDUKEE的银行行应用程程序,一一个在线线的银行行应用程程序.他他有两个个客户端端,一个个让管理理员管理理顾客和和账号的的j2eee应用用程序客客户端,一一个让顾顾客访问问账号历历史和执执行的交交易信息息的weeb客户户端。顾顾客通过过实体bbeann访问存存储在数数据库中中的顾客客,账号号,和交交易信息息。DUUKE银银行应用用程序向向我们展展示了我我们在这这本书中中介绍的的所有的的组件-EJBB,j22ee应应用程序序客户端端和weeb组件件是如何何在一起起协同工工作以组组成一个个简单但但又功能能丰富的的应用程程序的。下面的图图片是一一个在高高层次上上的组件件交互图
5、图。在这这一章我我们将详详细讨论论他们的的类型,包包括他们们是如何何编译,部部署,和和运行的的。图17-1 ddukee 银行行应用程程序EJB下图展示了了客户端端,EJJB和数数据库表表之间的的访问路路径。正正如下图图所示,客客户端应应用程序序仅仅只只访问会会话BEEAN,在在EJBB之间的的关系中中,会话话BEAAN是实实体BEEAN的的客户端端。在应应用程序序的末端端,实体体BEAAN通过过访问数数据库中中的表存存储实体体的状态态。这些EJBB的原代代码位于于j2eeetuutorriall/baank/srcc/coom/ssun/ebaank/ejbb子目录录。图:17-2 dduk
6、ee 银行行应用程程序中的的EJBB会话BEAANDUKE的的应用程程序有三三个会话话BEAAN,AAccoounttConntroolleerEJJB,CusstommerCConttrolllerrEJBB和TxCConttrolllerrEJBB(Txx代表一一个业务务交易,比比如银行行转账)这这些会话话BEAAN向客客户端提提供了一一个应用用程序业业务逻辑辑的视图图。它们们隐藏了了服务器器端执行行业务逻逻辑,访访问数据据库,管管理关系系和检查查错误的的细节。AccouuntCConttrolllerrEJBBAccouuntCConttrolllerrEJBB的业务务方法根根据执行行的
7、任务务可以分分为几类类:生成成和删除除实体BBEANN,管理理顾客和和账号之之间的关关系,获获得账号号的信息息。下面的两两个方法法生成和和删除实实体BEEAN。creatteAcccouunt removveAcccouunt AccouuntCConttrolllerrEJBB会话BBEANN的这两两个方法法调用AAccoounttEJBB实体BBEANN的crreatte和rremoove方方法。如如果参数数错误,ccreaateAAccoountt和reemovveAcccouunt方方法将抛抛出应用用程序级级的异常常。如果果参数的的类型不不是Chheckkingg,Saavinngs,
8、Creeditt和Mooneyy Maarkeet, creeateeAcccounnt方法法将抛出出IlllegaalAcccouuntTTypeeExccepttionn异常。ccreaateAAccoountt方法也也通过调调用CuustoomerrEJBB实体BBEANN的方法法finndByyPriimarryKeey来确确定特定定的顾客客是否存存在,如如果顾客客不存在在,crreatteAcccouunt方方法抛出出CusstommerNNotFFounndExxcepptioon异常常。下面的方法法管理账账号和顾顾客之间间的关系系。addCuustoomerrToAAccooun
9、ttremovveCuustoomerrFroomAcccouuntAccouuntEEJB和和CusstommerEEJB实实体BEEAN之之间有着着多对多多的关系系。一个个账号可可以被多多个顾客客使用,一一个顾客客也可以以有多个个账号。因因为实体体BEAAN使用用BMPP(Beean 管理持持久性关关系),所所以有多多种方法法处理这这种关系系。在Dukee的银行行应用程程序中,AAccoounttConntroolleerEJJB会话话BEAAN的使使用adddCuustoomerrToAAccoountt和reemovveCuustoomerrFroomAcccouunt方方法管理理账号
10、和和客户之之间的关关系。例例如adddCuustoomerrToAAccoountt方法开开始先确确定一个个顾客是是否存在在。为了了实现这这种多对对多的关关系,aaddCCusttomeerTooAcccounnt方法法向数据据库表ccusttomeer_aaccoountt_xrref插插入一行行,在这这个交叉叉引用的的表中,每每一行都都包括相相关实体体的cuustoomerrId和和acccounntIdd字段。为为了删除除这种关关系,rremooveCCusttomeerFrromAAccoountt方法从从cusstommer_acccounnt_xxreff表中删删除一行行。下面的方
11、法法得到有有关账号号的信息息。getAcccouuntssOfCCusttomeergetDeetaiilsAccouuntCConttrolllerrEJBB会话BBEANN有两个个gett方法,ggetAAccoounttsOffCusstommer方方法通过过调用AAccoounttEJBB实体BBEANN的fiindBByCuustoomerr方法返返回一个个给定顾顾客的所所有账号号,为了了取代对对AcccounntEJJB的每每一个变变量(即即与数据据库表相相对应的的字段)都都执行gget方方法,AAccoounttConntroolleerEJJB会话话BEAAN通过过一个gget
12、DDetaailss方法返返回一个个封装了了AcccounntEJJB实体体BEAAN状态态的对象象(AcccouuntDDetaailss对象)。CustoomerrConntroolleerEJJB因为AcccounntCoontrrolllerEEJB会会话BEEAN管管理顾客客和账户户之间的的关系,所所以CuustoomerrConntroolleerEJJB会话话BEAAN相对对简单一一些。客客户端通通过调用用CusstommerCConttrolllerrEJBB会话BBEANN的方法法creeateeCusstommer创创建一个个顾客,通通过调用用remmoveeCusstom
13、mer删删除一个个顾客,它它不仅调调用CuustoomerrEJBB实体BBEANN的reemovve 方方法,还还删除ccusttomeer_aaccoountt_xrref表表中包含含相应顾顾客的所所有行。CustoomerrConntroolleerEJJB会话话BEAAN中有有两个方方法返回回多个顾顾客,ggetCCusttomeersOOfAcccouunt和和gettCusstommerssOfLLasttNamme,这这两个方方法调用用CusstommerEEJB实实体BEEAN的的相应的的finnderr方法ffinddByAAccoounttId和和finndByyLasst
14、Naame。TxConntroolleerEJJBTxConntroolleerEJJB会话话BEAAN处理理银行交交易。除除了他的的gett方法ggetTTxsOOfAcccouunt和和gettDettaills,他他还有几几个方法法用于改改变一个个账号中中的余额额。withddrawwdepossitmakeCCharrgemakePPaymmentttranssferrFunnds这些方法通通过访问问AcccounntEJJB实体体BEAAN来确确定账号号的类型型和设置置账号中中的余额额。wiithddraww和deepossit用用于非信信用卡的的账号。mmakeeChaargee和
15、maakePPaymmentt用于信信用卡账账号。如如果账号号的类型型不符合合,这些些方法抛抛出IllleggalAAccoounttTyppeExxcepptioon异常常。如果果在取款款后,账账号中的的余额为为负数,wwithhdraaw则抛抛出InnsuffficcienntFuundssExccepttionn异常。在在用信用用卡支付付中,如如果超过过了信用用卡中的的上限,mmakeeChaargee方法抛抛出InnsuffficcienntCrrediitExxcepptioon异常常。transsferrFunnds方方法不仅仅检查账账号的类类型还检检查账号号中的余余额。如如果需要
16、要,它抛抛出和wwithhdraaw,mmakeeChaargee方法相相同的异异常。ttrannsfeerFuundss必须检检查一个个账号上上的余额额,并把把它加到到另一个个账号上上,这两两步必须须完成,因因此trranssferrFunnds需需要事务务支持,如如果其中中的一步步失败了了,事务务回滚,余余额保持持不变。实体BEAAN在我们简单单的小银银行中,每每一个业业务实体体在duuke银银行应用用程序中中都有一一个对应应的实体体BEAANAccouuntEEJBCustoomerrEJBBTxEJBB这些实体BBEANN的目的的是为了了提供aaccoountt,cuustoomerr
17、,txx这几个个数据库库表的对对象视图图,对数数据库表表中的每每一行,都都有一个个实体BBEANN的实例例变量与与之对应应。因为为这些实实体BEEAN使使用BMMP,所所以他们们包含访访问这些些数据库库表的SSQL语语句。例例如CuustoomerrEJBB实体BBEANN的crreatte方法法调用SSQL语语句的IINSEERT命命令。不像会话BBEANN,这些些实体BBEANN的方法法不验证证参数,除除了ejjbCrreatte方法法的主键键参数。在在设计阶阶段,我我们决定定在会话话BEAAN中验验证参数数,并抛抛出应用用程序级级的异常常,例如如CusstommerNNotIInAccc
18、ouuntEExceeptiion和和IlllegaalAcccouuntTTypeeExccepttionn异常。因因此,假假如其他他的应用用程序使使用这些些实体BBEANN,它的的会话BBEANN仍然必必须验证证方法的的参数。帮助类在EJB的的jarr文件中中包含了了几个被被EJBB使用的的帮助类类,这些些帮助类类的源代代码位于于j2eeetuutorriall/baank/srcc/coom/ssun/ebaank/utiil目录录下。下下面的表表格简单单的表述述了这些些帮助类类。类名描述AccouuntDDetaailss封装了AcccouuntEEJB的的实例状状态,被被Acccou
19、nntEJJB和AAccoounttConntroolleerEJJB的ggetDDetaailss方法返返回。CodeddNammes定义了在调调用loookuup方法法中使用用的字符符串的逻逻辑名称称,例如如javva:ccompp/ennv/eejb/acccounnt,EEJBGGettter类类引用这这些字符符串。CustoomerrDettaills封装了CuustoomerrEJBB的实例例状态,被被CusstommerEEJB和和CusstommerCConttrolllerrEJBB的geetDeetaiils方方法返回回DBHellperr提供一些产产生下一一个主键键的方法
20、法。例如如gettNexxtAcccouuntIId方法法Debugg提供一些简简单的方方法打印印EJBB的编译译信息。如如果j22ee serrverr使用-verrbosse选项项运行,这这些信息息出现在在serrverr的控制制台上DomaiinUttil包含一些验验证方法法,例如如gettAcccounntTyypess,chheckkAcccounntTyype,iisCrrediitAcccouunt。EJBGeetteer包含一些方方法(通通过调用用loookupp方法)定定位并返返回HOOME接接口。例例如geetAcccouuntCConttrolllerrHommeTxDe
21、ttaills封装了TxxEJBB的实例例状态,被被TxEEJB和和TxCConttrolllerrEJBB的geetDeetaiils方方法返回回 表表 17-1 ddukee 应用用程序EEJB的的帮助类类数据库表在dukee的银行行应用程程序中,数数据库的的表可根根据他们们的目的的分类,一一类代表表业务实实体,一一类管理理产生下下一个主主键。代表业务实实体的表表下图展示了了数据库库表之间间的关系系。cuustoomerr和acccouunt 表之间间有一个个多对多多的关系系。一个个顾客可可能有多多个账号号,一个个账号也也可能被被多个顾顾客所拥拥有。这这个多对对多的关关系通过过交叉表表cu
22、stoomerr_acccouunt_xreef来实实现。aaccoountt和txx表有一一个一对对多的关关系。在在一个账账号上可可以进行行多次业业务交易易,但是是一次业业务交易易只能引引用一个个账号。图: 17-3 ddukee 应用用程序中中的数据据库表在图中我们们使用了了几个简简写。PPK代表表主键(pprimmaryy keey)它它的值唯唯一确定定了数据据库表中中的一行行。FKK是外键键的简写写,这个个字段是是被引用用的数据据库表中中的主键键。Txx代表一一个业务务过程。例例如取款款和存款款。管理下一个个主键的的表这些表有下下面几个个:next_acccounnt_iidnext_
23、cusstommer_idnext_acccounnt_iidnext_tx_id这些表的每每一个中中都有一一个单独独的列叫叫做idd,他的的值被传传给实体体BEAAN的ccreaate方方法。例例如,在在创建一一个AcccouuntEEJB实实体BEEAN之之前,AAccoounttConntroolleerEJJB会话话BEAAN必须须通过调调用DBBHellperr类的ggetNNexttAcccounntIdd方法获获得一个个唯一的的值。ggetNNexttAcccounntIdd从neext_acccounnt_iid表中中读出iid的值值,并在在数据库库表中增增加idd的值,返返回
24、idd。保护EJBB在j2eee平台,你你可以建建立访问问EJBB方法的的角色,相相应的角角色访问问EJBB相应的的方法。在在dukke的银银行应用用程序中中,根据据他们的的操作类类型定义义了两种种角色,银银行顾客客和银行行管理员员。属于于银行管管理员角角色的用用户,可可以执行行管理功功能:创创建和删删除一个个账户,给给一个账账户增加加或者删删除顾客客,设置置信用卡卡的上限限,设置置初始账账号的余余额。属属于银行行顾客角角色的用用户,可可以存款款取款,转转账等功功能。注注意:两两个角色色可执行行的功能能上不会会有重叠叠。通过在CuustoomerrConntroolleerEJJb,AAcco
25、ounttConntroolleerEJJB和TTxCoontrrolllerEEJB会会话BEEAN的的特定的的方法上上设置访访问允许许权,限限制角色色对这些些方法的的访问。例例如,可可以允许许只有属属于银行行管理员员角色的的用户可可以访问问AcccounntCoontrrolllerEEJB的的creeateeAcccounnt方法法,可以以拒绝属属于银行行顾客角角色或其其他角色色的用户户创建账账号。为为了查看看是否设设置了方方法的允允许权,在在depployytoool中的的树状视视图中找找到CuustoomerrConntroolleerEJJB,AAccoounttConntrool
26、leerEJJB和TTxCoontrrolllerEEJb。对对其中的的每一个个选择安安全标签签(Seecurrityy taab)检检查方法法的允许许权。应用程序客客户端有时候企业业应用程程序有一一个单独独的应用用程序客客户端来来处理一一些例如如系统和和应用程程序管理理的任务务。例如如在duuke的的银行应应用程序序中通过过一个jj2eee应用程程序客户户端来手手工管理理顾客和和账号。这这样做在在站点因因为某种种原因不不能使用用或者客客户喜欢欢通过电电话来交交流事情情,例如如,改变变账号的的某些信信息时,是是十分有有用处的的。一个j2eee应用用程序客客户端是是一个通通过命令令行或者者桌面启
27、启动的单单独的应应用程序序。它访访问运行行在j22ee服服务器上上的EJJB。J2ee客客户端应应用程序序通过一一个swwingg用户界界面来管管理顾客客和账号号。如下下图所示示:银行行管理员员可以通通过选择择菜单执执行下面面的功能能:客户管理查看顾客信信息增加新顾客客更新顾客信信息查找顾客的的id(标志) 图 : 177-4 应用程程序客户户端界面面账号管理增加一个新新账号。给一个存在在的账号号增加新新顾客查看账号的的信息。删除账号错误和一些些信息出出现在左左边的aappllicaatioon mmesssagee waatchh(上图图)面板板的下面面。数据据显示在在右边的的面板上上。类和
28、他们之之间的关关系j2ee客客户端应应用程序序被分为为三个类类BannkAddminn,EvventtHanndlee,DaataMModeel,这这三个类类之间的的关系如如下图(下下一页)所所示:BankAAdmiin对象象建立初初始化的的用户界界面,创创建EvventtHanndlee对象,并并为EvventtHanndlee和DaataMModeel对象象提供调调用的方方法更新新用户界界面。EventtHanndlee对象监监听用户户按下的的按钮,并并根据按按钮作相相应的处处理。创创建DaataMModeel对象象,并调调用DaataMModeel的方方法从底底层的数数据库中中读写数数据
29、,并并在处理理结束时时调用BBankkAdmmin的的方法更更新用户户界面。DataMModeel对象象从用户户界面中中检索数数据,执执行数据据检查,并并向数据据库中写写有效数数据,或或者从数数据库中中读数据据。当数数据库的的读写成成功时,根根据对数数据库的的读写,调调用BaankAAdmiin类的的方法更更新用户户界面。BankAAdmiin类创建用户界界面的BBankkAdmmin类类,带有有maiin方法法,并提提供一些些受保护护的方法法供BaankAAdmiin应用用程序的的其他类类调用。图: 17-5类之间间关系图图main 方法main方方法创建建BannkAddminn和Evve
30、nttHanndlee类的实实例,传传递给mmainn方法的的参数用用于确定定相应的的地区(即即次应用用程序在在中国使使用汉语语运行,还还是在英英国使用用英语运运行),并并被传递递到BaankAAdmiin的构构造方法法中。publiic sstattic voiid mmainn(Sttrinng aargss) Sttrinng llangguagge, couuntrry; iff(arrgs.lenngthh = 1) laanguuagee = neww Sttrinng(aargss0); cuurreentLLocaale = nnew Loccalee(laanguuagee,
31、 ); elsse iif(aargss.leengtth = 22) laanguuagee = neww Sttrinng(aargss0); coounttry = nnew Strringg(arrgs1); cuurreentLLocaale = nnew Loccalee(laanguuagee, ccounntryy); elsse cuurreentLLocaale = LLocaale.gettDeffaullt(); frramee = neww BaankAAdmiin(ccurrrenttLoccalee); frramee.seetTiitlee(meessaages
32、s.geetSttrinng(CusstAnndAcccouuntAAdmiin); WiindoowLiisteenerr l = nnew WinndowwAdaapteer() puubliic vvoidd wiindoowCllosiing(WinndowwEveent e) Syysteem.eexitt(0); ; frramee.adddWiindoowLiisteenerr(l); frramee.paack(); frramee.seetViisibble(truue); ehhanddle = nnew EveentHHanddle(fraame, meessaagess
33、); Syysteem.eexitt(0); 构造方法构造方法用用于建立立初始的的用户界界面,包包含一个个菜单条条和两个个面板。菜菜单条包包括cuustoomerr和acccouunt菜菜单,左左边的面面板包含含一个消消息区,右右边的面面板是显显示或者者更新数数据区。类的方法BankAAdmiin提供供了一些些更新用用户界面面的方法法。这些些方法的的描述如如下:clearrMesssagges:清除出出现在左左边面板板上的应应用程序序的消息息。resettPannelTTwo:当用户户在点击击ok表表示显示示或者更更新数据据结束时时调用,重重新设置置右边的的面板。creattePaanellT
34、wooActtLabbelss:当显显示或者者更新账账号信息息时为账账号的字字段创建建标签。creatteAcctFiieldds:当当显示或或者更新新账号信信息时创创建账号号字段。creattePaanellTwooCusstLaabells:当当显示或或者更新新顾客信信息时为为顾客的的字段创创建标签签。creatteCuustFFiellds:当显示示或者更更新顾客客信息时时创建顾顾客的字字段。addCuustTToAcctFiieldds:当当在一个个账号上上添加顾顾客时创创建标签签和字段段makeRRadiioBuuttoons:当创建建一个新新的账号号时创建建单选按按钮,选选择创建建
35、账号的的类型getDeescrripttionn:创建建单选按按钮的标标签用于于描述账账号的类类型信息息EventtHanndlee类EventtHanndlee执行AActiionLListteneer接口口,这是是一个用用于处理理行为事事件的方方法接口口。像其其他的用用javva 语语言写的的接口一一样,AActiionLListteneer接口口定义了了一个方方法集,但但并没有有实现它它们。你你必须根根据应用用程序的的具体行行为实现现他们。构造方法构造方法检检索ReesouurceeBunndlee 和BannkAddminn类的实实例,并并把他们们赋值给给自己的的私有变变量,这这样子E
36、EvenntHaandlle就可可以访问问用户界界面上的的本地化化后的文文本并根根据需要要更新用用户界面面。最后EveentHHanddle的的构造方方法调用用hoookuppEveentss方法创创建一个个内在类类监听和和处理行行为事件件。publiic EEvenntHaandlle(BBankkAdmmin fraame, ReesouurceeBunndlee meessaagess) tthiss.frramee = fraame; tthiss.meessaagess = messsagges; tthiss.daataMModeel = neew DDataaModdel(fra
37、ame, meessaagess); /Hoook up acttionn evventts hhookkupEEvennts(); actioonPeerfoormeed方法法ActioonLiisteenerr接口只只有一个个方法aactiionPPerfformmed方方法。这这个方法法处理当当用户创创建一个个新账号号时,用用户界面面产生的的行为事事件。确确切地讲讲:当银银行管理理员选择择用户账账号类型型的单选选按钮时时,它设设置用户户账号类类型的描描述,当当管理员员按初始始余额上上的返回回键时,它它设置新新账号的的初始余余额。hookuupEvventts方法法hookuupEvven
38、tts方法法使用内内在类处处理菜单单和按钮钮的按下下事件。一一个内在在类是一一个类嵌嵌在或者者定义在在另一个个类中。使使用内在在类使代代码更加加模块化化,更加加容易阅阅读和维维护。EEvenntHaandlle的内内在类管管理下列列应用程程序客户户端的操操作。查看顾客信信息创建新顾客客更新顾客信信息通过顾客的的lasstNaame查查询顾客客的Idd查看账号信信息创建新账号号给一个账号号增加一一个客户户删除账号当canccle按按钮被按按下时清清除数据据。当ok按钮钮被按下下时处理理数据。DataMModeel类DataMModeel类提提供一些些方法从从数据库库中读写写数据,从从用户界界面检
39、索索数据,并并在数据据写入数数据库之之前检查查数据的的正确性性。构造方法构造方法检检索BaankAAdmiin类的的实例变变量并把把它赋值值给自己己的私有有变量,所所以当BBankkAdmmin的的cheeckAActDDataa, chheckkCusstDaata,和 wriiteDDataa方法检检查到错错误时,就就可以在在用户界界面的面面板上显显示错误误信息。他他也收到到一个RResoourcceBuundlle类的的实例并并把它赋赋值给自自己的私私有变量量,以使使它能够够收到应应用程序序客户的的本地化化后的文文本。因为DattaMoodell类和数数据库进进行交互互,所以以构造方方法
40、中也也有一些些代码用用于建立立和CuustoomerrConntroolleerEJJB和AAccoounttConntroolleerEJJB会话话BEAAN的远远程接口口的连接接,并通通过它们们的远程程接口创创建它们们的实例例。/Connstrructtorpubliic DDataaModdel(BannkAddminn frramee, RResoourcceBuundlle mmesssagees) thhis.fraame = fframme; thhis.messsagges = mmesssagees;/Loook uup aand creeatee CuustoomerrCo
41、nntroolleer bbeann ttry CuustoomerrConntroolleerHoome cusstommerCConttrolllerrHomme = EJJBGeetteer. geetCuustoomerrConntroolleerHoome(); cuustoomerr = cusstommerCConttrolllerrHomme.ccreaate(); caatchh (EExceeptiion NamminggExccepttionn) NaaminngExxcepptioon.pprinntSttackkTraace(); /Loook uup aand cr
42、eeatee AcccouuntCConttrolllerr beean ttry AcccouuntCConttrolllerrHomme aaccoounttConntroolleerHoome = EJJBGeetteer.ggetAAccoounttConntroolleerHoome(); acccouunt = aaccoounttConntroolleerHoome.creeatee(); caatchh (EExceeptiion NamminggExccepttionn) NaaminngExxcepptioon.pprinntSttackkTraace(); 方法getDa
43、ata方方法从用用户界面面的文本本字段中中检索数数据,并并使用SStriing.triim方法法除掉数数据中的的多余的的控制字字符,例例如空格格和回车车字符。他他有一个个JTeextFFileed类型型的参数数,所以以任何JJTexxtFiieldd类的实实例都可可以被传传送并处处理。privaate Strringg geetDaata(JTeextFFielld ccompponeent) SStriing texxt, triimmeed; iif(ccompponeent.gettTexxt().leengtth() 0) teext = ccompponeent.gettTexxt(
44、); trrimmmed = ttextt.trrim(); reeturrn ttrimmmedd; ellse teext = nnulll; reeturrn ttextt; checkkCusstDaata方方法存储储从geetDaata方方法中得得到的顾顾客的数数据,但但是它首首先检查查所有要要求的字字段必须须有数据据,中间间的大写写不能超超过一个个字符,状状态不能能超过两两个字符符。当一一切都检检查完毕毕,它调调用wrriteeDatta 方方法。如如果有错错误,错错误信息息被打印印在BaankAAdmiin对象象的用户户界面上上。chheckkActtDatta使用用类似的的方法
45、检检查和存存储账号号的数据据。creatteCuustIInf和和creeateeActtInff方法被被EveentHHanddle类类调用,在在查看,更更新,创创建事件件中刷新新面板22的显示示信息。创建顾客信信息在查看和更更新事件件中,ccreaateCCusttInff方法从从数据库库中读出出特定顾顾客的信信息,并并把他们们传递给给BannkAddminn类的ccreaateCCusttFieeldss方法。一一个布尔尔型的变变量被用用来确定定creeateeCusstFiieldds方法法是创建建查看事事件中的的只读字字段还是是更新事事件中的的可写字字段。在创建事件件中,ccreaa
46、teCCusttInff方法通通过空数数据和一一个布尔尔型的变变量调用用BannkAddminn类的ccreaateCCusttFieeldss创建一一些空的的可编辑辑的字段段,供用用户输入入顾客的的数据。创建账号信信息在查看和更更新事件件中,ccreaateAActIInf方方法从数数据库中中读出特特定账号号的信息息,并把把他们传传递给BBankkAdmmin类类的crreatteAcctFiieldds方法法。一个个布尔型型的变量量被用来来确定ccreaateAActFFiellds方方法是创创建查看看事件中中的只读读字段还还是更新新事件中中的可写写字段。在创建事件件中,ccreaateA
47、ActIInf方方法通过过空数据据和一个个布尔型型的变量量调用BBankkAdmmin类类的crreatteAcctFiieldds创建建一些空空的可编编辑的字字段,供供用户输输入账号号的数据据。在一个账号号上增加加或者删删除一个个顾客,不不需要创创建任何何用户界界面组件件,直接接在数据据库上操操作。Web客户户端在dukee的银行行应用程程序中,顾顾客通过过webb 客户户端访问问账号信信息并在在账号上上进行操操作。下下面的表表格显示示了weeb 客客户端的的功能和和使用这这些功能能须访问问的URRL,以以及执行行这些功功能的组组件。功能URL的别别名Jsp页面面JavaBBea组组件主页/
48、mainnmain.jspp登陆和离开开页面/logoon/llogoonErrrorr/loogoffflogonn.jssplogonnErrror.jspploggofff.jssp列出账号/accoounttLisstaccouuntLListt.jssp列出账号的的历史/accoounttHisstaccouuntHHistt.jsspAccouuntHHisttoryyBeaan在账号之间间转账/trannsfeerFuundss/trranssferrAckktranssferrFunnds.jspptraansfferAAck.jsppTranssferrBeaan取款存款/a
49、tm/atmmAckkatm.jjspaatmAAck.jsppATMBeean错误处理/erroorerrorr.jssp 表: 177-2 webb客户端端下面是显示示账号历历史的页页面视图图 图 17-6 账号历历史设计策略在dukee的银行行应用程程序中,JJsp页页面的主主要工作作是显示示。一种种开发可可维护的的Jspp页面的的策略是是减少嵌嵌入Jssp页面面的脚本本,为了了达到这这个目的的,许多多动态的的处理任任务都由由EJBB,自定定义标记记(taag)和和JavvaBeean组组件完成成。在dukee的银行行应用程程序中,JJsp页页面使用用EJBB处理和和数据库库的交互互。而
50、且且在和EEJB交交互的时时候Jssp主要要依赖JJavaaBeaan组件件。在ddukee的书店店应用程程序中(参参看第十十章和十十三章),JJavaaBeaan组件件BoookDBB扮演了了通向数数据库的的前端或或者说一一个通向向EJBB提供的的接口的的通道。在在dukke的银银行应用用程序中中,TrranssferrBeaan扮演演着同样样的角色色。然而而其他的的JavvaBeean组组件有着着丰富的的功能。AATMBBeann调用EEJB的的方法并并根据顾顾客确定定的输入入设置字字符串。AAccoounttHisstorryBeean保保存着从从EJBB中得到到的顾客客想看到到的数据据
51、的信息息。Web客户户端通过过使用一一个由自自定义标标记实现现的模板板机制维维护着一一个通用用的几乎乎覆盖所所有的JJsp页页面的视视图。模模板机制制由以下下三个组组件组成成:templlatee.jssp:定定义了每每一个屏屏幕的结结构。他他使用iinseert 标记插插入子组组件组成成一个屏屏幕。screeenDeefinnitiionss.jssp:定定义了组组成被每每一个屏屏幕使用用的子组组件,每每一个屏屏幕有相相同的行行为,但但是有不不同的标标题和主主体部分分。dispaatchher :一个个serrvleet,用用于处理理请求并并将请求求转发给给temmplaate.jspp。最
52、后,weeb客户户端使用用了下列列三种逻逻辑标记记iteeratte, equual, 和 nottEquual来自自Strrutss 标记库。Web客户户端的生生命循环环初始化weeb客户户端的组组件BeanMManaagerr类担负负着管理理客户端端使用的的EJBB的责任任。它创创建顾客客,账号号和控制制EJBB,并提提供检索索EJBB的方法法。当初始化以以后,BBeannMannageer类从从帮助类类EJBBGettterr中检索索每个EEJb的的homme 接接口,并并通过调调用hoome 接口的的creeatee方法创创建他们们的实例例。因为为这是一一个应用用程序级级别的功功能,所
53、所以当客客户端初初始化时时,BeeanMManaagerr类自身身被CoonteextLListteneer类创创建并作作为一个个Conntexxt的属属性保存存。publiic cclasss BBeannMannageer prrivaate CusstommerCConttrolllerr cuustcctl; prrivaate AcccounntCoontrrolller accctcttl; prrivaate TxCConttrolllerr txxctll; puubliic BBeannMannageer() iff (ccusttctll = nuull) trry Cuu
54、stoomerrConntroolleerHoome homme = EJJBGeetteer.ggetCCusttomeerCoontrrolllerHHomee(); cuustcctl = hhomee.crreatte(); cattch (ReemotteExxcepptioon eex) Syysteem.oout.priintlln(.); cattch (CrreatteExxcepptioon eex) Syysteem.oout.priintlln(); cattch (NaaminngExxcepptioon eex) Syysteem.oout.priintlln();
55、 puubliic CCusttomeerCoontrrolller gettCusstommerCConttrolllerr() reeturrn ccusttctll; .publiic ffinaal cclasss CConttexttLisstenner immpleemennts SerrvleetCoonteextLListteneer prrivaate SerrvleetCoonteext conntexxt = nuull; . puubliic vvoidd coonteextIInittiallizeed(SServvlettConntexxtEvventt evven
56、tt) thhis.conntexxt = evventt.geetSeervlletCConttextt(); coonteext.settAtttribbutee(bbeannMannageer, neew BBeannMannageer(); coonteext.logg(cconttexttIniitiaalizzed(); . 请求处理所有请求的的URLLs列在在表188-2中中,这些些请求被被映射到到disspattcheer wweb组组件上,ddisppatccherr weeb组件件由diispaatchher serrvleet 实实现:publiic cclasss DD
57、isppatccherr exxtennds HtttpSeervllet puubliic vvoidd dooPosst(HHttppSerrvleetReequeest reqquesst, HtttpSServvlettRessponnse ressponnse) . Sttrinng sseleecteedSccreeen = reequeest.gettSerrvleetPaath(); reequeest.settAtttribbutee(sseleecteedSccreeen, seeleccteddScrreenn); BeeanMManaagerr beeanMManaag
58、err = gettSerrvleetCoonteext().ggetAAttrribuute( bbeannMannageer); . iff (sseleecteedSccreeen.eequaals(/aaccoounttHisst) . elsse iif (sellecttedSScreeen.equualss(/traansfferAAck) Sttrinng ffrommAcccounntIdd = reequeest.gettParrameeterr(ffrommAcccounntIdd); Sttrinng ttoAcccouuntIId = reequeest.gettPa
59、rrameeterr(ttoAcccouuntIId); iff ( (frromAAccoounttId = nulll) | (tooAcccounntIdd = nuull) reequeest.settAtttribbutee(sseleecteedSccreeen, /errror); reequeest.settAtttribbutee(eerroorMeessaage, meessaagess.geetSttrinng(AcccounntErrrorr); elsse TrranssferrBeaan ttrannsfeerBeean = nnew TraansfferBBean
60、n(); reequeest.settAtttribbutee(ttrannsfeerBeean, trranssferrBeaan); trranssferrBeaan.ssetMMesssagees(mmesssagees); trranssferrBeaan.ssetFFrommAcccounntIdd(frromAAccoounttId); trranssferrBeaan.ssetTToAcccouuntIId(ttoAcccouuntIId); trranssferrBeaan.ssetBBeannMannageer(bbeannMannageer); trry trranssfe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中考铁路题材语文题目及参考答案
- 2026信息安全风险评估与控制专项训练
- 2026年幼儿艺术欣赏与创作能力测试卷
- 2026年金融伦理与职业道德测试
- 2026年基础护理学基础护理操作技能模拟试题
- 2026年电子技术基础理论模拟试题
- 2026年绿色出行理念普及考试卷
- 2026年专升本英语阅读理解专项训练
- 2026年天津市人教版五年级语文下册第4单元课后练习题
- 2026年建筑工程施工组织与管理模拟试题
- 2025年法院司法辅助人员真题附参考答案详解
- 2026乐山市市中区国有企业第二批社会招聘6人考试备考试题及答案详解
- 2026年渠县人力资源和社会保障局增量政策性岗位招募175人笔试备考试题及答案详解
- 2026宁夏中卫市海原县属国有企业领导人员招聘9人考试参考题库及答案详解
- 2022 低环境温度空气源多联式热泵(空调)机组
- 2026新版三年级上册语文暑假课文预习完整版
- 公司财务管理制度完整范本
- 2023版MRI临床应用安全专家共识课件
- 2025四川省夹金山国有林保护局有限公司招聘6人笔试历年参考题库附带答案详解
- 2026年审计系统公文写作规范考试题
- 2026年农商银行网络运维岗位题库
评论
0/150
提交评论