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