# 【第十一章】 SSH集成開發積分商城 之 11.1 概述 ——跟我學spring3
## 11.1? 概述
### 11.1.1? 功能概述
本節將通過介紹一個積分商城系統來演示如何使用SSH集成進行開發。
積分商城一般是購物網站的子模塊,提供一些禮品或商品用于獎勵老用戶或使用積分來折換成現金,如圖11-1所示。

圖11-1 購物網站與積分商城
積分商城功能點:
* **后臺管理**
**交易管理模塊:**用于查看積分交易歷史;
**商品管理模塊:**用于CRUD積分兌換商品;
**日報或月報:**用于發送給運營人員每日積分兌換情況,一般通過email發送;
……
* **前臺展示**
**商品展示:**展示給用戶可以使用積分兌換的商品;
**支付模塊:**用戶成功兌換商品后扣除用戶相應積分
**添加積分模塊:**提供接口用于其他產品贈送積分使用,如每天在線10小時贈送50積分,購買相應商品增加相應積分;
**訂單管理模塊:**訂單管理模塊可以使用現有購物平臺的訂單管理。
購物平臺、用戶系統及積分商城交互如圖11-2所示,其中用戶系統負責用戶登錄,購物平臺是購物網站核心,積分商城用于用戶使用積分購買商品。

圖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所示:

圖11-3 三層架構
分層的目的是約束層次邊界,每層的職責和目標應明確和單一,每層專注自己的事情,不要跨越分層邊界,具體每層功能如下:
* 數據訪問層:封裝底層數據庫或文件系統訪問細節,從而對業務邏輯層提供一致的接口,使業務邏輯層不關心底層細節;
* 業務邏輯層:專注于業務邏輯實現,不關心底層如何訪問,并在該層實現如聲明式事務管理,組裝分頁對象;
* 表現層:應該非常輕量級及非常“薄(功能非常少,幾乎全是委托)”,攔截用戶請求并響應,表現層數據驗證,負責根據請求委托給業務邏輯層進行業務處理,本層不實現任何業務邏輯,且提供用戶交互界面;
* 數據模型層:數據模型定義,提供給各層使用,不應該算作三層架構中的某一層,因為數據模型可使用其他對象(如Map)代替之。
系統架構已選定,在此我們進行優化一下,因為在進行基于SSH的三層架構進行開發時通常會有一些通用功能、如通用DAO、通用Service、通用Action、通用翻頁等等,因此我們再進行開發時都是基于通用功能進行的,能節省不少開發時間,從而可以使用這些節約的時間干自己想干的事情,如圖10-4所示。

圖10-4 基于通用層的三層架構
### 11.1.4項目搭建
**?????? 1、創建動態web工程:**
通過【File】>【New】>【other】>【Web】>【Dynamic Web Project】創建一個Web工程,如圖11-5所示;

圖11-5 Web工程配置
**1、?項目結構,如圖11-6所示:**

圖11-6 項目結構
**3、項目屬性修改:**
**3.1、字符編碼修改,如圖11-7所示,在實際項目中一定要統一字符編碼:**

圖11-7 修改項目字符編碼
**?????? 3.2、類路徑輸出修改,如圖11-8,將類路徑輸出改為/WEB-INF/classes下:**

圖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