J2EE体系技术支持下开发网上书店示例.doc_第1页
J2EE体系技术支持下开发网上书店示例.doc_第2页
J2EE体系技术支持下开发网上书店示例.doc_第3页
J2EE体系技术支持下开发网上书店示例.doc_第4页
J2EE体系技术支持下开发网上书店示例.doc_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

J2EE体系技术支持下开发网上书店示例要求:在Weblogic7.0和JBuilder9.0下用JSP和JavaBean技术开发5.4.3中介绍的网上购物系统。该示例在Weblogic8.1+JBuilder9.0+SQL Server 2000下实现。利用JSP、EJB(无状态会话Bean、有状态会话Bean、CMP)等技术,完成用户登录、浏览书目、订购图书并进行结算等基本功能。 在JBuilder中运行整个工程 网上购书系统设计本示例的程序设计分为以下四大部分: 1、数据库设计该部分完成数据存储功能,本示例数据库bookstore1中的表及其字段列表如下:表名 字段 客户信息 logname、realname、password、email 书籍信息 bookid、name、author、content、category、commend、publish_name、publish_address、price、on_sale_time、bk_num 订单 user_name、user_address、user_tel、user_cid、book_id、book_number、status、goods_price 表1 本示例数据库bookstore1中的表及其字段列表2、EJB设计该部分相当于系统的一组模型,封装了系统的数据及业务规则,本示例程序中的EJB及其功能列表如下: EJB 功能 Members以数据库bookstore1中的表“客户信息”为数据源的CMP实体Bean,代表合法成员,具有能够返回表“客户信息”中全部数据集合的Finder方法memberfacade无状态会话Bean,是login_confirm.jsp访问实体Bean Members的接口,将从login_confirm.jsp接收到的用户名及密码与实体Bean Members返回的数据集合比较,从而验证登录用户的合法性Bookitem以数据库bookstore1中的表“书籍信息”为数据源的CMP实体Bean,代表书籍,具有能够返回表“书籍信息”中全部数据集合的Finder方法bookfacade无状态会话Bean,是browse.jsp访问实体Bean Bookitem的接口,具有将从实体Bean Bookitem返回的数据集合通过browse.jsp呈现给用户Order以数据库bookstore1中的表“订单”为数据源的CMP实体Bean,代表订单信息,具有能够返回表“订单”中特定用户全部数据集合的Finder方法cart有状态会话Bean,代表购物车,能够将用户在browse.jsp中选中的书籍加入购物车并进行结算,并将购物车内容及结算结果通过cart.jsp、order.jsp、submit_order.jsp呈现给用户 表2 本示例程序中的EJB及其功能列表3、Web应用程序设计 该部分主要完成视图和控制功能,即获得用户请求,并依据用户请求调用EJB提供的功能,同时提供整个网上购书系统的前端数据展现,本示例程序中的JSP文件名及其功能列表如下:文件名 功能 login.html 登录界面,要求输入用户名和密码 login_confirm.jsp 通过调用memberfacade检查用户名及密码的合法性,并将当前用户名设置为会话属性,供其他JSP文件调用 browse.jsp 通过调用bookfacade显示书库中的书籍列表,要求用户选购书籍 cart.jsp 通过调用cart将用户选中的书籍加入购物车,并进行结算 order.jsp 要求用户输入定购信息,并调用cart将用户信息写入“订单”表 submit_order.jsp 通过调用cart将用户订单信息再次显示给用户,并结束本次购书 表3 本示例程序中的JSP文件名及其功能列表4、Java类设计本部分主要完成JSP和EJB代码的简化和结构化,本示例程序中的类文件名及其功能列表如下:类文件名 功能 book.java用于EJB的查询方法参数或返回值类型,代表书籍Userbook.java和book.java的功能相似,但包含了一个描述定购的书的数目属性memb.java用于EJB的查询方法中,代表用户名和密码。SessionListener.java利用监听Servlet监听当前在线人数。GetInitialContext.java提供方法建立WLS8.1的命名、目录服务对象 表4 本示例程序中的类文件名及其功能列表 网上购书系统的实现一、建立数据库和数据源1、 在SQL Server 2000中新建数据库bookstore1,并在bookstore1中新建表“客户信息”、“书籍信息”及“订单”, 表“客户信息”、“书籍信息”及“订单”的结构设计如图11-27-1、11-27-2和11-27-3。11-27-1 表“客户信息”的结构设计11-27-2 表“书籍信息”的结构设计11-27-3 表“订单”的结构设计2、在这三个表中分别录入几条记录,如图11-28-1、11-28-2和11-28-311-28-1 表“客户信息”中的数据11-28-2 表“书籍信息”中的数据11-28-3 表“书籍信息”中的数据3、启动WLS 8.1,打开控制台,建立指向bookstore1数据库的连接池,步骤如图11-29-111-29-8。11-29-1在控制台界面中用鼠标单击“Connection Pools”11-29-2选择配置新的JDBC连接池11-29-3选择数据库选择数据库类型(Database Type)为:MS SQL Server数据库数据库驱动程序(Database Driver)为:Weblogics MS SQL Server Driver (Type 4) Versions:7.0, 2点击Continue按钮。11-29-4定义连接属性配置参数如下:Name:bookstorePoolDatabase Name:bookstore1Host Name: localhostDatabase User Name: sa(注:在SQL Server 2000中设置“使用SQL Server身份验证”,并根据“登录名”配置该项参数)Password: *(注:设置为SQL Server 2000的登录密码)Confirm Password:* 点击Continue按钮。接着出现测试数据库连接界面(Test database connection)如下:11-29-5测试数据库连接界面(Test database connection) 点击Test Driver Configuration按钮,如测试成功会出现界面如下:11-29-6测试数据库连接成功界面点击Create and deploy按钮。部署成功回到界面如下:11-29-7JDBC连接池(Connection Pools) 11-29-8 成功创建连接池后控制台左栏界面中出现bookstorePool4、建立指向bookstore1数据库连接池的数据源,步骤如图11-30-111-30-9。11-30-1在控制台界面中用鼠标单击“Data Sources”在出现的JDBC Data Sources界面中单击Configure a new JDBC Data Source超级连接11-30-2 选择配置新的JDBC数据源11-30-3在“Configure the data source”中进行配置配置参数如下:Name:bookstoreSourceJNDI Name:bookstoreSource点击Continue按钮。11-30-4在“Connect to connection pool”中进行选择bookstorePool选择刚才建的bookstorePool,点击Continue按钮。11-30-5在“Target the data source”单击Create按钮成功配置后的出现的界面如下:11-30-6配置完成,可单击bookstoreSource超级连接查看11-30-7 Configuration选项卡在Configuration选项卡中单击Advanced Options 中的Show超级连接11-30-8选中Emulate Two-Phase Commit for non-XA Driver选中Emulate Two-Phase Commit for non-XA Driver,其余采用默认设置,单击Apply按钮。重新启动Weblogic服务器使设置生效。11-30-9 成功创建数据源后控制台左栏界面中出现bookstoreSource二、开发实现用户登录验证的EJB Module:membentity 1、 启动Jbuilder9,在菜单中依次选择“FileNew Project”,新建一个工程bookstore,设置信息如图11-31所示。11-31 新建工程bookstore2、 依次选择Next,完成新工程的创建,左栏界面将出现该工程,如图11-32所示。11-32 成功创建新工程后的界面3、 在菜单中依次选择“FileNew”,如图11-33所示,在Object Gallery窗口中的Enterprise中选择EJB Module后,点击OK。11-33在Object Gallery窗口中的Enterprise中选择EJB Module4、 如图11-34所示,在EJB Module Wizard窗口中Name项输入membentity,其余采用默认设置,单击OK。11-34在EJB Module Wizard窗口中进行设置 5、如图11-35所示,在右栏界面的空白处单击鼠标右键,在弹出的菜单中选择Import Schema From Database,从数据库中引入数据模式。11-35从数据库中引入数据模式6、 11-36所示,在Database Schema Provider中设置数据库连接信息,本例中要连接的数据库是在SQL Server 2000中建立的数据库bookstore1。各项设置如下: 选中All schemasDriver:weblogic.jdbc.mssqlserver4.DriverURL:jdbc:weblogic:mssqlserver4:bookstore1localhostUsername:(SQL Server身份验证的登录名)Password:(SQL Server身份验证的登录密码)Datebase name: weblogic:mssqlserver4:bookstore1localhostJNDI name:bookstoreSource 其余设置为空设置完毕后选择OK。图11-36 在Database Schema Provider中设置数据源注:若weblogic.jdbc.mssqlserver4.Driver不存在,则在Jbuilder9中依次选择ToolsEnterprise Setup菜单,并如图11-36-1所示,在Enterprise Setup窗口中的DataBase Drivers选项卡中通过点击Add按钮加入WebLogic7xClient后选择OK并重新启动Jbuilder9后即可。图11-36-1加载weblogic.jdbc.mssqlserver4.Driver7、如图11-37所示,在左栏界面下方的数据源中的“客户信息”单击鼠标右键,在弹出的菜单中选择Creat CMP 2.0 Entity Bean,在membentity中创建一个名为Members的CMP实体Bean。图11-37 在membentity中创建一个CMP实体Bean8、如图11-38所示,在右栏界面中的“客户信息”处单击鼠标,显示该实体Bean的各项属性,更改Bean name为Members。图11-38 Members实体Bean的各项属性9、如图11-39所示在Members处单击鼠标右键,依次选择AddFinder菜单,建立一个Finder方法。图11-39 为Members增加Finder方法10、在弹出的属性框中输入Finder方法的各项属性,如图11-40所示设置以下属性:Finder name:findalluserReturn type:java.util.CollectionHome interface:local homeQuery:SELECT OBJECT(m) FROM Members AS m图11-40 设置Finder方法的各项属性11、如图11-41所示,在空白处点击鼠标右键,依次选择Create EJBSession Bean菜单,在membentity中创建访问实体Bean Members的无状态会话Bean 。图11-41 在membentity中创建访问实体Bean的无状态会话Bean12、如图11-42所示设置无状态会话Bean的属性:Bean name:membentityfacadeInterfaces:remoteSession type:StatelessTransaction type:Container图11-42 设置无状态会话Bean的属性13、在membentityfacade处单击鼠标右键,选择Open DD Editor,在窗口下方选择EJB Local References后单击Add按钮,如图11-43-111-43-2所示,为faade建立EJB本地引用。图11-43-1建立EJB本地引用图11-43-2设置参数 14、返回EJB Designer,如图11-44所示,在membentityfacade上点击鼠标右键,依次选择AddMethod菜单,创建新方法。图11-44 为membentityfacade创建新方法 15、如图11-45所示,设置方法属性如下:Method name:loginReturn type:StringInput parameters:String logname, String passwordInterfaces:remote图11-45 设置方法属性16、在membentityfacade上单击鼠标右键,选择View Bean Source,将显示如图11-46所示的membentityfacedeBean源代码窗口。图11-46 membentityfacedeBean源代码窗口17、在该窗口中修改代码,得到如下源代码(阴影处表示新添代码):窗体顶端窗体底端18、以上代码中黑体部分memb是一个类,创建过程如图11-47-111-47-3所示。图11-47-1在Object Gallery的General选项卡中选择Class图11-47-2 设置Class属性图11-47-3 memb类的源代码19、如图11-48所示,在左上方的membentity处单击鼠标右键,选择Make,编译该EJB Module,若不报错,则编译通过,否则请按上述步骤进行修改。图11-48 编译membentity20、启动WLS8.1后,如图11-49-1 所示选择Deploy或Redeploy,部署membentity到WLS8.1,部署成功后在消息窗口应有如图11-49-2所示的提示成功的信息。 图11-49-1部署membentity到WLS8.1图11-49-2 部署成功后的消息窗口21、如图11-50-111-50-4,生成对membentity进行测试的客户端程序。图11-50-1在Object Gallery的Enterprise选项卡中选择EJB Test Client图11-50-2选择Application类型图11-50-3设置测试EJB为membentityfacade图11-50-4定义客户端测试程序应用配置22、在membentityfacadeTestClient1的源代码窗口中将main方法修改如下(阴影部分为新添代码):public static void main(String args) membentityfacadeTestClient1 client = new membentityfacadeTestClient1(); client.create(); client.login(Mary,1111); 23、如图11-51所示,对客户端测试程序membentityfacadeTestClient1.java进行编译,若不报错表示程序编译通过,否则请按上述步骤进行修改。图11-51 对客户端测试程序membentityfacadeTestClient1.java进行编译24、编译通过后在图11-51中选择Run using“membentityfacadeTestClient1”运行测试程序,该程序的输出信息如下:窗体顶端窗体底端25、若将客户端测试程序membentityfacadeTestClient1.java中的修改如下(阴影部分为修改部分):26、若将客户端测试程序membentityfacadeTestClient1.java中的修改如下(阴影部分为修改部分):三、开发实现书籍浏览和查询的EJB Module:bookentity该EJB Module包括以数据库bookstore1中的“书籍信息”表为数据源的实体Bean Bookitem和访问该实体Bean的无状态会话Beanbookfacade,因开发bookentity的详细步骤与membentity类似,因此以下列出主要步骤:1、 如图11-52所示,在工程bookstore中新建一个名为bookentity的EJB Module。图11-52 新建一个名为bookentity的EJB Module2、 在bookentity中引入数据模式,在Database Schema Provider中设置数据库连接信息,各项设置如下: 选中All schemasDriver:weblogic.jdbc.mssqlserver4.DriverURL:jdbc:weblogic:mssqlserver4:bookstore1localhostUsername:(SQL Server身份验证的登录名)Password:(SQL Server身份验证的登录密码)Datebase name: weblogic:mssqlserver4:bookstore1localhostJNDI name:bookstoreSource其余设置为空设置完毕后选择OK。 3、 建立与表“书籍信息”对应的实体Bean Bookitem,并在Bookitem中增加一个Finder方法findallbook,该方法的返回值类型为java.util.Collection,Query语句为SELECT OBJECT(book) FROM Bookitem AS book,如图11-53所示。图11-53 在Bookitem中增加Finder方法findallbook4、在bookentity中创建访问实体Bean Bookitem的无状态会话Bean bookfacade, 如图11-54所示,设置bookfacade的属性为:Bean name:bookfacadeInterfaces:remoteSession type:StatelessTransaction type:Container图11-54 设置bookfacade的属性5、如图11-55-111-55-2所示,为bookfaade建立EJB Local Reference。图11-55-1 为bookfacade建立EJB Local Reference图11-55-2 设置参数6、为bookfacade增加一个方法getallbook,如图11-56所示,设置方法属性如下:Method name:getallbookReturn type:java.util.CollectionInterfaces:remote图11-56 为bookfacade增加一个方法getallbook7、为bookfacade增加一个方法getbookbyid,如图11-57所示,设置方法属性如下:Method name:getbookbyidReturn type:ObjectInput parameters:String bookidInterfaces:remote图11-57 为bookfacade增加一个方法getbookbyid8、将bookfacade Bean的源代码修改为如下代码(阴影处表示新添代码):窗体顶端窗体底端9、创建book类(Class),源代码如图11-58所示:图11-58 book类的源代码10、编译该EJB Module bookentity,若不报错,则编译通过,否则请按上述步骤进行修改。11、启动WLS8.1后,部署bookentity到WLS8.1,部署成功后在消息窗口应有如图11-59所示的提示成功的信息。图11-59 部署成功后的消息窗口12、如图11-60所示,建立客户端程序对bookentity进行测试。图11-60 建立bookentity的客户端测试程序13、将测试程序bookfacadeTestClient1.java的main方法修改如下(阴影部分为新添代码):public static void main(String args) bookfacadeTestClient1 client = new bookfacadeTestClient1(); client.create(); client.getallbook(); client.getbookbyid(1);14、编译并运行该测试程序得到的输出信息如下:窗体顶端窗体底端四、开发购物车购物车是用一个有状态会话Bean mycart来实现的,本示例所创建的购物车实现向当前登录用户的购物车内添加订购书籍和结算总价格的功能,为了实现以上功能,在会话Bean中需要具有代表购物者姓名(即当前登录用户名)和代表所订购书籍列表的两个属性。购物车创建过程如下:1、如图11-61所示,在工程bookstore中新建一个名为mycart的EJB Module。图11-61 新建一个名为mycart的EJB Module2、 建立与表“订单”对应的实体Bean 修改Bean name为Order,如图11-62:图11-62修改Bean name: Order3、 并在Order中增加一个Finder方法finduserbook,该方法的返回特定用户所购的书籍信息,返回值类型为java.util.Collection,Query语句为SELECT OBJECT(a) FROM Order AS a WHERE a.userName= ?1,如图11-63所示。图11-63 finduserbook方法的设置信息4、在mycart中新建一个名为cart的有状态会话Bean,属性设置如图11-64所示。图11-64 在mycart中新建有状态会话Bean cart5、cart上单击鼠标右键,选择AddField菜单添加属性,本例需添加两个属性分别代表购物者和订书列表,如图11-65-1 11-65-2 所示设置如下属性:Field name: custname Type:java.lang.StringField name: orders Type:java.util.Vector图11-65-1 custname属性信息图11-65-2 orders属性信息6、 cart添加五个方法,如图11-66-111-66-5 所示设置如下方法属性:方法addorder:将参数指定的书籍加入订书列表orders。Method name:addorderReturn type:voidInput parameters:book theorderInterfaces:remote图11-66-1 添加addorder方法 方法gettotalprice:计算订书列表orders中所购书籍总价。Method name:gettotalpriceReturn type:floatInterfaces:remote图11-66-2 添加gettotalprice方法方法writeBackDB:将orders中所购书籍的信息写回数据库。Method name:writeBackDBReturn type:voidInterfaces:remote 图11-66-3 添加writeBackDB方法方法getallbook:返回特定用户的购书信息列表。Method name:getallbookReturn type:java.util.VectorInterfaces:remote图11-66-4 添加getallbook方法方法setuserAddandTel:设定特定用户的地址和电话信息。Method name:setuserAddandTelReturn type:voidInput parameters:String add, String telInterfaces:remote 图11-66-5 添加setuserAddandTel方法 7、 状态会话Bean在建立时通常要给属性赋值,这部分操作可以在ejbCreate方法中完成,因为在建立Bean时会调用此方法。本例中需要在建立cart时给属性custname赋值表示当前的购物者,既要给ejbCreate增加一个与custname属性相

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论