J2EE体系技术支持下开发网上书店示例.docx

上传人:b****5 文档编号:28353897 上传时间:2023-07-10 格式:DOCX 页数:60 大小:2.24MB
下载 相关 举报
J2EE体系技术支持下开发网上书店示例.docx_第1页
第1页 / 共60页
J2EE体系技术支持下开发网上书店示例.docx_第2页
第2页 / 共60页
J2EE体系技术支持下开发网上书店示例.docx_第3页
第3页 / 共60页
J2EE体系技术支持下开发网上书店示例.docx_第4页
第4页 / 共60页
J2EE体系技术支持下开发网上书店示例.docx_第5页
第5页 / 共60页
点击查看更多>>
下载资源
资源描述

J2EE体系技术支持下开发网上书店示例.docx

《J2EE体系技术支持下开发网上书店示例.docx》由会员分享,可在线阅读,更多相关《J2EE体系技术支持下开发网上书店示例.docx(60页珍藏版)》请在冰豆网上搜索。

J2EE体系技术支持下开发网上书店示例.docx

J2EE体系技术支持下开发网上书店示例

J2EE体系技术支持下开发网上书店示例

要求:

在Weblogic7.0和JBuilder9.0下用JSP和JavaBean技术开发5.4.3中介绍的网上购物系统。

该示例在Weblogic8.1+JBuilder9.0+SQLServer2000下实现。

利用JSP、EJB(无状态会话Bean、有状态会话Bean、CMP)等技术,完成用户登录、浏览书目、订购图书并进行结算等基本功能。

在JBuilder中运行整个工程<点击“在JBuilder中运行整个工程”,在出现的“文件下载”对话框中选择“打开(O)”按钮> <<运行weblogic服务器,单击开始菜单中的所有程序|BEAWebLogicPlatfrom8.1|UsersProjects|wangdomain|StartServer. 在浏览器中输入http:

//localhost:

7001/bookweb/login.html.用户名:

yzl,密码:

123456>>

网上购书系统设计

本示例的程序设计分为以下四大部分:

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访问实体BeanMembers的接口,将从login_confirm.jsp接收到的用户名及密码与实体BeanMembers返回的数据集合比较,从而验证登录用户的合法性

Bookitem

以数据库bookstore1中的表“书籍信息”为数据源的CMP实体Bean,代表书籍,具有能够返回表“书籍信息”中全部数据集合的Finder方法

bookfacade

无状态会话Bean,是browse.jsp访问实体BeanBookitem的接口,具有将从实体BeanBookitem返回的数据集合通过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、 在SQLServer2000中新建数据库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-3

11-28-1表“客户信息”中的数据

11-28-2表“书籍信息”中的数据

11-28-3表“书籍信息”中的数据

3、启动WLS8.1,打开控制台,建立指向bookstore1数据库的连接池,步骤如图11-29-1—11-29-8。

11-29-1在控制台界面中用鼠标单击“ConnectionPools”

11-29-2选择配置新的JDBC连接池

11-29-3选择数据库

选择

数据库类型(DatabaseType)为:

MSSQLServer数据库

数据库驱动程序(DatabaseDriver)为:

Weblogic’sMSSQLServerDriver(Type4)Versions:

7.0,2

点击Continue按钮。

11-29-4定义连接属性

配置参数如下:

Name:

bookstorePool

DatabaseName:

bookstore1

HostName:

localhost

DatabaseUserName:

sa(注:

在SQLServer2000中设置“使用SQLServer身份验证”,并根据“登录名”配置该项参数)

Password:

********(注:

设置为SQLServer2000的登录密码)

ConfirmPassword:

*********

点击Continue按钮。

接着出现测试数据库连接界面(Testdatabaseconnection )如下:

11-29-5测试数据库连接界面(Testdatabaseconnection )

 点击TestDriverConfiguration按钮,如测试成功会出现界面如下:

11-29-6测试数据库连接成功界面

点击Createanddeploy按钮。

部署成功回到界面如下:

11-29-7JDBC连接池(ConnectionPools)

 

11-29-8成功创建连接池后控制台左栏界面中出现bookstorePool

4、建立指向bookstore1数据库连接池的数据源,步骤如图11-30-1—11-30-9。

11-30-1在控制台界面中用鼠标单击“DataSources”

在出现的JDBCDataSources界面中单击ConfigureanewJDBCDataSource超级连接

11-30-2选择配置新的JDBC数据源

11-30-3在“Configurethedatasource ”中进行配置

配置参数如下:

Name:

bookstoreSource

JNDIName:

bookstoreSource

点击Continue按钮。

11-30-4在“ Connecttoconnectionpool ”中进行选择bookstorePool

选择刚才建的bookstorePool,点击Continue按钮。

11-30-5在“Targetthedatasource  ”单击Create按钮

成功配置后的出现的界面如下:

11-30-6配置完成,可单击bookstoreSource超级连接查看

