estore簡版商城
一、功能詳細
簡要說明,這是一個簡版的電商網站:賣東西的網站
實作功能:
一: 使用者的注冊
二: 使用者的登入------ 自動登入
三:登出
四:實作md5加密
五: 商品的添加 --- ----檔案的上傳
六: 商品的顯示
七: 添加商品到購物車
八:權限控制
九: 顯示購物車(去購物車結算)【包含修改購物車商品數量】
十: 生成訂單(去結算)
十一:檢視訂單
十二: 線上支付
二、資料庫模組化分析
1、建表說明
設計表,一共有四個表。
使用者表:user,商品表:product,訂單表:order,訂單項表(訂單和商品的關系表):orderitem
備注:購物車,沒有單獨設計成一個表,而是将購物車中的東西放到session中進行存儲
2、ER圖
3、estore表字段
(1)使用者表:user
字段名稱 | 資料類型 | 主鍵 | 是否空 | 說明 |
id | varchar(50) | Y | N | 主鍵(使用者編号) |
username | varchar(50) | N | N | 使用者名 |
password | varchar(50) | N | N | 密碼 |
varchar(50) | N | N | 郵箱 | |
nickname | varchar(50) | N | N | 昵稱 |
role | varchar(30) | N | N | 角色(user表示普通使用者,admin表示管理者) |
(2)商品表:product
字段名稱 | 資料類型 | 主鍵 | 是否空 | 說明 |
id | varchar(50) | Y | N | 主鍵(商品編号) |
name | varchar(50) | N | N | 商品名 |
price | double | N | N | 單價 |
category | varchar(50) | N | N | 種類 |
description | varchar(100) | N | N | 商品描述 |
count | int | N | N | 庫存 |
imageurl | varchar(100) | N | N | 圖檔存放位址 |
(3)訂單表:orders
由于使用者和訂單是一對多的關系,是以在多的一方添加一的一方的主鍵作為外鍵限制
字段名稱 | 資料類型 | 主鍵 | 是否空 | 說明 |
id | varchar(50) | Y | N | 主鍵(訂單編号) |
money | double | N | N | 訂單金額 |
ordertime | double | N | N | 訂單時間 |
reveiveinfo | varchar(100) | N | N | 收貨位址 |
paystate | int | N | N | 支付狀态(0表示未支付,1表示支付成功) |
user_id | varchar(50) | N | N | 外鍵(使用者編号) |
(4)訂單項表(訂單和商品的關系表):orderitem
由于商品和訂單是多對多的關系, 是以會引入第三張關系表, 将兩張主體表的主鍵拿過來當作外鍵限制
字段名稱 | 資料類型 | 主鍵 | 是否空 | 說明 |
order_id | varchar(50) | N | N | 外鍵(訂單編号) |
product_id | varchar(50) | N | N | 外鍵(商品編号) |
buynum | int | N | N | 購買商品數量 |
4、建庫建表語句
create databaseestore;
use estore;
-- 使用者表
create table user(
id varchar(50) primary key,
username varchar(50),
password varchar(50),
email varchar(50),
nickname varchar(50),
role varchar(30)
);
-- 商品表
create tableproduct(
id varchar(50) primary key,
name varchar(50),
price double,
category varchar(50),
description varchar(100),
count int,
imageurl varchar(100)
);
-- 訂單表
create table orders(
id varchar(50) primary key,
money double,
ordertime datetime,
receiveinfo varchar(100),
paystate int,
user_id varchar(50),
--由于使用者和訂單是一對多的關系,是以在多的一方添加一的一方的主鍵作為外鍵限制
-- 外鍵限制
foreign key(user_id) references user(id)
);
由于 商品和訂單是多對多的關系, 是以會引入第三張關系表, 将兩張主體表的主鍵拿過來當作外鍵限制
-- 關系表
create tableorderitem(
order_id varchar(50),
product_id varchar(50),
buynum int,
foreign key(order_id) references orders(id),
foreign key(product_id) references product(id)
);
三、estore工程環境搭建
建立一個工程:estore
1、組織包結構:
2、導包
Beanutils(2個jar)+ dbutils(1個jar )+ c3p0(1 個jar, 1 個配置檔案)+mysql驅動(1個jar)+ commons-fileupload(2個jar)
3、建實體bean:
有什麼樣的表就有什麼樣 bean
4、工具類:
一些前期,認為必要的工具類,後期具體會根據需要加入一些工具類,友善項目的開展
操作資料庫的工具類:jdbcUtils
md5加密的工具類:MD5Utils
手動管理事務(解耦合)的工具類:TransactionUtil
制作圖檔縮略圖(小圖)的工具類:PictUtils
上傳檔案的工具類:UploadUtils
四、以頂級域名的方式釋出工程
通過頂級域名的方式去釋出工程. 讓tomcat伺服器自動加載 web應用, 不再通過之前的方式去釋出.
通過www.estore.com可以通路 到網站的首頁
l 第一步:
到 tomcat伺服器的server.xml檔案中,更改端口為80
l 第二步:
在C:\Windows\System32\drivers\etc目錄下:找到hosts檔案
進入到 hosts 檔案中 添加主機名與ip位址對應關系
l 第三步:
到 tomcat伺服器的server.xml檔案中, 添加 Host元素,添加如下:
将 www.estore.com 映射指向了 硬碟上的: D:\myeclipse_workspace\estore(estore在myeclipse中的位置)
然後又将 這個檔案夾下的:D:\myeclipse_workspace\estore\WebRoot(estore在的WebRoot裡面的結構就是一個web應用裡面的結構,是以此處相當于estore的web應用在myeclipse中的位置)
l 第四步:
啟動伺服器去通路(如果此時不成功,可能是80端口被占用)
注意:
1.這裡以 頂級 域名方式 釋出後, 以後就不要再 點選 去釋出了 . Tomcat伺服器會自動加載web應用.
2.以頂級域名方式釋出後,再去通路web應用中的資源檔案的時候,都不要再加主機名了.
五、項目展示
1、首頁
2、注冊
3、登入
4、顯示商品
5、添加商品
【1】普通使用者添加,失敗,沒有權限
【2】管理者添加,成功
6、添加商品到購物車
7、顯示購物車
【1】管理者顯示購物車,失敗,沒有權限
【2】普通使用者顯示購物車,成功
8、結算,确認訂單資訊
9、生成訂單
10、顯示訂單清單
11、支付訂單
六、項目源碼
本人的github項目位址
https://github.com/Forever99/estore