- 浏览: 413753 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
liyuanhoa_:
...
struts2.0中struts.xml配置文件详解 -
chenmingde:
...
Velocity应用(一) -
weizhikai_ai:
第二十六,当一个线程进入一个对象的一个synchronized ...
Java常见面试题(含答案) -
Aurora_lr:
...
Spring宠物商店学习笔记(一) - -
zs911zs:
all copy from http://www.iteye ...
Mule入门文档
一、概述
JPetStore示例是一个宠物店示例,它一直依赖都被作为各种框架实现的示例程序,因此具有很好的研究价值。Spring发布包中的JPetstore示例使用了iBatis作为数据访问对象层,同时提供了多种数据源的实现版本,如Oracle、MS-SQL、MySQL、PostgreSQL。Jpetstore的业务层由Spring托管,其中也展示了Spring的事务管理功能。此外JPetstore在Web层也给出了Spring WebMVC和Struts版本的分别实现,很有参考价值。
二、本地安装示例
1、先下载Spring完整的发布包,然后解压。
2、在dos命令下进入示例目录,如spring-framework-2.0.8\samples\jpetstore。
3、运行ant build脚本。(需安装ant,版本要求见示例的readme文件)
4、将spring-framework-2.0.8\samples\jpetstore\dist新生成的jpetstore.war包发布到web容器中。
5、启动tomcat容器。
6、修改jdbc.properties配置文件,目的是适应自己本地的数据库。(在发布目录中对应war包名称的文件夹中,如apache-tomcat-5.5.23\webapps\jpetstore\WEB-INF)。
7、将本地数据库对应的jar包拷贝到WEB-INF\lib目录下。
8、启动本地数据库,执行示例的数据库应用脚本。(本人使用的是mysql数据库)
9、重新启动tomcat服务器。
10、访问示例。
三、
(一)、包的命名及其划分(包:用来封装最小可独立发布的模块)
1、dao包:存放用于处理数据持久层的接口。(注意异常的声明:org.springframework.dao.DataAccessException)
2、dao.ibatis包:存放用于处理数据持久层的接口的具体ibatis实现。(继承org.springframework.orm.ibatis.support.SqlMapClientDaoSupport类)
3、dao.ibatis.maps包:存放持久化对象对应的iBatis配置文件。
4、domain(域)包:存放应用中用到的对象。
5、domain.logic包:存放该业务的逻辑类。
6、service包:
7、service.client包:
8、web.spring包:存放UI层用到的Spring MVC框架 的Form和Controller。
9、web.struts包:存放UI层用到的Struts框架的From和Action。
相关配置及其属性文件。(applicationContext.xml 、dataAccessContext-local.xml、jdbc.properties、mail.properties、log4j.properties、sql-map-config.xml)
(二)涉及对象(domain)
1、Account:帐户对象。(account、signon、profile)
2、Cart:购物车对象。(包含部分业务方法)
3、CartItem:
4、Category:种类、类别对象。(category)
5、Item:项目,条款。(item、inventory)
6、LineItem:(lineitem)
7、Order:订单对象。(orders)
8、Product:产品对象。(product)
(三)涉及实体(数据库表)
1、supplier表:供应商表(id、名字、状态、地址1、地址2、城市、州、邮编、电话) 2、signon表:登陆信息表(用户名、密码)3、account表:用户信息表(userid、email、名、姓、地址1、地址2、城市、州、邮编、国家、电话) 4、profile表:用户简介表(userid、优先语言、喜爱的类别、我的列表开启选项、横幅开启选项) 5、bannerdata表:横幅数据表(喜爱的类别、横幅名称) 6、orders表:订单表(orderid、userid、订单日期、配送地址1、配送地址2、配送城市、配送州、配送邮编、配送国家、帐单地址1、帐单地址2、帐单城市、帐单州、帐单邮编、帐单城市、服务人员、总价钱、收帐单人的名、收帐单人的姓、收邮件人的名、收邮件人的姓、银行卡号、快递日期、卡的类别、本地信息) 7、orderstatus表:订单状态表(orderid、linenum、时间、状态) 8、lineitem表:订单明细表(orderid、linenum、itemid,数量、单价) 9、category表:类别表(catid、名称、描述) 10、product表:商品表(productid、类别(外键)、名称、描述) 11、item表:具体产品项表(itemid、productid(外)、批发价、零售价、供应商(外)、状态、备注1、备注2、备注3、备注4、备注5) 12、inventory表:库存表(itemid、数量)
13、sequence表:序列表(序列名、nextid)
(四)数据层的实现
1、接口的设计(org.springframework.dao.DataAccessException)
AccountDao Account getAccount(String username) throws DataAccessException; Account getAccount(String username, String password) throws DataAccessException; void insertAccount(Account account) throws DataAccessException; void updateAccount(Account account) throws DataAccessException;
List getUsernameList() throws DataAccessException;
CategoryDao
List getCategoryList() throws DataAccessException;
Category getCategory(String categoryId) throws DataAccessException;
ItemDao
public void updateQuantity(Order order) throws DataAccessException; boolean isItemInStock(String itemId) throws DataAccessException; List getItemListByProduct(String productId) throws DataAccessException;
Item getItem(String itemId) throws DataAccessException;
OrderDao
List getOrdersByUsername(String username) throws DataAccessException; Order getOrder(int orderId) throws DataAccessException;
void insertOrder(Order order) throws DataAccessException;
ProductDao
List getProductListByCategory(String categoryId) throws DataAccessException; List searchProductList(String keywords) throws DataAccessException;
Product getProduct(String productId) throws DataAccessException;
2、用iBatis实现Dao接口
(org.springframework.orm.ibatis.support.SqlMapClientDaoSupport)
extends SqlMapClientDaoSupport implements AccountDao
使用getSqlMapClientTemplate()模板的相应方法进行具体实现。
(1)SqlMapAccountDao
(2)SqlMapCategoryDao
(3)SqlMapItemDao
(4)SqlMapOrderDao:依赖SqlMapSequenceDao
(5)SqlMapProductDao
添加基处的处理类:
(6)SqlMapSequenceDao extends SqlMapClientDaoSupport:提供类似Oracle序列的功能。(先获取,后更新)
(7)Sequence implements Serializable:序列对象的持久化bean。
(8)OracleSequenceDao extends SqlMapSequenceDao
3、iBatis的配置文件
(1)Account.xml:
(2)Category.xml:
(3)Item.xml:
(4)LineItem.xml:
(5)Order.xml:
(6)Product.xml:
(7)Sequence.xml:
(五)业务层的实现
1、用户注册
A、显示注册页面:newAccount.do
<action path="/shop/newAccount" type="org.springframework.samples.jpetstore.web.struts.NewAccountAction" name="workingAccountForm" scope="session" validate="true" input="/WEB-INF/jsp/struts/NewAccountForm.jsp"> <forward name="success" path="/shop/index.do"/>
</action>
2、用户登陆 3、购物车 4、结算
5、订单查询
JPetStore示例是一个宠物店示例,它一直依赖都被作为各种框架实现的示例程序,因此具有很好的研究价值。Spring发布包中的JPetstore示例使用了iBatis作为数据访问对象层,同时提供了多种数据源的实现版本,如Oracle、MS-SQL、MySQL、PostgreSQL。Jpetstore的业务层由Spring托管,其中也展示了Spring的事务管理功能。此外JPetstore在Web层也给出了Spring WebMVC和Struts版本的分别实现,很有参考价值。
二、本地安装示例
1、先下载Spring完整的发布包,然后解压。
2、在dos命令下进入示例目录,如spring-framework-2.0.8\samples\jpetstore。
3、运行ant build脚本。(需安装ant,版本要求见示例的readme文件)
4、将spring-framework-2.0.8\samples\jpetstore\dist新生成的jpetstore.war包发布到web容器中。
5、启动tomcat容器。
6、修改jdbc.properties配置文件,目的是适应自己本地的数据库。(在发布目录中对应war包名称的文件夹中,如apache-tomcat-5.5.23\webapps\jpetstore\WEB-INF)。
7、将本地数据库对应的jar包拷贝到WEB-INF\lib目录下。
8、启动本地数据库,执行示例的数据库应用脚本。(本人使用的是mysql数据库)
9、重新启动tomcat服务器。
10、访问示例。
三、
(一)、包的命名及其划分(包:用来封装最小可独立发布的模块)
1、dao包:存放用于处理数据持久层的接口。(注意异常的声明:org.springframework.dao.DataAccessException)
2、dao.ibatis包:存放用于处理数据持久层的接口的具体ibatis实现。(继承org.springframework.orm.ibatis.support.SqlMapClientDaoSupport类)
3、dao.ibatis.maps包:存放持久化对象对应的iBatis配置文件。
4、domain(域)包:存放应用中用到的对象。
5、domain.logic包:存放该业务的逻辑类。
6、service包:
7、service.client包:
8、web.spring包:存放UI层用到的Spring MVC框架 的Form和Controller。
9、web.struts包:存放UI层用到的Struts框架的From和Action。
相关配置及其属性文件。(applicationContext.xml 、dataAccessContext-local.xml、jdbc.properties、mail.properties、log4j.properties、sql-map-config.xml)
(二)涉及对象(domain)
1、Account:帐户对象。(account、signon、profile)
2、Cart:购物车对象。(包含部分业务方法)
3、CartItem:
4、Category:种类、类别对象。(category)
5、Item:项目,条款。(item、inventory)
6、LineItem:(lineitem)
7、Order:订单对象。(orders)
8、Product:产品对象。(product)
(三)涉及实体(数据库表)
1、supplier表:供应商表(id、名字、状态、地址1、地址2、城市、州、邮编、电话) 2、signon表:登陆信息表(用户名、密码)3、account表:用户信息表(userid、email、名、姓、地址1、地址2、城市、州、邮编、国家、电话) 4、profile表:用户简介表(userid、优先语言、喜爱的类别、我的列表开启选项、横幅开启选项) 5、bannerdata表:横幅数据表(喜爱的类别、横幅名称) 6、orders表:订单表(orderid、userid、订单日期、配送地址1、配送地址2、配送城市、配送州、配送邮编、配送国家、帐单地址1、帐单地址2、帐单城市、帐单州、帐单邮编、帐单城市、服务人员、总价钱、收帐单人的名、收帐单人的姓、收邮件人的名、收邮件人的姓、银行卡号、快递日期、卡的类别、本地信息) 7、orderstatus表:订单状态表(orderid、linenum、时间、状态) 8、lineitem表:订单明细表(orderid、linenum、itemid,数量、单价) 9、category表:类别表(catid、名称、描述) 10、product表:商品表(productid、类别(外键)、名称、描述) 11、item表:具体产品项表(itemid、productid(外)、批发价、零售价、供应商(外)、状态、备注1、备注2、备注3、备注4、备注5) 12、inventory表:库存表(itemid、数量)
13、sequence表:序列表(序列名、nextid)
(四)数据层的实现
1、接口的设计(org.springframework.dao.DataAccessException)
AccountDao Account getAccount(String username) throws DataAccessException; Account getAccount(String username, String password) throws DataAccessException; void insertAccount(Account account) throws DataAccessException; void updateAccount(Account account) throws DataAccessException;
List getUsernameList() throws DataAccessException;
CategoryDao
List getCategoryList() throws DataAccessException;
Category getCategory(String categoryId) throws DataAccessException;
ItemDao
public void updateQuantity(Order order) throws DataAccessException; boolean isItemInStock(String itemId) throws DataAccessException; List getItemListByProduct(String productId) throws DataAccessException;
Item getItem(String itemId) throws DataAccessException;
OrderDao
List getOrdersByUsername(String username) throws DataAccessException; Order getOrder(int orderId) throws DataAccessException;
void insertOrder(Order order) throws DataAccessException;
ProductDao
List getProductListByCategory(String categoryId) throws DataAccessException; List searchProductList(String keywords) throws DataAccessException;
Product getProduct(String productId) throws DataAccessException;
2、用iBatis实现Dao接口
(org.springframework.orm.ibatis.support.SqlMapClientDaoSupport)
extends SqlMapClientDaoSupport implements AccountDao
使用getSqlMapClientTemplate()模板的相应方法进行具体实现。
(1)SqlMapAccountDao
(2)SqlMapCategoryDao
(3)SqlMapItemDao
(4)SqlMapOrderDao:依赖SqlMapSequenceDao
(5)SqlMapProductDao
添加基处的处理类:
(6)SqlMapSequenceDao extends SqlMapClientDaoSupport:提供类似Oracle序列的功能。(先获取,后更新)
(7)Sequence implements Serializable:序列对象的持久化bean。
(8)OracleSequenceDao extends SqlMapSequenceDao
3、iBatis的配置文件
(1)Account.xml:
(2)Category.xml:
(3)Item.xml:
(4)LineItem.xml:
(5)Order.xml:
(6)Product.xml:
(7)Sequence.xml:
(五)业务层的实现
1、用户注册
A、显示注册页面:newAccount.do
<action path="/shop/newAccount" type="org.springframework.samples.jpetstore.web.struts.NewAccountAction" name="workingAccountForm" scope="session" validate="true" input="/WEB-INF/jsp/struts/NewAccountForm.jsp"> <forward name="success" path="/shop/index.do"/>
</action>
2、用户登陆 3、购物车 4、结算
5、订单查询
发表评论
-
访问Spring示例JPetStore的OrderService服务
2008-11-27 17:27 1384Spring--当前流行的J2EE开发的轻量级框架,提供了对M ... -
read-jpetstore-1-安装与配置
2008-11-27 17:26 1280项目导入 登录http://www.springframe ... -
spring jpetstore研究入门—完结篇
2008-11-27 16:07 1448相关文章: springframe ... -
spring jpetstore研究入门—安装篇
2008-11-27 16:06 1553之所以写这个jpetstore研究入门的文章,是为了给茫然不知 ... -
spring JpetStore学习笔记
2008-11-27 16:04 1901首先看看工程的web.xml文件 指定web应用的根, 为W ... -
spring入门编程问题集锦
2008-11-27 16:01 1036相关文章: 问一下<sping:bind& ... -
代理和AOP
2008-11-26 18:02 933一.起源 有时,我们在写一些功能方法的时候,需要加上特定的功 ... -
在Spring中使用JMS
2008-11-26 16:37 1114准备工作: 熟悉下JMS的基础知识,这里不再罗嗦,主要是实 ... -
Spring发布包内容详解
2008-11-26 16:26 947版权声明:作者junsan, ... -
在项目中应用Spring的Acegi安全框架的步骤
2008-11-26 12:22 18750、准备:配置数据源 1、配置认证管理器(org.acegi ... -
Spring宠物商店学习笔记(二)
2008-11-26 12:21 1317项目框架 1、Struts/Spring MVC 2、Sp ... -
Spring基础知识(三)
2008-11-26 12:20 1190参阅:Spring Framework 开 ... -
Spring基础知识(二)
2008-11-26 12:19 1223参阅:Spring Framework 开 ... -
Spring基础知识(一)
2008-11-26 12:19 1437http://book.csdn.net/bookfiles/ ... -
Spring精髓
2008-11-26 12:18 18511\、好处 A、 使用配置文件来组装应用系统,使得在不用修改 ... -
Spring Security 中文参考文档
2008-11-25 16:56 1328http://peak.iteye.com/blog/2361 ... -
Spring的声明式事务管理
2008-11-21 16:37 6441小结:用Spring AOP配置事务要注意的几项 Spring ...
相关推荐
黑马程序员-SpringCloud-学习笔记01-认识微服务
黑马程序员-SpringCloud-学习笔记-03-Eureka注册中心
云的学习笔记-云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-云的学习笔记管理系统java代码-云的学习笔记系统设计与实现-基于ssm的云的学习笔记系统-基于Web的云的学习笔记系统设计与实现-云的学习...
云的学习笔记-云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-云的学习笔记管理系统java代码-云的学习笔记系统设计与实现-基于ssm的云的学习笔记系统-基于Web的云的学习笔记系统设计与实现-云的学习...
黑马程序员-SpringCloud-学习笔记-02-微服务拆分及远程调用
无论做毕业设计还是用于学习技能,或工作中当做参考资料,都能发挥重要作用 亲们下载我任何一个付费资源后,即可私信联系我免费下载其他相关资源哦~ 个人花大量时间整理出的实战资料,内容丰富,文档也很详细。无论...
spring.jar spring-aop.jar spring-aop.jar spring-beans.jar spring-hibernate3.jar spring-jdbc.jar spring-struts.jar spring-web.jar
Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Spring...
Struts 是一个 MVC(Model-View-Controller)架构的 Web 框架,Spring 提供了一个全面的后端服务管理平台,而 Hibernate 则是用于对象关系映射(ORM)的框架,简化了数据库操作。下面将详细介绍这三个框架的基本概念...
在“Spring学习笔记(11)----自定义属性编辑器”这篇博文中,作者深入探讨了如何自定义属性编辑器以满足特定需求。 首先,我们需要了解属性编辑器的工作原理。当IoC容器读取配置文件时,如果发现一个属性值需要...
这份"Spring学习笔记+学习源码.zip"资源包含了深入学习Spring及其相关技术的知识点,以及实践代码,对提升Spring技能将大有裨益。 首先,我们来详细讨论Spring框架的主要组件和功能: 1. **依赖注入(Dependency ...
### Spring Boot 学习笔记知识点总结 #### 一、Spring发展史 - **Spring1.x时代**:在Spring1.x的时代,主要通过XML文件来配置Bean。随着项目的规模扩大,XML配置文件的数量也随之增加,这导致开发人员需要频繁地...
在本篇Spring学习笔记中,我们将深入探讨如何利用Spring框架的注解方式来实现面向切面编程(AOP)。AOP是一种编程范式,它允许我们定义横切关注点,如日志、事务管理等,然后将这些关注点模块化并插入到应用程序的多...
总的来说,这个“spring-boot spring-security-oauth2 完整demo”为学习和实践Spring Boot、Spring Security与OAuth2的结合提供了宝贵的参考。通过深入理解和实践这个示例,开发者不仅可以掌握这三大框架的基本用法...
**SpringDM笔记7-开发SpringDM Bundle** SpringDM(Spring Dynamic Modules)是Spring框架的一个扩展,专门用于OSGi(Open Service Gateway Initiative)环境中的应用程序开发。OSGi是一种Java模块化系统,它允许...