11-30-7Configuration 选项卡

在Configuration 选项卡中单击AdvancedOptions中的Show超级连接

11-30-8选中EmulateTwo-PhaseCommitfornon-XADriver

选中EmulateTwo-PhaseCommitfornon-XADriver,其余采用默认设置,单击Apply按钮。

重新启动Weblogic服务器使设置生效。

11-30-9成功创建数据源后控制台左栏界面中出现bookstoreSource

 

二、开发实现用户登录验证的EJBModule:

membentity

1、 启动Jbuilder9,在菜单中依次选择“File——NewProject”,新建一个工程bookstore,设置信息如图11-31所示。

11-31新建工程bookstore

2、 依次选择Next,完成新工程的创建,左栏界面将出现该工程,如图11-32所示。

11-32成功创建新工程后的界面

3、 在菜单中依次选择“File——New”,如图11-33所示,在ObjectGallery窗口中的Enterprise中选择EJBModule后,点击OK。

11-33在ObjectGallery窗口中的Enterprise中选择EJBModule

4、 如图11-34所示,在EJBModuleWizard窗口中Name项输入membentity,其余采用默认设置,单击OK。

11-34在EJBModuleWizard窗口中进行设置 

5、如图11-35所示,在右栏界面的空白处单击鼠标右键,在弹出的菜单中选择ImportSchemaFromDatabase,从数据库中引入数据模式。

11-35从数据库中引入数据模式

6、 11-36所示,在DatabaseSchemaProvider中设置数据库连接信息,本例中要连接的数据库是在SQLServer2000中建立的数据库bookstore1。

各项设置如下:

选中Allschemas

Driver:

weblogic.jdbc.mssqlserver4.Driver

URL:

jdbc:

weblogic:

mssqlserver4:

bookstore1@localhost

Username:

(SQLServer身份验证的登录名)

Password:

(SQLServer身份验证的登录密码)

Datebasename:

weblogic:

mssqlserver4:

bookstore1@localhost

JNDIname:

bookstoreSource 

其余设置为空

设置完毕后选择OK。

图11-36在DatabaseSchemaProvider中设置数据源

注:

若weblogic.jdbc.mssqlserver4.Driver不存在,则在Jbuilder9中依次选择Tools—EnterpriseSetup菜单,并如图11-36-1所示,在EnterpriseSetup窗口中的DataBaseDrivers选项卡中通过点击Add按钮加入WebLogic7xClient后选择OK并重新启动Jbuilder9后即可。

图11-36-1加载weblogic.jdbc.mssqlserver4.Driver

7、如图11-37所示,在左栏界面下方的数据源中的“客户信息”单击鼠标右键,在弹出的菜单中选择CreatCMP2.0EntityBean,在membentity中创建一个名为Members的CMP实体Bean。

图11-37在membentity中创建一个CMP实体Bean

8、如图11-38所示,在右栏界面中的“客户信息”处单击鼠标,显示该实体Bean的各项属性,更改Beanname为Members。

图11-38Members实体Bean的各项属性

9、如图11-39所示在Members处单击鼠标右键,依次选择Add—Finder菜单,建立一个Finder方法。

图11-39为Members增加Finder方法

10、在弹出的属性框中输入Finder方法的各项属性,如图11-40所示设置以下属性:

Findername:

findalluser

Returntype:

java.util.Collection

Homeinterface:

localhome

Query:

SELECTOBJECT(m)FROMMembersASm

图11-40设置Finder方法的各项属性

11、如图11-41所示,在空白处点击鼠标右键,依次选择CreateEJB—SessionBean菜单,在membentity中创建访问实体BeanMembers的无状态会话Bean。

图11-41在membentity中创建访问实体Bean的无状态会话Bean

12、如图11-42所示设置无状态会话Bean的属性:

Beanname:

membentityfacade

Interfaces:

remote

Sessiontype:

Stateless

Transactiontype:

Container

图11-42设置无状态会话Bean的属性

13、在membentityfacade处单击鼠标右键,选择OpenDDEditor,在窗口下方选择EJBLocalReferences后单击Add按钮,如图11-43-1—11-43-2所示,为façade建立EJB本地引用。

图11-43-1建立EJB本地引用

图11-43-2设置参数

 

14、返回EJBDesigner,如图11-44所示,在membentityfacade上点击鼠标右键,依次选择Add—Method菜单,创建新方法。

图11-44为membentityfacade创建新方法

 

15、如图11-45所示,设置方法属性如下:

Methodname:

login

Returntype:

String

Inputparameters:

Stringlogname,Stringpassword

Interfaces:

remote

图11-45设置方法属性

16、在membentityfacade上单击鼠标右键,选择ViewBeanSource,将显示如图11-46所示的membentityfacedeBean源代码窗口。

图11-46membentityfacedeBean源代码窗口

