# 【第十一章】 SSH集成开发积分商城 之 11.1 概述 ——跟我学spring3
## 11.1 概述
### 11.1.1 功能概述
本节将通过介绍一个积分商城系统来演示如何使用SSH集成进行开发。
积分商城一般是购物网站的子模块,提供一些礼品或商品用于奖励老用户或使用积分来折换成现金,如图11-1所示。
![](https://box.kancloud.cn/2016-05-13_573547228153c.JPG)
图11-1 购物网站与积分商城
积分商城功能点:
* **后台管理**
**交易管理模块:**用于查看积分交易历史;
**商品管理模块:**用于CRUD积分兑换商品;
**日报或月报:**用于发送给运营人员每日积分兑换情况,一般通过email发送;
……
* **前台展示**
**商品展示:**展示给用户可以使用积分兑换的商品;
**支付模块:**用户成功兑换商品后扣除用户相应积分
**添加积分模块:**提供接口用于其他产品赠送积分使用,如每天在线10小时赠送50积分,购买相应商品增加相应积分;
**订单管理模块:**订单管理模块可以使用现有购物平台的订单管理。
购物平台、用户系统及积分商城交互如图11-2所示,其中用户系统负责用户登录,购物平台是购物网站核心,积分商城用于用户使用积分购买商品。
![](https://box.kancloud.cn/2016-05-13_5735472296515.JPG)
图11-2 购物平台、用户系统及积分商城交互
由于积分商城也是很复杂,由于篇幅原因不打算完全介绍,只介绍其中一个模块——商品(兑换码)管理及购买,该模块主要提供给用户使用积分兑换一些优惠券或虚拟物品(如移动充值卡)等等。
### 11.1.2技术选型
由于本节是关于SSH集成的,因此选用技术如下:
* 平台:Java EE;
* 运行环境:Windows XP,JDK1.6;
* 编辑器:Eclipse3.6 + SpringSource Tool Suite;
* Web容器:tomcat6.0.20;
* 数据库:mysql5.4.3;
* 框架:Struts2.0.14、Spring3.0.5、Hibernate3.6.0.Final;
* 日志记录:log4j1.2.15;
* 数据库连接池:proxool0.9.1;
* 视图技术:JSP 2.0。
技术选定了,应该考虑平台架构了,这关系到项目的成功与否。
### 11.1.3系统架构
积分商城系统架构也将采用经典的三层架构,如图11-3所示:
![](https://box.kancloud.cn/2016-05-13_57354722aad76.JPG)
图11-3 三层架构
分层的目的是约束层次边界,每层的职责和目标应明确和单一,每层专注自己的事情,不要跨越分层边界,具体每层功能如下:
* 数据访问层:封装底层数据库或文件系统访问细节,从而对业务逻辑层提供一致的接口,使业务逻辑层不关心底层细节;
* 业务逻辑层:专注于业务逻辑实现,不关心底层如何访问,并在该层实现如声明式事务管理,组装分页对象;
* 表现层:应该非常轻量级及非常“薄(功能非常少,几乎全是委托)”,拦截用户请求并响应,表现层数据验证,负责根据请求委托给业务逻辑层进行业务处理,本层不实现任何业务逻辑,且提供用户交互界面;
* 数据模型层:数据模型定义,提供给各层使用,不应该算作三层架构中的某一层,因为数据模型可使用其他对象(如Map)代替之。
系统架构已选定,在此我们进行优化一下,因为在进行基于SSH的三层架构进行开发时通常会有一些通用功能、如通用DAO、通用Service、通用Action、通用翻页等等,因此我们再进行开发时都是基于通用功能进行的,能节省不少开发时间,从而可以使用这些节约的时间干自己想干的事情,如图10-4所示。
![](https://box.kancloud.cn/2016-05-13_57354722bf0cb.JPG)
图10-4 基于通用层的三层架构
### 11.1.4项目搭建
** 1、创建动态web工程:**
通过【File】>【New】>【other】>【Web】>【Dynamic Web Project】创建一个Web工程,如图11-5所示;
![](https://box.kancloud.cn/2016-05-13_57354722dbe00.JPG)
图11-5 Web工程配置
**1、 项目结构,如图11-6所示:**
![](https://box.kancloud.cn/2016-05-13_5735472308285.JPG)
图11-6 项目结构
**3、项目属性修改:**
**3.1、字符编码修改,如图11-7所示,在实际项目中一定要统一字符编码:**
![](https://box.kancloud.cn/2016-05-13_573547232c5ad.JPG)
图11-7 修改项目字符编码
** 3.2、类路径输出修改,如图11-8,将类路径输出改为/WEB-INF/classes下:**
![](https://box.kancloud.cn/2016-05-13_5735472341b76.JPG)
图11-8 类路径修改
** 4、准备jar包:**
** 4.1、Spring项目依赖包,到下载的spring-framework-3.0.5.RELEASE-with-docs.zip中拷贝如下jar包:**
+ dist\org.springframework.aop-3.0.5.RELEASE.jar
+ dist\org.springframework.asm-3.0.5.RELEASE.jar
+ dist\org.springframework.beans-3.0.5.RELEASE.jar
+ dist\org.springframework.context-3.0.5.RELEASE.jar
+ dist\org.springframework.core-3.0.5.RELEASE.jar
+ dist\org.springframework.expression-3.0.5.RELEASE.jar
+ dist\org.springframework.jdbc-3.0.5.RELEASE.jar
+ dist\org.springframework.orm-3.0.5.RELEASE.jar
+ dist\org.springframework.transaction-3.0.5.RELEASE.jar
+ dist\org.springframework.web-3.0.5.RELEASE.jar
** 4.2、Spring及其他项目依赖包,到spring-framework-3.0.5.RELEASE-dependencies.zip中拷贝如下jar吧:**
+ com.springsource.net.sf.cglib-2.2.0.jar
+ com.springsource.org.aopalliance-1.0.0.jar
+ com.springsource.org.apache.commons.beanutils-1.8.0.jar
+ com.springsource.org.apache.commons.collections-3.2.1.jar
+ com.springsource.org.apache.commons.digester-1.8.1.jar
+ com.springsource.org.apache.commons.logging-1.1.1.jar
+ com.springsource.org.apache.log4j-1.2.15.jar
+ com.springsource.org.apache.taglibs.standard-1.1.2.jar
+ com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
4.3、Hibernate依赖包,到hibernate-distribution-3.6.0.Final.zip中拷贝如下jar包:
+ hibernate3.jar
+ lib\jpa\hibernate-jpa-2.0-api-1.0.0.Final.jar
+ lib\required\dom4j-1.6.1.jar
+ lib\required\javassist-3.12.0.GA.jar
+ lib\required\jta-1.1.jar
+ lib\ required \slf4j-api-1.6.1.jar
+ lib\required\antlr-2.7.6.jar
4.4、数据库连接池依赖包,到proxool-0.9.1.zip中拷贝如下jar包:
+ lib\proxool-0.9.1.jar
+ lib\proxool-cglib.jar
4.5、准备mysql JDBC连接依赖包:
+ mysql-connector-java-5.1.10.jar
4.6、slf4j依赖包准备,到下载的slf4j-1.6.1.zip包中拷贝如下jar包:
+ slf4j-log4j12-1.6.1.jar
4.7、Strut2依赖包,到struts-2.2.1.1.zip中拷贝如下jar包:
+ lib\struts2-core-2.2.1.1.jar
+ lib\xwork-core-2.2.1.1.jar
+ lib\freemarker-2.3.16.jar
+ lib\ognl-3.0.jar
+ lib\struts2-spring-plugin-2.2.1.1.jar
+ lib\commons-fileupload-1.2.1.jar
jar包终于准备完了,是不是很头疼啊,在此推荐使用maven进行依赖管理,无需拷贝这么多jar包,而是通过配置方式来指定使用的依赖,具体maven知识请到官方网站http://maven.apache.org/了解。
原创内容,转载请注明出处【[http://sishuok.com/forum/blogPost/list/2514.html](http://sishuok.com/forum/blogPost/list/2514.html#7239)】
- 跟我学 Spring3
- 【第二章】 IoC 之 2.1 IoC基础 ——跟我学Spring3
- 【第二章】 IoC 之 2.2 IoC 容器基本原理 ——跟我学Spring3
- 【第二章】 IoC 之 2.3 IoC的配置使用——跟我学Spring3
- 【第三章】 DI 之 3.1 DI的配置使用 ——跟我学spring3
- 【第三章】 DI 之 3.2 循环依赖 ——跟我学spring3
- 【第三章】 DI 之 3.3 更多DI的知识 ——跟我学spring3
- 【第三章】 DI 之 3.4 Bean的作用域 ——跟我学spring3
- 【第四章】 资源 之 4.1 基础知识 ——跟我学spring3
- 【第四章】 资源 之 4.2 内置Resource实现 ——跟我学spring3
- 【第四章】 资源 之 4.3 访问Resource ——跟我学spring3
- 【第四章】 资源 之 4.4 Resource通配符路径 ——跟我学spring3
- 【第五章】Spring表达式语言 之 5.1 概述 5.2 SpEL基础 ——跟我学spring3
- 【第五章】Spring表达式语言 之 5.3 SpEL语法 ——跟我学spring3
- 【第五章】Spring表达式语言 之 5.4在Bean定义中使用EL—跟我学spring3
- 【第六章】 AOP 之 6.1 AOP基础 ——跟我学spring3
- 【第六章】 AOP 之 6.2 AOP的HelloWorld ——跟我学spring3
- 【第六章】 AOP 之 6.3 基于Schema的AOP ——跟我学spring3
- 【第六章】 AOP 之 6.4 基于@AspectJ的AOP ——跟我学spring3
- 【第六章】 AOP 之 6.5 AspectJ切入点语法详解 ——跟我学spring3
- 【第六章】 AOP 之 6.6 通知参数 ——跟我学spring3
- 【第六章】 AOP 之 6.7 通知顺序 ——跟我学spring3
- 【第六章】 AOP 之 6.8 切面实例化模型 ——跟我学spring3
- 【第六章】 AOP 之 6.9 代理机制 ——跟我学spring3
- 【第七章】 对JDBC的支持 之 7.1 概述 ——跟我学spring3
- 【第七章】 对JDBC的支持 之 7.2 JDBC模板类 ——跟我学spring3
- 【第七章】 对JDBC的支持 之 7.3 关系数据库操作对象化 ——跟我学spring3
- 【第七章】 对JDBC的支持 之 7.4 Spring提供的其它帮助 ——跟我学spring3【私塾在线原创】
- 【第七章】 对JDBC的支持 之 7.5 集成Spring JDBC及最佳实践 ——跟我学spring3
- 【第八章】 对ORM的支持 之 8.1 概述 ——跟我学spring3
- 【第八章】 对ORM的支持 之 8.2 集成Hibernate3 ——跟我学spring3
- 【第八章】 对ORM的支持 之 8.3 集成iBATIS ——跟我学spring3
- 【第八章】 对ORM的支持 之 8.4 集成JPA ——跟我学spring3
- 【第九章】 Spring的事务 之 9.1 数据库事务概述 ——跟我学spring3
- 【第九章】 Spring的事务 之 9.2 事务管理器 ——跟我学spring3
- 【第九章】 Spring的事务 之 9.3 编程式事务 ——跟我学spring3
- 【第九章】 Spring的事务 之 9.4 声明式事务 ——跟我学spring3
- 【第十章】集成其它Web框架 之 10.1 概述 ——跟我学spring3
- 【第十章】集成其它Web框架 之 10.2 集成Struts1.x ——跟我学spring3
- 【第十章】集成其它Web框架 之 10.3 集成Struts2.x ——跟我学spring3
- 【第十章】集成其它Web框架 之 10.4 集成JSF ——跟我学spring3
- 【第十一章】 SSH集成开发积分商城 之 11.1 概述 ——跟我学spring3
- 【第十一章】 SSH集成开发积分商城 之 11.2 实现通用层 ——跟我学spring3
- 【第十一章】 SSH集成开发积分商城 之 11.3 实现积分商城层 ——跟我学spring3
- 【第十二章】零配置 之 12.1 概述 ——跟我学spring3
- 【第十二章】零配置 之 12.2 注解实现Bean依赖注入 ——跟我学spring3
- 【第十二章】零配置 之 12.3 注解实现Bean定义 ——跟我学spring3
- 【第十二章】零配置 之 12.4 基于Java类定义Bean配置元数据 ——跟我学spring3
- 【第十二章】零配置 之 12.5 综合示例-积分商城 ——跟我学spring3
- 【第十三章】 测试 之 13.1 概述 13.2 单元测试 ——跟我学spring3
- 【第十三章】 测试 之 13.3 集成测试 ——跟我学spring3
- 跟我学 Spring MVC
- SpringMVC + spring3.1.1 + hibernate4.1.0 集成及常见问题总结
- Spring Web MVC中的页面缓存支持 ——跟我学SpringMVC系列
- Spring3 Web MVC下的数据类型转换(第一篇)——《跟我学Spring3 Web MVC》抢先看
- Spring3 Web MVC下的数据格式化(第二篇)——《跟我学Spring3 Web MVC》抢先看
- 第一章 Web MVC简介 —— 跟开涛学SpringMVC
- 第二章 Spring MVC入门 —— 跟开涛学SpringMVC
- 第三章 DispatcherServlet详解 ——跟开涛学SpringMVC
- 第四章 Controller接口控制器详解(1)——跟着开涛学SpringMVC
- 第四章 Controller接口控制器详解(2)——跟着开涛学SpringMVC
- 第四章 Controller接口控制器详解(3)——跟着开涛学SpringMVC
- 第四章 Controller接口控制器详解 (4)——跟着开涛学SpringMVC
- 第四章 Controller接口控制器详解(5)——跟着开涛学SpringMVC
- 跟着开涛学SpringMVC 第一章源代码下载
- 第二章 Spring MVC入门 源代码下载
- 第四章 Controller接口控制器详解 源代码下载
- 第四章 Controller接口控制器详解(6)——跟着开涛学SpringMVC
- 第四章 Controller接口控制器详解(7 完)——跟着开涛学SpringMVC
- 第五章 处理器拦截器详解——跟着开涛学SpringMVC
- 源代码下载 第五章 处理器拦截器详解——跟着开涛学SpringMVC
- 注解式控制器运行流程及处理器定义 第六章 注解式控制器详解——跟着开涛学SpringMVC
- 源代码下载 第六章 注解式控制器详解
- SpringMVC3强大的请求映射规则详解 第六章 注解式控制器详解——跟着开涛学SpringMVC
- Spring MVC 3.1新特性 生产者、消费者请求限定 —— 第六章 注解式控制器详解——跟着开涛学SpringMVC
- SpringMVC强大的数据绑定(1)——第六章 注解式控制器详解——跟着开涛学SpringMVC
- SpringMVC强大的数据绑定(2)——第六章 注解式控制器详解——跟着开涛学SpringMVC
- SpringMVC数据类型转换——第七章 注解式控制器的数据验证、类型转换及格式化——跟着开涛学SpringMVC
- SpringMVC数据格式化——第七章 注解式控制器的数据验证、类型转换及格式化——跟着开涛学SpringMVC
- SpringMVC数据验证——第七章 注解式控制器的数据验证、类型转换及格式化——跟着开涛学SpringMVC