Estore系统
Estore系统分析
Estore 购物商城项目 (综合练习)
目的:将之前学习知识点 整合,综合运用
系统需求分析
功能: 1、用户注册 2、用户登录
3、添加商品(CURD) 4、商品查看-- 列表查询 5、商品详情页面 6、将商品添加购物车 7、查看购物车 8、修改购物车 9、生成订单
10、订单查看(取消) 11、在线支付
12、销售榜单查看
需求分析 UML 用例图 游客(未登录): 注册、登陆、商品查看
商城注册用户 : 商品查看、添加商品到购物车、购物车管理、生成订单、订单管理、在线支付
管理员 : 添加商品、商品管理、查看订单 、榜单查看(导出)
系统设计
1、技术选型 (系统架构)
JSTL + JSP + Servlet + JavaBean + BeanUtils + FileUpload + JavaMail + DBUtils(JDBC) + C3P0 + MySQL + MyEclipse10+ Tomcat7.0 + JDK6 + Windows MVC 模式
JavaEE 三层结构 DAO 模式
2、数据库设计 E-R图
绘制E-R图 和 面向对象的需求分析 PowerDesigner (概念图E-R 、物理图表结构、面向对象图 ) 三种图相互转换
1) 抽象需求分析中名词 成为实体/类
2) 根据系统需求,分析实体/类 需要哪些属性 3) 建立实体之间关系
系统存在五个实体:用户、商品、订单、购物车、榜单 购物车不放入数据库 (Session或者Cookie实现) 榜单 (待定)
根据E-R图/对象关系建表
先创建实体对应表,再描述属性字段、最后描述关系 * E-R图展示实体属性 不一定包括所有表字段 用户表
create table users (
id int primary key auto_increment, username varchar(40), password varchar(100), nickname varchar(40), email varchar(100), role varchar(100) , state int ,
activecode varchar(100), updatetime timestamp ); 商品表
create table products(
id varchar(100) primary key , name varchar(40), price double,
category varchar(40), pnum int ,
imgurl varchar(100),
description varchar(255)); 订单表
create table orders(
id varchar(100) primary key, money double,
receiverinfo varchar(255), paystate int,
ordertime timestamp, user_id int ,
foreign key(user_id) references users(id) );
用户与订单之间存在 一对多关系 : 在多方添加一方主键作为外键
订单和商品之间存在 多对多关系 : 创建第三张关系表,引入两张表主键作为外键 (联合主键) 订单项
create table orderitem(
order_id varchar(100), product_id varchar(100), buynum int ,
primary key(order_id,product_id),
foreign key(order_id) references orders(id), foreign key(product_id) references products(id) );
设置数据库环境
数据库 :create database estoresystem;
工程环境搭建和网站部署
1) 导入jar包
导入mysql驱动 mysql driver / mysql-connector-java-5.0.8-bin.jar
导入c3p0 c3p0/c3p0-0.9.1.2.jar 将c3p0-config.xml 复制src下 将DataSourceUtils复制 cn.itcast.estore.utils ----- 配置c3p0-config.xml数据库连接参数 导入dbutils apache commons\\dbutils\\commons-dbutils-1.4.jar
导入beanutils commons-beanutils-1.8.3.jar commons-logging-1.1.1.jar 导入fileupload commons-fileupload-1.2.1.jar commons-io-1.4.jar 导入javamail mail.jar
导入jstl jstl.jar standard.jar
2) 建立package结构 按照JavaEE 三层结构 cn.itcast.estore.web.servlet cn.itcast.estore.web.filter cn.itcast.estore.web.listener cn.itcast.estore.service cn.itcast.estore.dao cn.itcast.estore.domain cn.itcast.estore.utils
3) domain类编写 UML中类图画法
4) 工程发布
将estore项目配置虚拟主机,以顶级域名方式进行发布
1) 将工程根目录 estore目录 配置虚拟主机目录 ---- 配置conf/server.xml unpackWARs=\ xmlValidation=\
2) 将工程目录下WebRoot 目录,配置缺省web应用
xmlValidation=\ 3) 将www.estore.com 虚拟主机配置缺省虚拟主机 ----- 能够用ip直接访问主机 4) 修改本机域名解析文件 hosts ---- c:\\windows\\system32\\drivers\\etc 添加 127.0.0.1 www.estore.com 用户注册 1、 功能一: 用户注册 (技术点:验证码技术 、激活邮件技术) 1) 一次性验证码 原理:在生成验证码Servlet程序中,将生成验证码保存Session中,用户提交验证码 与 保存在Session验证码进行比较,如果相同,请求合法 2) 注册表单 JS校验 考虑JS校验是否可以抽取成框架 3) 处理form乱码问题 ---- 通用get post 乱码过滤器 4) 密码 MD5 加密 5) 激活邮件发送 启动易邮 域名 estore.com 建立几个账号 service/111 aaa/111 bbb/111 ccc/111 ddd/111 账号激活 ,判断激活码存在,并且有效 ------- update 修改激活state 字段 6) 配置通用错误处理页面 day8 配置web.xml 500.jsp 显示错误的msg 404.jsp 自动刷新跳转回主页面 用户登录 原理:用户输入正确用户名和密码,登陆成功,用户信息将会被保存Session对象中。 ------ 记住用户名和密码 、自动登陆 权限控制围绕登陆功能 1) 登陆表单中,添加记住用户名 和 自动登陆功能 2) 登陆过程中判断 账户是否激活 3) 在login.jsp 显示记住用户名 在username 的input项中添加 value=\ 在勾选自动登陆 checkbox 添加 c:if 判断 4) 登陆后注销功能 注销Session 用户自动登录过滤器 自动登陆功能 对系统所有页面有效 (例如访问index.jsp list_product.jsp info_product.jsp 这些页面在访问时都将执行自动登陆 ) * 对于登陆相关页面不会执行自动登陆逻辑 (login.jsp 、LoginServlet 、InvalidateServlet ) 1) 判断该请求页面是否需要自动登陆 2) 是否已经登陆 3) 是否含有自动登陆cookie 4) 自动登陆 5) 在LoginServlet 添加对于没有勾选记住用户名和自动登陆 处理代码 !!!!!!! 6) 在退出功能 InvalidateServlet 清除自动登陆信息 商品添加 文件上传三个注意事项 1) input输入框 必须有name属性 2) 表单form 必须post提交方式 3) 设置form的enctype 为 multipart/form-data