17、在该窗口中修改代码,得到如下源代码(阴影处表示新添代码):

窗体顶端

窗体底端

18、以上代码中黑体部分memb是一个类,创建过程如图11-47-1—11-47-3所示。

图11-47-1在ObjectGallery的General选项卡中选择Class

图11-47-2设置Class属性

图11-47-3memb类的源代码

19、如图11-48所示,在左上方的membentity处单击鼠标右键,选择Make,编译该EJBModule,若不报错,则编译通过,否则请按上述步骤进行修改。

图11-48编译membentity

20、启动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-1—11-50-4,生成对membentity进行测试的客户端程序。

图11-50-1在ObjectGallery的Enterprise选项卡中选择EJBTestClient

图11-50-2选择Application类型

图11-50-3设置测试EJB为membentityfacade

图11-50-4定义客户端测试程序应用配置

22、在membentityfacadeTestClient1的源代码窗口中将main方法修改如下(阴影部分为新添代码):

publicstaticvoidmain(String[]args){

membentityfacadeTestClient1client=newmembentityfacadeTestClient1();

client.create();

client.login("Mary","1111");

}

23、如图11-51所示,对客户端测试程序membentityfacadeTestClient1.java进行编译,若不报错表示程序编译通过,否则请按上述步骤进行修改。

图11-51对客户端测试程序membentityfacadeTestClient1.java进行编译

24、编译通过后在图11-51中选择Runusing“membentityfacadeTestClient1”运行测试程序,该程序的输出信息如下:

窗体顶端

窗体底端

25、若将客户端测试程序membentityfacadeTestClient1.java中的修改如下(阴影部分为修改部分):

26、若将客户端测试程序membentityfacadeTestClient1.java中的修改如下(阴影部分为修改部分):

三、开发实现书籍浏览和查询的EJBModule:

bookentity

该EJBModule包括以数据库bookstore1中的“书籍信息”表为数据源的实体Bean—Bookitem和访问该实体Bean的无状态会话Bean—bookfacade,因开发bookentity的详细步骤与membentity类似,因此以下列出主要步骤:

1、 如图11-52所示,在工程bookstore中新建一个名为bookentity的EJBModule。

图11-52新建一个名为bookentity的EJBModule

2、 在bookentity中引入数据模式,在DatabaseSchemaProvider中设置数据库连接信息,各

项设置如下:

选中Allschemas

Driver:

weblogic.jdbc.mssqlserver4.Driver

URL:

jdbc:

weblogic:

mssqlserver4:

bookstore1@localhost

Username:

(SQLServer身份验证的登录名)

Password:

(SQLServer身份验证的登录密码)

Datebasename:

weblogic:

mssqlserver4:

bookstore1@localhost

JNDIname:

bookstoreSource

其余设置为空

设置完毕后选择OK。

 

3、 建立与表“书籍信息”对应的实体BeanBookitem,并在Bookitem中增加一个Finder方法findallbook,该方法的返回值类型为java.util.Collection,Query语句为SELECTOBJECT(book)FROMBookitemASbook,如图11-53所示。

图11-53在Bookitem中增加Finder方法findallbook

4、在bookentity中创建访问实体BeanBookitem的无状态会话Beanbookfacade,如图11-54所示,设置bookfacade的属性为:

Beanname:

bookfacade

Interfaces:

remote

Sessiontype:

Stateless

Transactiontype:

Container

图11-54设置bookfacade的属性

5、如图11-55-1—11-55-2所示,为bookfaçade建立EJBLocalReference。

图11-55-1为bookfacade建立EJBLocalReference

图11-55-2设置参数

6、为bookfacade增加一个方法getallbook,如图11-56所示,设置方法属性如下:

Methodname:

getallbook

Returntype:

java.util.Collection

Interfaces:

remote

图11-56为bookfacade增加一个方法getallbook

7、为bookfacade增加一个方法getbookbyid,如图11-57所示,设置方法属性如下:

Methodname:

getbookbyid

Returntype:

Object

Inputparameters:

Stringbookid

Interfaces:

remote

图11-57为bookfacade增加一个方法getbookbyid

8、将bookfacadeBean的源代码修改为如下代码(阴影处表示新添代码):

窗体顶端

窗体底端

9、创建book类(Class),源代码如图11-58所示:

图11-58book类的源代码

10、编译该EJBModulebookentity,若不报错,则编译通过,否则请按上述步骤进行修改。

11、启动WLS8.1后,部署bookentity到WLS8.1,部署成功后在消息窗口应有如图11-59所示的提示成功的信息。

图11-59部署成功后的消息窗口

12、如图11-60所示,建立客户端程序对bookentity进行测试。

图11-60建立bookentity的客户端测试程序

13、将测试程序bookfacadeTestClient1.java的main方法修改如下(阴影部分为新添代码):

publicstaticvoidmain(String[]args){

bookfacadeTestClient1client=newbookfa

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1