<iframe align="center" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog.html" frameborder="0" width="728" scrolling="no" height="90"></iframe>
用Java EE 5实现的网上书店实例<!-- BEGIN WRAPPER TABLE, 2 COLUMN, MAIN/RIGHT --><!-- BEGIN CENTRAL COLUMN COMPONENTS --><!--startindex--><!-- ============ --><!-- MAIN CONTENT --><!-- ============ --><!-- BEGIN VCD4 BYLINE AND TOOLS -->
| 李力 (ada.li@sun.com) | 2007/10/23 |
本教程介绍了如何使用NetBeans IDE 以及GlassFish 构建一个典型的Java EE 5应用实例. 该实例模拟网上书店, 主要实现的是对订单的管理。用户可以购买图书, 并修改订单. 该实例覆盖了Java DB, JPA(Java Persistence API), EJB 3.0, JSF等技术应用. |
目录
第一部分:环境准备
-
网上书店体系结构
-
教程使用环境
-
配置Sun Java System Application Server
第二部分:数据准备
-
创建数据库和表
-
创建表
-
配置JDBC资源
第三部分:实现JPA层与EJB层
-
创建企业项目
-
JPA层
-
创建持久性单元
-
创建实体类
-
EJB层
-
创建会话Bean
第四部分:实现Web层
-
Web层
-
创建Servlet
-
测试
-
JSF与Visual Web Pack
-
创建Visual Web项目
-
浏览商品
-
查询订单
-
生成订单
-
删除订单
问题及解决
参考
网上商店说明
网上商店实现了商品浏览,用户可以进行订单查询,生成订单以及删除订单等操作。
教程使用环境
配置Sun Java System Application Server
如果安装的 NetBeans IDE 与 Sun Java System Application Server 捆绑在一起,则表明已在 IDE 中注册了应用服务器,不需要对其进行配置。如果单独下载并安装了 Sun Java System Application Server,则必须为 IDE 配置可用的应用服务器。
配置单独安装的服务器:
-
安装 NetBeans IDE 和 Sun Java System Application Server 后,启动 IDE。
-
在“运行环境”窗口中,右键单击“服务器”节点,然后从弹出式菜单中选择“添加服务器”。
-
在“添加服务器实例”向导中,从“服务器”下拉列表中选择 "Sun Java System Application Server",然后单击“下一步”。
-
输入应用服务器的安装位置,然后单击“下一步”。
-
缺省应用服务器域 domain1 的缺省用户名和口令如下:
请注意,如果在此处指定一个口令,则系统会将其存储在用户目录中,这可能会产生安全隐患。如果未在此处指定口令,则会在需要时提示您输入口令值。
-
单击“完成”。
<!-- END CODE EXAMPLES BOX -->创建数据库
在这节中使用Sun Java System Application Server 捆绑的Derby数据库, 完成创建数据库,创建表,建立数据库连接池,建立数据库资源等。
创建Derby数据库
-
启动 NetBeans IDE后,如果尚未启动数据库服务器,请选择“工具”>“Java DB 数据库”>“启动 Java DB 服务器”。
-
选择“工具”>“Java DB 数据库”>“创建 Java DB 服务器”。
-
在“创建 Java DB 服务器”输入如下信息:
-
数据库名称:bookshop
-
用户名:book
-
口令: book
图一: 创建bookshop数据库
-
NetBeans IDE会自动在”运行环境”>”数据库”接点下建立bookshop的数据库连接。
图: bookshop数据库连接
-
如果 bookshop 数据库的 jdbc 节点标记显示为连接中断 ,并且无法展开该节点,则表明 IDE 未连接到该数据库。要连接 bookshop 数据库,请右键单击 bookshop 数据库的 jdbc 节点,。如果出现“连接”对话框,请输入 book
作为口令,选中“在此会话期间记住口令”,然后单击“确定”。
-
如果未出现bookshop的数据库连接, 在“运行环境”窗口中,右键单击“数据库”,然后从弹出式菜单中选择“新建连接”以打开“新建数据库连接”对话框。
图2: 新建bookshop数据库连接
<!-- END RESOURCE MATRIX --><!-- BEGIN EXAMPLES BOX --><!--<table border="0" cellpadding="2" cellspacing="0"> <tr> <td> <div class="headerpadding2"><b>Example used in this tutorial</b></div> </td> </tr> <tr valign="top"> <td> <div class="headerpadding2"> »<a href="inserts_updates_deletes/insert_update_delete_ex.zip">insert_update_delete_ex.zip (zip)</a> </div> </td> </tr></table>--><!-- END CODE EXAMPLES BOX -->创建表
到这一步, bookshop数据库是全新的,因此它是空的。现在,开始添加表和数据。NetBeans IDE可以使用表向导来逐个创建表, 这个教程里使用SQL脚本.
使用SQL脚本创建表
-
右键单击bookshop 数据库下的表节点, 然后从弹出式菜单中选择”执行命令”
。
-
在新打开的”SQL命令1”窗口中,输入以下SQL。
点击”运行SQL”按钮, 运行成功的话,可以在bookshop 数据库连接的"表"节点,看到新生成三个表。
createtable"BOOK"."CUSTOMER"
(
"CUSTOMER_ID"CHAR(12)notnullprimarykey,
"CUSTOMER_NAME"VARCHAR(30),
"EMAIL"VARCHAR(40)
);
insertintocustomervalues('ada','AdaLi','ada.li@sun.com');
insertintocustomervalues('joey','JoeyShen','joey.shen@sun.com');
insertintocustomervalues('michael','MichaelLi','tao.li@sun.com');
createtable"BOOK"."PRODUCT"
(
"PRODUCT_ID"INTEGERnotnullprimarykey,
"PRODUCT_NAME"VARCHAR(100),
"PURCHASE_COST"DECIMAL(12,2)
);
insertintoproductvalues(1,'Java(TM)EE5Tutorial',34.64);
insertintoproductvalues(2,'JavaEE5DevelopmentusingGlassfishApplicationServer',32.50);
insertintoproductvalues(3,'EnterpriseJavaBeans3.0',31.49);
insertintoproductvalues(4,'SunCertifiedEnterpriseArchitectforJavaEEstudyGuide',32.99);
insertintoproductvalues(5,'JavaMEGameProgramming',49.99);
createtable"BOOK"."PURCHASE_ORDER"
(
"ORDER_NUM"INTEGERnotnullprimarykey,
"CUSTOMER_ID"CHAR(12)notnull,
"PRODUCT_ID"INTEGERnotnull,
"QUANTITY"SMALLINT
);
insertintoPURCHASE_ORDERvalues(1,'ada',1,1);
insertintoPURCHASE_ORDERvalues(2,'ada',5,1);
insertintoPURCHASE_ORDERvalues(3,'joey',2,2);
-
CUSTOMER
-
PRODUCT
-
PURCHASE_ORDER
-
右键单击表或列,然后从弹出式菜单中选择“查看数据”,可以查看表和列中的数据。
配置JDBC 连接池和JDBC资源
数据库连接池是服务器为特定的数据库提供的一组可重用的连接。请求数据库连接的应用程序将从该池中获取连接。当应用程序关闭某个连接后,该连接将会返回到连接池中。连接池属性可能随数据库供应商的不同而有所不同。一些公共属性包括数据库名称的 URL、用户名和口令等。
建立数据库连接池时,还将创建 JDBC 资源(也称为数据源)。JDBC 资源为应用程序提供了数据库连接。通常,应用程序所访问的每个数据库都至少有一个 JDBC 资源。一个数据库可以有多个 JDBC 资源。
下面介绍如何在Sun Java System Application上配置 JDBC 连接池和JDBC 资源
1.启动Sun Java System Application, 在NetBeans IDE的”运行环境”窗口中的”服务器”节点下, 右键单击”Sun Java System Application”, 选择”启动”
2.在浏览器地址窗口中,输入”http://localhost:4848”, 出现管理控制台登录界面. 缺省的管理员/密码: admin/adminadmin
配置 JDBC 连接池
接下来,将为bookshop数据库创建一个 JDBC 连接池,并定义数据库连接的特性。
-
在管理控制台的左窗格中,展开“资源”> "JDBC",然后选择“连接池”。
-
在“连接池”页中,单击“新建”以创建新的连接池。
-
在“创建连接池”向导的第一步, 输入和选择如下内容。
名称:bookshopPool
资源类型:javax.sql.XADataSource
数据库供应商:JavaDB
点击"下一步按钮"。
-
在“创建连接池”向导的第二步,找到属性部分,修改以下属性值。
DatabaseName: bookshop
User: book
Password: book
ServerName:localhost
PortNumber:1527
-
属性设置完成后,点击同一页面"ping"按钮,测试设置是否正确。如果正确,会显示"Ping 成功 "的信息.
-
点击"完成"按钮,在Sun Java Application Server 中创建bookshopPool连接池.
配置 JDBC 资源
必须为bookshop创建一个 JDBC 资源,以便让部署后的应用程序能够通过它连接到bookshop数据库。
-
在管理控制台的左窗格中,展开“资源”> "JDBC",然后选择“JDBC 资源”。“资源”> "JDBC" >“JDBC 资源”页将在右窗格中打开。
-
单击“新建”。用于创建新 JDBC 资源的页将出现在右窗格中, 输入或选择如下内容。
JNDI名称:jdbc/bookshopDS
池名称:bookshopPool
-
点击"确定"按钮,在Sun Java Application Server 中创建JDBC 资源 jdbc/bookshopDS.
NetBeans IDE中可以直接创建JDBC 连接池和JDBC 资源
如果要将应用程序部署到 Sun Java System Application Server,则在 IDE 中使用“新建文件”向导可以轻松地建立数据库连接池和所需的数据源。通过在 IDE 中打开“新建文件”向导,选择“Sun 资源”类别,然后选择要创建的资源类型,可以为应用程序创建 JDBC 资源和连接池。使用“新建文件”向导可以执行以下操作:
当使用“新建文件”向导建立连接池时,IDE 将基于指定的连接生成所需的文件。在将应用程序部署到服务器时,会在 Sun Java System Application Server 中注册资源。
如果要将应用程序部署到 Sun Java System Application Server 以外的服务器,则需要通过编辑资源的源文件来建立资源。
创建企业项目
-
NetBeans IDE中,选择“文件”>“新建项目”(Ctrl-Shift-N)。从 "企业" 类别中选择“企业应用程序”,然后单击“下一步”。
-
将项目命名为 BookshopApp,将服务器设置为 "Sun Java System Application Server",将 Java EE 版本设置为 "Java EE 5",然后单击“完成”。
-
在NetBeans IDE的"项目"窗口中,会出现三个项目
BookshopApp
BookshopApp-ejb
BookshopApp-war
持久层
Java EE 5 平台引入了新的 Java 持久性 API(它是作为 JSR-220 的一部分开发的)。Java 持久性 API 不但可以在 EJB 组件外部使用(例如,在 Web 应用程序和应用程序客户端中使用),而且还可以在 Java EE 平台之外的 Java SE 应用程序中使用。
Java 持久性 API 具有以下主要功能:
-
实体是 POJO。与使用容器管理持久性 (Container-Managed Persistence, CMP) 的 EJB 组件不同,使用新 API 的实体对象不再是组件,并且它们不再需要位于 EJB 模块中。
-
标准化的对象关系映射。新规范将对对象关系映射的处理方式进行标准化,从而使开发者不再需要了解特定于供应商的策略。Java 持久性 API 使用标注来指定对象关系映射信息,但它仍支持 XML 描述符。
-
命名查询。现在命名查询是用元数据表示的静态查询。查询可以是 Java 持久性 API 查询或本地查询。这样会使重用查询变得非常简单。
-
简单的打包规则。由于实体 Bean 是简单的 Java 技术类,因此几乎可以在 Java EE 应用程序中的任意位置将其打包。例如,实体 Bean 可以是 EJB JAR
、应用程序客户端 JAR
、WEB-INF/lib
、WEB-INF/classes
的一部分,甚至是企业应用程序归档 (Enterprise Application Archive, EAR) 文件中实用程序 JAR
的一部分。通过这些简单的打包规则,您不再需要创建 EAR 文件以使用来自 Web 应用程序或应用程序客户端的实体 Bean。
-
分离的实体。由于实体 Bean 是 POJO,因此可以对它们执行序列化,通过网络将其发送到其他地址空间,并在不识别持久性的环境中使用它们。这样,您就不再需要使用数据传输对象 (Data Transfer Object, DTO)。
-
EntityManager API。现在,应用程序编程人员可以使用标准 EntityManager API 来执行涉及实体的创建、读取、更新和删除
(Create Read Update Delete, CRUD) 操作。
IDE 提供了处理新 Java 持久性 API 的工具。您可以通过数据库自动生成实体类,或手动对实体类进行编码。IDE 还提供了用于创建和维护持久性单元的模板和图形编辑器。
创建持久性单元
持久性单元目的在于通知容器哪些实体类需要由实体管理器进行管理,以及这些实体需要使用哪些数据源信息。
-
在“项目”窗口中右键单击 "BookshopApp-ejb" 项目节点,然后选择“新建”>“文件/文件夹”以打开“新建文件”向导。
-
从“持久性”类别中,选择“持久性单元”,然后单击“下一步”, 配置信息如
持久性单元名称:BookshopApp-ejbPU
持久性提供程序: TopLink(缺省)
数据源: jdbc/bookshopDS
使用 使用 Java 事务 API : 是
表生成策略: 无
-
单击“完成”, 最后生成BookshopApp-ejb项目下生成persistence.xml, 这个文件中定义了持久性单元的属性。
创建实体类
实体类用于表示要创建的关系数据库中的表。下面为bookshop数据库中的三张表创建实体类,实体类包括命名的查询标注、表示列的字段以及表示外键的关系。
-
右键单击 "BookshopApp-ejb" 项目节点,然后选择“新建”>“文件/文件夹”。
-
从“持久性”类别中,选择“通过数据库生成实体类”,然后单击“下一步”。
-
下一个窗口中, “数据源”选择”jdbc/bookshopDS”, 点击”全部添加”按钮, 将”可用表”中的三张表(CUSTOMER, PRODUCT, PURCHASE_ORDER)添加到”选定表”中, 点击”下一步”按钮。
-
下一个窗口中,输入包名“bookshop.entities”,点击完成。
生成的Product实体类的部分代码如下:
相关推荐
总之,用Java EE 5实现网上书店实例是一个系统性的项目,它覆盖了从环境搭建、数据库设计、业务逻辑处理到Web界面开发等多个方面的知识。对于想要掌握Java EE技术栈的开发者而言,这个项目是一个很好的练兵场,能够...
本文将介绍如何使用Java EE 5技术实现一个网上书店的实例。Java EE 5(Java Platform, Enterprise Edition 5)是Java平台上用于构建企业级分布式应用程序的框架,它提供了丰富的组件和服务,包括Servlet、JSP、EJB...
这个【网上书店】项目提供了一个完整的电子商务解决方案,对于学习Java EE开发、理解Web应用程序工作原理以及实践电子商务功能的实现都是很好的实例。通过分析和运行源代码,开发者可以深入学习到如何构建一个实际的...
【基于Java EE在线书店的设计与实现】是一个典型的Web应用程序项目,它展示了如何使用Java EE(企业版)技术栈来构建一个完整的在线购书系统。这个系统涵盖了用户注册、登录、浏览书籍、添加到购物车、结算及订单...
《JSP网上书店开发完整实例》是一个典型的Web应用程序开发项目,它主要利用JavaServer Pages (JSP) 技术来构建一个在线图书销售平台。在这个实例中,开发者将学习到如何设计和实现一个功能完善的网上书店系统,涵盖...
总的来说,这个【网上书店】项目是一个综合性的Web应用实例,涵盖了从前端展示到后端处理的完整流程,包括数据库设计、Java编程、JSP页面开发以及服务器配置等关键环节。对于学习者来说,这是一个极好的实践机会,...
【Java 课程设计 书店管理系统】是一个以Java编程语言实现的项目,旨在提供一个全面的书店业务管理解决方案。...此外,这个项目也可以作为进一步学习Java EE、数据库设计、前端开发和软件工程实践的良好实例。
【Java Web网上书店Myeclipse实现】项目是一个基于Java Web技术构建的电子商务应用,它使用了Myeclipse作为集成开发环境,集成了Tomcat服务器、MySQL数据库和JDK,为用户提供了一个在线图书购买和浏览的平台。...
- **Java EE**:Java企业版(Java EE)是用于构建分布式、多层的企业级应用的框架,本系统使用Java EE技术栈,包括Servlet、JSP、JDBC等,实现服务器端的业务逻辑和数据处理。 - **数据库管理**:系统使用关系型...
ed2k://|file|%E7%B2%BE%E9%80%9AJava.EE%E9%A1%B9%E7%9B%AE%E6%A1%88%E4%BE%8B-%E5%9F%BA%E4%BA%8EEclipse.Spring.Struts.Hibernate%E5%85%89%E7%9B%98%E6%BA%90%E7%A0%81.rar|70436209|475e7c3548acf955e89e378...
总结,"网上书店EJB实现"项目展示了如何利用Java EE的技术栈构建一个功能齐全、安全可靠的在线书店。EJB、Servlet和JSP协同工作,为用户提供了一个高效、易于维护的平台,同时也展示了Java在企业级应用开发中的强大...
**网上书店OnlineShop JSP开发实例详解** 在Web开发领域,JavaServer Pages(JSP)是一种常见的技术,用于创建动态网页。本实例“OnlineShop”是基于JSP的网上书店项目,它展示了如何利用JSP进行功能丰富的电商网站...
本实例集合涵盖了一系列JavaEE相关的示例代码,包括网上书店、花店、论坛等常见应用场景,这些例子可以帮助学习者深入理解JavaEE的原理和实践。 1. **网上书店**:这是一个基于JavaEE的电子商务应用示例,可能涉及...
【jsp+网上书店系统】是一个基于Java技术的Web应用程序,主要使用了JSP(JavaServer Pages)、Servlet和相关的Web开发技术来构建。这个系统适用于多种项目需求,如中期检查、课程设计以及毕业设计等,提供了完整的...
SSH框架的网上书店项目是一个基于Java技术的Web应用程序,它主要使用了Struts、Spring和Hibernate这三大核心技术,也就是我们常说的SSH框架。这个项目对于初学者来说是一个很好的学习资源,因为它涵盖了Web开发中的...
5. **EJB(Enterprise JavaBeans)**:EJB是Java EE中的核心组件,提供了一种标准的方式来实现业务逻辑。在Duke's Bookstore,EJB可能被用来封装复杂的业务规则,如库存管理、订单处理和支付验证。 6. **JAX-RS...
【基于jsp的网上书店】项目是一个典型的Web应用开发实例,主要使用了Java Server Pages(JSP)、MySQL数据库和Apache Tomcat服务器。这个项目对于学习Web开发的大学生来说,是一个非常实用的大作业参考,可以帮助...
【电子书店java项目】是一个基于Java技术开发的在线...总的来说,【电子书店java项目】是一个综合性的应用开发实例,涵盖了Java Web开发的主要技术和实践,对于学习和理解Java EE应用的开发流程具有很高的参考价值。