用Java EE 5实现的网上书店实例

news/2024/5/18 23:11:31 标签: Java, Netbeans, JDBC, 应用服务器, 企业应用
<iframe align="top" marginwidth="0" marginheight="0" src="http://www.zealware.com/46860.html" frameborder="0" width="468" scrolling="no" height="60"></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等技术应用.

目录

第一部分:环境准备

  1. 网上书店体系结构

  2. 教程使用环境

  3. 配置Sun Java System Application Server



第二部分:数据准备

  1. 创建数据库和表

  2. 创建表

  3. 配置JDBC资源



第三部分:实现JPA层与EJB

  1. 创建企业项目

  2. JPA

  3. 创建持久性单元

  4. 创建实体类

  5. EJB

  6. 创建会话Bean



第四部分:实现Web

  1. Web

  2. 创建Servlet

  3. 测试

  4. JSFVisual Web Pack

  5. 创建Visual Web项目

  6. 浏览商品

  7. 查询订单

  8. 生成订单

  9. 删除订单



问题及解决

参考

网上商店说明

网上商店实现了商品浏览,用户可以进行订单查询,生成订单以及删除订单等操作。






教程使用环境

  • Java SE 5(或更高版本)

  • NetBeans IDE 5.5.1 中文版

  • NetBeans IDE 5.5.1 Visual Web Pack 中文版

  • Sun Java Application Server PE 9.0 Update Release 1(或更高版本)



Java%20System%20Application%20Server">配置Sun Java System Application Server

如果安装的 NetBeans IDE Sun Java System Application Server 捆绑在一起,则表明已在 IDE 中注册了应用服务器,不需要对其进行配置。如果单独下载并安装了 Sun Java System Application Server,则必须为 IDE 配置可用的应用服务器

配置单独安装的服务器:

  1. 安装 NetBeans IDE Sun Java System Application Server 后,启动 IDE

  2. 在“运行环境”窗口中,右键单击“服务器”节点,然后从弹出式菜单中选择“添加服务器”。

  3. 在“添加服务器实例”向导中,从“服务器”下拉列表中选择 "Sun Java System Application Server",然后单击“下一步”。

  4. 输入应用服务器的安装位置,然后单击“下一步”。

  5. 缺省应用服务器domain1 的缺省用户名和口令如下:

    • 用户名:admin

    • 口令:adminadmin

    请注意,如果在此处指定一个口令,则系统会将其存储在用户目录中,这可能会产生安全隐患。如果未在此处指定口令,则会在需要时提示您输入口令值。

  6. 单击“完成”。



<!-- END CODE EXAMPLES BOX -->创建数据库

在这节中使用Sun Java System Application Server 捆绑的Derby数据库, 完成创建数据库,创建表,建立数据库连接池,建立数据库资源等。

创建Derby数据库

  1. 启动 NetBeans IDE后,如果尚未启动数据库服务器,请选择“工具”>“Java DB 数据库”>“启动 Java DB 服务器”。

  2. 选择“工具”>“Java DB 数据库”>“创建 Java DB 服务器”。

  3. 在“创建 Java DB 服务器”输入如下信息:

  • 数据库名称:bookshop

  • 用户名:book

  • 口令: book


