estore简版商城
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
estore简版商城相关推荐
- estore简版商城疑点思考
estore简版商城疑点思考 一.疑点 1.疑点一:[解决] 读取 web应用中的 资源 文件 解答: 本人博文:javaweb读取 web 应用中的资源文件 http://blog.csdn.ne ...
- 公司网站营销方案(简版)
公司网站营销方案(简版) 前言: 随着网络的普及,以及人们文化素质的提高,上网是大多数人生活中不可缺少的一部分,同时有相当一大部分的人,积极的参与网上的各种活动,现在越来越多的人,希望利用业余的时间, ...
- [置顶]完美简版学生信息管理系统(附有源码)管理系统
简版学生信息管理系统 目前为止找到的简版系统中最新.最全的java类管理系统 点击进入简版系统 如果无法直接连接,请进入: https://blog.csdn.net/weixin_43419816/ ...
- 7句话让Codex给我做了个小游戏,还是极简版塞尔达,一玩简直停不下来
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 梦晨 萧箫 发自 凹非寺 量子位 | 公众号 QbitAI 什么,7 ...
- 来,一起手撸一个简版 Redis(附源码)
点击上方 视学算法,选择 设为星标 优质文章,及时送达 作者 | 凯京技术团队 来自 | my.oschina.net/keking/blog/3037372 今天主要介绍两个开源项目,然后创建应用最 ...
- 2012年中国移动地图和导航市场研究报告简版
2019独角兽企业重金招聘Python工程师标准>>> 2012年中国移动地图和导航市场研究报告简版 2012年中国移动地图和导航市场用户规模为2.53亿人,增长率为62.2%.伴随 ...
- 10分钟手撸极简版ORM框架!
最近很多小伙伴对ORM框架的实现很感兴趣,不少读者在冰河的微信上问:冰河,你知道ORM框架是如何实现的吗?比如像MyBatis和Hibernte这种ORM框架,它们是如何实现的呢? 为了能够让小伙伴们 ...
- 《数字孪生体技术白皮书(2019)》(简版)全文
来源:<数字孪生体实验室原创> 12月27日,数字孪生体实验室与安世亚太联合正式发布了<数字孪生体技术白皮书(2019)>. 白皮书的第一部分关注对数字孪生体的抽象和总结.无论 ...
- Dockerfile 简版大全,附赠编写实例
基础镜像可以用于创建Docker容器.镜像可以非常基础,仅仅包含操作系统:也可以非常丰富,包含灵巧的应用栈,随时可以发布.当你在使用Docker构建镜像的时候,每一个命令都会在前一个命令的基础上形成一 ...
- react-redux简版实现
Provider组件 Provider用于建立能够被子组件访问的全局属性,核心API有两个: childContextTypes静态属性,用于指定被子组件访问的全局属性类型 getChildConte ...
最新文章
- oracle跑with语句很慢,oracle 11g新特性---WITH语句增强
- 【Java】使用单向链表实现一个队列(Queue)
- Nature子刊封面:澳大真菌研究新突破 有助降低免疫力弱人群受真菌感染的风险...
- 个人支付宝账号也可以做付款后自动发货发卡系统,附:源码+demo
- Hadoop学习总结
- RemoteApp连接时所需要的证书
- xcode8 崩溃问题
- BZOJ1841 : 蚂蚁搬家
- 礼品盒子插画素材丨节日设计加上它之后价值翻倍!
- 开发人员必备的 Chrome 扩展
- Python 学习 DAY1
- 【前端】JavaScript详细教程(二)
- Excel汇总大师破解版 v1.6.8 免安装绿色版 Excel合并拆分
- 多linux系统u盘制作,高手教你如何做一个U盘Linux系统
- DXVA视频硬件加速
- 华为手机鸿蒙系统手机_华为推出鸿蒙系统2.0 明年华为手机将适配支持
- 帝国cms 制作网站地图
- Jetpack Compose SideEffect:副作用及相关API
- PS滤镜给城市夜空照片添加满天星
- GAMES101 作业0 环境配置 超详细小白教程