JavaWeb项目_仿小米商场
1.案例解说
商场常见模块
●后台常见功能模块 。商品管理:包括后台商品库存管理、上货、出货、编辑管理和商品分类管理、商品品牌管理等。 。订单管理:在线订单程序,使消费者能够顺利的通过WEB在线的方式, 直接生成购买订单。 。商品促销: -般的购物系统多有商品促销功能,通过商品促销功能,能够迅速的促进商城的消费积极性。 。支付方式:即通过网上钱包、电子支付卡。进行网上资金流转换的业务流程;国内主流支付方式包括:支付宝、财富通、网 银在线等。还有部分网上商城支持货到付款,如京东商城、第九大道、鹏程万里贸易商城。 。配送方式:购物系统集成的物流配送方式,从而方便消费者对物流方式进行在线选择。如: EMS、顺丰等等。 ”会员模块:在购物系统中,集成会员注册是吸引会员进行二次购买和提升转换率的方式。 ●前端界面功能模块 。模板风格自定义:即通过系统内置的模板引擎,可以方便的通过后台可视化编辑,设计出符合自身需求的风格界面。 。商品多图展示:随着电子商务的发展商品图片成为吸引消费者的第一要素,多图展示即提供前台多张图片的展示,从而提升 消费者的购物欲望。 自定义广告模块:内置在系统中的广告模块,网站管理员能够顺利的通过操作就可以在前端界面中添加各种广告图片。 。商品展示:通过前端界面,以标准的或者其他个性化的方式向用户展示商品各类信息,完成购物系统内信息流的传递。 。购物车:用户可对想要购买的商品进行网上订购,在购物过程中,随时增删商品。
2小米商场开发介绍
开发环境
分类 | 名称 | 语种 |
---|---|---|
操作系统 | 开发在Window10 ,上线在linux centos7.0+ | 简体中文 |
数据库平台 | Mysql5.7+ | - |
应用服务器 | Tomcat8+ | - |
java开发工具 | Idea2020+ | - |
框架 | javaEE5+ | - |
项目名称 | 小米商场 Mi_Shop | - |
主要功能模块
序号 模块名称 主要功能 1 商品显示模块 分页显示所有商品查看单个商品详细信息搜索商品 2 用户模块 新用户注册用户登录用户退出 3 购物车模块 加入商品到购物车修改所购商品数量 4 订单模块 提交订单并显示订单信息用户确认后生成正式订单用户查看历史订单 5 支付模块 完成在线支付功能 6 收货地址 管理收货地址 7 后台模块 主要实现商品的增删改查
项目大致流程
3数据库表设计说明:
需要根据实际的业务场景设计对应的数据表, 要尽量考虑到实际场景到需要用到的数据,并把这些数据给抽象出来,选好对应的数据类型,设计好数据表与数据表之间的联系,比如用户购买商品这一场景,最起码就需要用的三个数据表:用户表,商品表,订单表 然后这三个表中的字段也要设计好,如用户表需要有用户的信息(用户id,名称,年龄,性别等等...) 商品表要有商品信息等等
下面是简单的数据表设计
用户模块设计的表
用户模块:主要涉及用户登录和注册功能以及地址选择功能
所以,用户模块设计两张用户表和地址表
用户表 (tb_user)
存储用户信息标红会员和管理员
字段 类型 主键 约束 备注 id int(11) 是 自增 主键 username varchar(20) not null 用户名称 password varchar(32) not null 用户密码,使用md5加密 varchar(50) not null 邮箱 gender varchar(50) 性别 flag int(11) 状态标记:0 未激活 1 激活 2 无效 role int(11) 角色:0 管理员 1 用户 code varchar(100) 激活码
建表语句如下
CREATE TABLE `tb_user` (`id` int(11) NOT NULL AUTO_INCREMENT,`username` varchar(20) NOT NULL,`password` varchar(32) NOT NULL,`email` varchar(50) NOT NULL,`gender` varchar(50) NOT NULL,`flag` int(11) DEFAULT NULL,`role` int(11) DEFAULT NULL,`code` varchar(100) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
编写对应的javabean类,类的成员变量要一一对应数据库中表中的字段,数据类型也要对应响应的数据类型,还需提供属性对应的get和set方法 最好手动声明一个无参的构造函数
以下为jUser表对应的javabean模型的属性值
业务分析
1,注册后的用户必须激活才能登录
2,注册后生成一个激活码链接给用户进行激活操作
收货地址表(tb_address)
存储用户的收货地址的数据表
字段 | 类型 | 主键 | 约束 | 备注 |
---|---|---|---|---|
id | int | 是 | 增长 | 主键 |
detail | varchar(200) | not null | 详细地址 | |
name | varchar(20) | not nul | 收件人姓名 | |
phone | varchar(20) | not null | 手机号 | |
uid | int | 外键 | 外键为用户表id | |
level | int | 地址顺序1,为最高 ,依次类推 |
address表的建表语句
CREATE TABLE `tb_address` (`id` int(11) NOT NULL AUTO_INCREMENT,`detail` varchar(200) DEFAULT NULL,`name` varchar(20) DEFAULT NULL,`phone` varchar(20) DEFAULT NULL,`uid` int(11) NOT NULL,`level` int(11) DEFAULT NULL,PRIMARY KEY (`id`),KEY `fk_address_id` (`uid`),CONSTRAINT `fk_address_id` FOREIGN KEY (`uid`) REFERENCES `tb_user` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
address的javabean模型
1,一个用户可以有多个收件地址,详细地址不能相同,
2,地址排序,通过level的数值排序,而且用户可以设置这个数值, 根据地址的优先级设置提交订单的默认地址
商品模块设计表()
商品模块可以对商品的类别进行管理,对商品信息进行管理,
商品类别表(tb_goods_type)
用于管理商品类别
字段 类型 主键 约束 备注 id int 是 自增 主键 name varchar(50) not null 商品名称 level int not null 类型的级别123 Parent int not null 上级的序号,没有则为0
sql语句
CREATE TABLE `tb_goods_type` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(50) NOT NULL,`level` int(11) DEFAULT NULL,`Parent` int(11) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
javabea
商品表(tb_goods)
用户管理商品详细信息
业务分析:商品的上架 暂时没有下架功能,商品数量[库存]没有
2,评分业务,通过评分进行排序 通过商品名称进行搜索.........
字段 | 类型 | 主键 | 约束 | 备注 |
---|---|---|---|---|
id | int | 是 | 自增 | 序号 |
name | varchar(100) | not null | 名称 | |
pubdate | date | 上架时间 | ||
picture | varchar(255) | not null | 商品图片 | |
price | decimal(8,2) | 价格 | ||
star | tinyint(4) | 评分 | ||
intro | text | 商品详情 | ||
typeid | int | 外键 | 商品类型 | |
Gnum | int | 默认100件 | 商品数量 | |
Gstate | int | 默认0 | 商品状态 0 上架 -1 下架 |
sql语句
CREATE TABLE `tb_goods` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(100) NOT NULL,`pubdate` date DEFAULT NULL,`picture` varchar(255) NOT NULL,`price` decimal(8,2) NOT NULL,`star` tinyint(4) NOT NULL DEFAULT '0',`intro` text,`typeid` int(11) NOT NULL,`gunm` int(11) DEFAULT '100',`Gstate` int(11) DEFAULT '0',PRIMARY KEY (`id`),KEY `fk_typeid` (`typeid`),CONSTRAINT `fk_typeid` FOREIGN KEY (`typeid`) REFERENCES `tb_goods_type` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
javabean模型
购物车表(tb_cart)
购物车的表 用于建立用户和商品之间的联系
字段 | 类型 | 主键 | 约束 | 备注 |
---|---|---|---|---|
id | int | 是 | 外键 | 用户id |
pid | int | 是 | 外键 | 商品序号 |
Num | int | 数量,用户购买商品时要减去响应数量的商品 | ||
money | int | 订单金额 |
CREATE TABLE `tb_cart` (`id` int(11) NOT NULL,`pid` int(11) NOT NULL DEFAULT '0',`Num` int(11) DEFAULT NULL,`money` int(11) DEFAULT NULL,PRIMARY KEY (`id`,`pid`),KEY `fk_cart_pid` (`pid`),CONSTRAINT `fk_cart_id` FOREIGN KEY (`id`) REFERENCES `tb_user` (`id`),CONSTRAINT `fk_cart_pid` FOREIGN KEY (`pid`) REFERENCES `tb_goods` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
订单模块表
订单表
订单表(tb_order)
字段 | 类型 | 主键 | 约束 | 备注 |
---|---|---|---|---|
id | varchar(100) | 是 | 主键 | |
uid | int | 外键 | 用户id | |
moneyl | decima(8,2) | 订单总金额 | ||
status | int | 订单状态, 0 未支付,1支付失败,2支付成功,3发货,4到货,5评价 | ||
time | datetime | 订单时间 | ||
aid | int | 外键 | 收货地址id |
sql语句
CREATE TABLE `tb_order` (`id` varchar(100) NOT NULL,`uid` int(11) DEFAULT NULL,`money` decimal(8,2) DEFAULT NULL,`status` varchar(10) DEFAULT NULL,`time` datetime DEFAULT NULL,`aid` int(11) DEFAULT NULL,PRIMARY KEY (`id`),KEY `fk_order_uid` (`uid`),KEY `fk_order_aid` (`aid`),CONSTRAINT `fk_order_aid` FOREIGN KEY (`aid`) REFERENCES `tb_address` (`id`),CONSTRAINT `fk_order_uid` FOREIGN KEY (`uid`) REFERENCES `tb_user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
javabean模型
订单详情表(tb_orderdetail)
字段 | 类型 | 主键 | 约束 | 备注 |
---|---|---|---|---|
id | int | 是 | 自增 | 主键 |
pid | int | 外键 | 商品id | |
oid | varhcar(100) | 外键 | 订单id | |
num | int | 数量 | ||
money | double(8,1) | 金额 |
sql语句
CREATE TABLE `tb_orderdetail` (`id` int(11) NOT NULL AUTO_INCREMENT,`Oid` varchar(100) DEFAULT NULL,`pid` int(11) DEFAULT NULL,`num` int(11) DEFAULT NULL,`Money` decimal(8,2) DEFAULT NULL,PRIMARY KEY (`id`),KEY `fk_order_pid` (`pid`),KEY `fk_order_id` (`Oid`),CONSTRAINT `fk_order_id` FOREIGN KEY (`Oid`) REFERENCES `tb_order` (`id`),CONSTRAINT `fk_order_pid` FOREIGN KEY (`pid`) REFERENCES `tb_goods` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
对应javabean模型
4web项目搭建
项目在开发过程中采用经典的三层架构(Web - Service - Dao),且前后端分离。因此,一些实时的前端渲染不再使用 JSP 实现,而通过 AJAX 实现。各层技术选型归纳如下:
4.1 Web 层 Servlet:前端控制程序 HTML:前端页面(前后端分离架构,不适用JSP) Filter:过滤器 BeanUtils:数据封装 firstJson:json 序列化工具,前后端数据通用传输格式
4.2 Service 层 JavaMail:Java 邮件工具
4.3 Dao 层 mysql:关系数据库 druid:数据库连接池 DBUtil:数据库的简易工具框架
新建一个javaWeb类型的maven项目
并把需要的驱动包通过maven配置 maven的pom.xml文件详细配置如下
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.mishop_lw</groupId><artifactId>Mi_Shop</artifactId><version>1.0</version><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.38</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.10</version></dependency><dependency><groupId>commons-dbutils</groupId><artifactId>commons-dbutils</artifactId><version>1.6</version></dependency><dependency><groupId>commons-beanutils</groupId><artifactId>commons-beanutils</artifactId><version>1.8.3</version></dependency><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.2</version></dependency><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.1.1</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.75</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4.7</version></dependency><dependency><groupId>com.github.whvcse</groupId><artifactId>easy-captcha</artifactId><version>1.6.2</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version></dependency></dependencies><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties></project>
5.代码文件结构
5.1 domain模块结构
5.2 dao模块结构
5.3 service模块结构
5.4 web模块结构
BaseServlet类代码如下
/*** 继承的servlet类,用来给其他控制器继承的*/
public class BaseServlet extends HttpServlet {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String methoStr = req.getParameter(Constants.TAG);System.out.println(methoStr);if (methoStr == null && methoStr.equals("")) {methoStr = Constants.INDEX;}//使用反射调用相应的业务逻辑方法Class clazz = this.getClass();try {//通过反射获取到service方法对象Method method = clazz.getMethod(methoStr, HttpServletResponse.class,HttpServletResponse.class);//执行获取到的方法对象并把结果赋值给resultObject result = method.invoke(this, req, resp);System.out.println(result);//集中处理返回值响应if (result != null) {String str = (String) result;if (str.startsWith(Constants.FORWARD)) {//转发String path = str.substring(str.indexOf(Constants.FLAG) + 1);req.getRequestDispatcher(path).forward(req, resp);} else if (str.startsWith(Constants.REDIRECT)) {//重定向String path = str.substring(str.indexOf(Constants.INDEX) + 1);resp.sendRedirect(path);} else {//当请求头中不包含以上两种时 之间输出请求头信息resp.getWriter().print(str);}}} catch (Exception e) {e.printStackTrace();req.getSession().setAttribute("MSG","程序异常,请稍后重试");resp.sendRedirect("/error.jsp");}}public String index(HttpServletResponse req,HttpServletResponse resp)throws IOException,ServletException{return Constants.FORWARD+"/index.jsp";}}
JavaWeb项目_仿小米商场相关推荐
- Java仿小米计算器源码_仿小米计算器
[实例简介] 一款仿小米简约的计算器.支持大部分操作,超过10位没有处理,需要的朋友可以改善一下. [实例截图] [核心代码] Calculator └── Calculator ├── Androi ...
- java web工程搭建_手把手搭建javaweb项目_手把手javaweb
对于传统的 Java Web项目,我们一般还需要指定配置 web.xml位置.如上图 Gif演示,这个一般在 Facts 中进行配置.Facts 可以理解为用于配置项目的框架区,在这里管理项目使 CS ...
- 电商项目:仿小米官网纯HTML+css布局
前言 时间过得很快,已经步入大三下学期了,浪了大学这几年,这几个星期从新把之前学的html+css系统性复习了一遍,虽然之前也学习过,但Monto觉得无论任何事情,基础是最重要的,任何框架千变万变,但 ...
- JavaWeb-仿小米商场(3)登录与退出
JavaWeb-仿小米商场(3):登录与退出 1 业务描述 接上篇仿小米商场(2):用户注册,本篇博客将分析和实现用户登录与退出.登录是后台获取当前访客身份的方式,也是提供个性化服务的基础. 执行登录 ...
- 《微信小程序案例5》仿小米Lite小程序分类板块-两个纵向滚动区域独立互不影响
一.小米Lite分类板块图 二.技术分解 1.布局是分为左右两个纵向滚动区域,使用 <scroll-view> 2.每个小菜单的如图片 标题等内容使用js里面的data来保存 3.如此 ...
- Java项目:仿小米电子产品售卖商城系统(java+SpringBoot+Vue+MySQL+Redis+ElementUI)
源码获取:博客首页 "资源" 里下载! 项目描述:这是一个基于SpringBoot+Vue框架开发的仿小米电子产品售卖商城系统.首先,这是一个前后端分离的项目,代码简洁规范,注释说 ...
- javaweb开发的仿推特项目之登录注册功能
博主最近学习一个仿推特javaweb项目,其采用Jsp+Servlet的方式进行设计,MySQL数据库,Tomcat8服务,界面上十分美观,功能也较为健全,给大家分享一下: 项目地址 登录界面: 核心 ...
- android 仿旅游日历控件_可能是第十好的Android 开源 日历 Calendar 仿小米
简介 由于项目的需求,研究了众多日历软件.本软件是一款高仿小米的自定义日历>控件,周月视图平滑滚动,平滑切换,可以在xml文件中进行属性的配置定制,加入你自己的RecyclerView后,实现日 ...
- java web的运行方式_在运行 Javaweb项目时报错,不知道什么原因,百度了好多方法跟着人家的方法做了还是报错...
在运行 Javaweb项目时报错,不知道什么原因,百度了好多方法跟着人家的方法做了还是报错 报错信息如下 org.apache.catalina.core.StandardContext loadOn ...
最新文章
- U3D的Collider
- Cell:康奈尔大学郭春君组开发针对非模式肠道细菌的基因编辑工具
- hbase报错:org.apache.hadoop.hbase.PleaseHoldException: Master is initializing
- 【BZOJ4771】七彩树 主席树+树链的并
- C#实现RSA加密和解密详解
- Bailian3729 用set实现字符串的排序和查找【文本处理】
- PS使用:windows解决Adobe Photoshop 2020(PS2020)闪退
- Objective-c nil, Nil, NULL和NSNull的区别
- 【Zotero同步管理】【Zotero 6.0 + 坚果云 + iPad官方zotero APP】最新版教程
- EBT 道客巴巴的加密与破解 - 实用组合工具箱
- 氨基化氧化石墨烯PEG修饰/氨基化氧化石墨烯PEI修饰/Nanoinnova还原石墨烯(各种解说)
- Direcshow之视频捕捉
- Windows Installer服务总是自动关闭导致无法安装在win10上安装英伟达显卡驱动的解决方案...
- BI选型之国内外BI产品对比分析
- GRE 词汇2(词根)
- 网购平台用户行为分析
- Linux基础-2、基本命令
- 开发常用的Git命令
- mysqld_multi 没法stop
- 微信启动界面:张小龙的情怀和马化腾的爱好
热门文章
- Python 给视频添加背景音乐 | Python工具
- 【工作项目总结】交易系统
- Android Studio执行出现“应用程序安装异常(-15)
- 单片机led灯闪烁实验总结_单片机很好玩3,花三分钟,使用普通LED小灯,制作手机“呼吸灯”...
- 申请二类医疗器械备案,对经营场地及人员有什么要求
- 一文读懂Istio服务网格
- 纳米镜系列文章|闲鱼如何快速仿真运营活动效果?
- python输入10个数输出最大值流程图_用传统流程图表示该算法:依次将10个数输入,要求将其中最大的数输出...
- 修改12306自动刷新时间
- 【NLP】词袋模型(bag of words model)和词嵌入模型(word embedding model)