图一: 创建bookshop数据库

  1. NetBeans IDE会自动在”运行环境”>”数据库”接点下建立bookshop的数据库连接。

    : bookshop数据库连接

  2. 如果 bookshop 数据库的 jdbc 节点标记显示为连接中断 ,并且无法展开该节点,则表明 IDE 未连接到该数据库。要连接 bookshop 数据库,请右键单击 bookshop 数据库的 jdbc 节点,。如果出现“连接”对话框,请输入 book 作为口令,选中“在此会话期间记住口令”,然后单击“确定”。

  3. 如果未出现bookshop的数据库连接, 在“运行环境”窗口中,右键单击“数据库”,然后从弹出式菜单中选择“新建连接”以打开“新建数据库连接”对话框。

  • 从“名称”下拉列表中选择 "Java DB (Network)"

  • 在“数据库 URL”文本框中,键入 jdbc:derby://localhost:1527/bookshop

  • 将“用户名”设置为 book,将“口令”设置为 book,然后单击“确定”。

  • 在建立连接后,请单击“确定”以关闭对话框。




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脚本创建表

  1. 右键单击bookshop 数据库下的表节点, 然后从弹出式菜单中选择”执行命令”

  2. 在新打开的”SQL命令1”窗口中,输入以下SQL点击”运行SQL”按钮, 运行成功的话,可以在bookshop 数据库连接的"表"节点,看到新生成三个表。

    create table "BOOK"."CUSTOMER"
    (
    "CUSTOMER_ID"
    CHAR ( 12 ) not null primary key ,
    "CUSTOMER_NAME"
    VARCHAR ( 30 ),
    "EMAIL"
    VARCHAR ( 40 )
    );

    insert into customer values ( ' ada ' , ' AdaLi ' , ' ada.li@sun.com ' );

    insert into customer values ( ' joey ' , ' JoeyShen ' , ' joey.shen@sun.com ' );

    insert into customer values ( ' michael ' , ' MichaelLi ' , ' tao.li@sun.com ' );


    create table "BOOK"."PRODUCT"
    (
    "PRODUCT_ID"
    INTEGER not null primary key ,
    "PRODUCT_NAME"
    VARCHAR ( 100 ),
    "PURCHASE_COST"
    DECIMAL ( 12 , 2 )
    );

    insert into product values ( 1 , '
    Java(TM)EE5Tutorial ' , 34.64 );

    insert into product values ( 2 , ' JavaEE5DevelopmentusingGlassfishApplicationServer ' , 32.50 );

    insert into product values ( 3 , ' EnterpriseJavaBeans3.0 ' , 31.49 );

    insert into product values ( 4 , ' SunCertifiedEnterpriseArchitectforJavaEEstudyGuide ' , 32.99 );

    insert into product values ( 5 , ' JavaMEGameProgramming ' , 49.99 );


    create table "BOOK"."PURCHASE_ORDER"
    (
    "ORDER_NUM"
    INTEGER not null primary key ,
    "CUSTOMER_ID"
    CHAR ( 12 ) not null ,
    "PRODUCT_ID"
    INTEGER not null ,
    "QUANTITY"
    SMALLINT
    );

    insert into PURCHASE_ORDER values ( 1 , ' ada ' , 1 , 1 );

    insert into PURCHASE_ORDER values ( 2 , ' ada ' , 5 , 1 );

    insert into PURCHASE_ORDER values ( 3 , ' joey ' , 2 , 2 );

  • CUSTOMER

  • PRODUCT

  • PURCHASE_ORDER

  1. 右键单击表或列,然后从弹出式菜单中选择“查看数据”,可以查看表和列中的数据。



JDBC%E8%B5%84%E6%BA%90">配置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 连接池,并定义数据库连接的特性。

  1. 在管理控制台的左窗格中,展开“资源”> "JDBC",然后选择“连接池”。

  2. 在“连接池”页中,单击“新建”以创建新的连接池。

  3. 在“创建连接池”向导的第一步, 输入和选择如下内容。

    名称:bookshopPool

    资源类型:javax.sql.XADataSource

    数据库供应商:JavaDB

    点击"下一步按钮"。

  4. 在“创建连接池”向导的第二步,找到属性部分,修改以下属性值。

    DatabaseName: bookshop

    User: book

    Password: book

    ServerName:localhost

    PortNumber:1527




  5. 属性设置完成后,点击同一页面"ping"按钮,测试设置是否正确。如果正确,会显示"Ping 成功 "的信息.

  6. 点击"完成"按钮,在Sun Java Application Server 中创建bookshopPool连接池.

配置 JDBC 资源

必须为bookshop创建一个 JDBC 资源,以便让部署后的应用程序能够通过它连接到bookshop数据库。

  1. 在管理控制台的左窗格中,展开“资源”> "JDBC",然后选择“JDBC 资源”。“资源”> "JDBC" >“JDBC 资源”页将在右窗格中打开。

  2. 单击“新建”。用于创建新 JDBC 资源的页将出现在右窗格中, 输入或选择如下内容。

    JNDI名称:jdbc/bookshopDS

    池名称:bookshopPool

  3. 点击"确定"按钮,在Sun Java Application Server 中创建JDBC 资源 jdbc/bookshopDS


NetBeans IDE中可以直接创建JDBC 连接池和JDBC 资源






如果要将应用程序部署到 Sun Java System Application Server,则在 IDE 中使用“新建文件”向导可以轻松地建立数据库连接池和所需的数据源。通过在 IDE 中打开“新建文件”向导,选择“Sun 资源”类别,然后选择要创建的资源类型,可以为应用程序创建 JDBC 资源和连接池。使用“新建文件”向导可以执行以下操作:

  • 通过从现有数据库连接或连接的数据库中提取连接信息,创建连接池。

  • 使用现有连接池创建 JDBC 资源,或在向导内创建新的连接池

当使用“新建文件”向导建立连接池时,IDE 将基于指定的连接生成所需的文件。在将应用程序部署到服务器时,会在 Sun Java System Application Server 中注册资源。

如果要将应用程序部署到 Sun Java System Application Server 以外的服务器,则需要通过编辑资源的源文件来建立资源。

创建企业项目



  1. NetBeans IDE中,选择“文件”>“新建项目”(Ctrl-Shift-N)。从 "企业" 类别中选择“企业应用程序”,然后单击“下一步”。

  2. 将项目命名为 BookshopApp,将服务器设置为 "Sun Java System Application Server",将 Java EE 版本设置为 "Java EE 5",然后单击“完成”。

  3. 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、应用程序客户端 JARWEB-INF/libWEB-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 还提供了用于创建和维护持久性单元的模板和图形编辑器。



创建持久性单元



持久性单元目的在于通知容器哪些实体类需要由实体管理器进行管理,以及这些实体需要使用哪些数据源信息。

  1. 在“项目”窗口中右键单击 "BookshopApp-ejb" 项目节点,然后选择“新建”>“文件/文件夹”以打开“新建文件”向导。

  2. 从“持久性”类别中,选择“持久性单元”,然后单击“下一步”, 配置信息如



持久性单元名称:BookshopApp-ejbPU



持久性提供程序: TopLink(缺省)

数据源: jdbc/bookshopDS

使用 使用 Java 事务 API :

表生成策略:

  1. 单击“完成”, 最后生成BookshopApp-ejb项目下生成persistence.xml, 这个文件中定义了持久性单元的属性






创建实体类

实体类用于表示要创建的关系数据库中的表。下面为bookshop数据库中的三张表创建实体类,实体类包括命名的查询标注、表示列的字段以及表示外键的关系。



  1. 右键单击 "BookshopApp-ejb" 项目节点,然后选择“新建”>“文件/文件夹”。

  2. 从“持久性”类别中,选择“通过数据库生成实体类”,然后单击“下一步”。

  3. 下一个窗口中, “数据源”选择”jdbc/bookshopDS”, 点击”全部添加”按钮, 将”可用表”中的三张表(CUSTOMER, PRODUCT, PURCHASE_ORDER)添加到”选定表”中, 点击”下一步”按钮。

  4. 下一个窗口中,输入包名“bookshop.entities”,点击完成。




生成的Product实体类的部分代码如下:

......

@Entity
@Table(name
= " PRODUCT " )
@NamedQueries(
... {
@NamedQuery(name
="Product.findByProductId",query="SELECTpFROMProductpWHEREp.productId=:productId"),
@NamedQuery(name
="Product.findByProductName",query="SELECTpFROMProductpWHEREp.productName=:productName"),
@NamedQuery(name
="Product.findByPurchaseCost",query="SELECTpFROMProductpWHEREp.purchaseCost=:purchaseCost")
}
)
public class Product implements Serializable ... {

@Id
@Column(name
="PRODUCT_ID",nullable=false)
privateIntegerproductId;

@Column(name
="PRODUCT_NAME")
privateStringproductName;

@Column(name
="PURCHASE_COST")

http://www.niftyadmin.cn/n/600896.html

相关文章

tensorflow的卷积和池化层(二):记实践之cifar10

转载自https://www.cnblogs.com/cvtoEyes/p/8981994.html

POJ1067 取石子游戏(威佐夫博弈)

题意&#xff1a; 中文题不解释。 要点&#xff1a; 第一道博弈论题啊&#xff0c;这种题做过了就很好做了&#xff0c;代码很好写。这题是威佐夫博弈判断先手输赢&#xff0c;看了一下还是很简单的&#xff0c;就是记住第一个值是差值的1.618倍&#xff0c;注意第一个值要比第…

计算机加个微信教程,电脑上微信教程

鉴于微信怎么火&#xff0c;那来发一个用电脑上微信教程吧一、在电脑上下载安装Android模拟器1、由于Android模拟器需要在Java环境才能运行&#xff0c;先下载Java安装吧。(如已有Java环境的可跳过此步)Java环境下载32位系统用户下载&#xff1a;http://www.doczj.com/doc/210d…

史上十大最笨网上创业点子但全都获得成功

1)百万美元网站 相信很多人都知道这个点子,把网页分割成100万个象素,每个象素卖一块钱,当然都得买10X10以上的才能看的到,很多人买更多的象素. 在这个网站诞生之前,恐怕对大多数人来说,这个主意听着真够蠢的,谁跟你买呀&#xff1f;可是这位发明这个概念的21岁年轻人已经变成百…

AJAX框架 jMaki (二) – 鱼眼(FishEye)实例

<iframe align"top" marginwidth"0" marginheight"0" src"http://www.zealware.com/46860.html" frameborder"0" width"468" scrolling"no" height"60"></iframe>下面给出一个鱼…

iOS 用 SDWebImage 清理图片缓存

转发自http://www.cnblogs.com/qianLL/p/5389079.html 具体效果如下 1.找到 SDWebImage找到SDImageCache类 添加如下方法 - (float)checkTmpSize {float totalSize 0;NSDirectoryEnumerator *fileEnumerator [[NSFileManager defaultManager] enumeratorAtPath:_diskCachePat…

PCL点云配准

点云配准使用了SAC-IA粗配准ICP精配准的递进策略。 转载自博客&#xff1a; https://blog.csdn.net/peach_blossom/article/details/78506184 另外单独推荐一本PCL入门的书籍《点云库PCL从入门到精通》&#xff0c;机械工业出版社。 本书循循渐进、深入浅出&#xff0c;书中带…

国防科技大学计算机 成就,喜报!国防科大教授余同普获第十六届王大珩光学奖...

近日&#xff0c;第十六届王大珩光学奖揭晓&#xff0c;国防科技大学文理学院教授余同普因在强激光驱动高能粒子束、超短X/γ射线源和正电子束等基础研究方面的杰出成就&#xff0c;荣获中青年科技人员光学奖&#xff0c;全国仅两位青年科学家入选。余同普主要从事强激光等离子…