java web图书商城系统的需求分析及详细设计

图书商城
1. 功能分析

1、用户注册

2、用户登录

3、添加商品(CURD)

4、商品查看– 列表查询

5、商品详情页面

6、将商品添加购物车

7、查看购物车

8、修改购物车

9、生成订单

10、订单查看(取消)

11、在线支付

12.下载销售榜单

游客(未登录): 注册、登陆、商品查看

商城注册用户 : 商品查看、添加商品到购物车、购物车管理、生成订单、订单管理、在线支付

管理员 : 添加商品、商品管理、查看订单 、榜单查看(导出)

  1. 系统设计

1技术选型 (系统架构)

JSTL + JSP + Servlet + JavaBean + BeanUtils + FileUpload + JavaMail + DBUtils(JDBC) + C3P0 + MySQL + MyEclipse10+ Tomcat7.0 + JDK6 + Windows

MVC 模式

JavaEE 三层结构 web层 service层 dao层

DAO 模式

2数据库设计

系统存在以下实体:用户、商品、订单、购物车

购物车不放入数据库 (Session或者Cookie实现)

用户表

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

3 工程环境搭建和网站部署
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类编写

4) 工程发布

将bookEstore项目配置虚拟主机,以顶级域名方式进行发布

1) 将工程根目录 bookEstore目录 配置虚拟主机目录 —- 配置conf/server.xml

        unpackWARs="true" autoDeploy="true"

        xmlValidation="false" xmlNamespaceAware="false">

2) 将工程目录下WebRoot 目录,配置缺省web应用

      <Host name="www.estore.com"  appBase=" myeclipse下的工程路径"

        unpackWARs="true" autoDeploy="true"

        xmlValidation="false" xmlNamespaceAware="false">

3) 将www.estore.com 虚拟主机配置缺省虚拟主机 —– 能够用ip直接访问主机

4) 修改本机域名解析文件 hosts —- c:\windows\system32\drivers\etc

添加 127.0.0.1 www.bookEstore.com

  1. 功能实现
    1用户注册

1、 功能一: 用户注册 (技术点:验证码技术 、激活邮件技术)

1) 一次性验证码

原理:在生成验证码Servlet程序中,将生成验证码保存Session中,用户提交验证码 与 保存在Session验证码进行比较,如果相同,请求合法

2) 注册表单 JS校验

考虑JS校验是否可以抽取成框架

3) 处理form乱码问题 —- 通用get post 乱码过滤器

4) 密码 MD5 加密

5) 激活邮件发送

6) 配置通用错误处理页面web.xml

500

/500.jsp

404

/404.jsp

500.jsp 显示错误的信息

404.jsp 自动刷新跳转回主页面
2用户登录

原理:用户输入正确用户名和密码,登陆成功,用户信息将会被保存Session对象中。 —— 记住用户名和密码 、自动登陆

1) 登陆表单中,添加记住用户名 和 自动登陆功能

2) 登陆过程中判断 账户是否激活

3) 在login.jsp 显示记住用户名

在username 的input项中添加 value=”${cookie.username.value}”

在勾选自动登陆 checkbox 添加

4) 登陆后注销功能

注销Session
3用户自动登录过滤器

自动登陆功能 对系统所有页面有效 (例如访问index.jsp list_product.jsp info_product.jsp 这些页面在访问时都将执行自动登陆 )

  • 对于登陆相关页面不会执行自动登陆逻辑 (login.jsp 、LoginServlet 、InvalidateServlet )

1) 判断该请求页面是否需要自动登陆

2) 是否已经登陆

3) 是否含有自动登陆cookie

4) 自动登陆

5) 在LoginServlet 添加对于没有勾选记住用户名和自动登陆 处理代码 !!!!!!!

6) 在退出功能 InvalidateServlet 清除自动登陆信息

4商品添加

文件上传三个注意事项

1) input输入框 必须有name属性

2) 表单form 必须post提交方式

3) 设置form的enctype 为 multipart/form-data

表单提交时,校验分为两种 : 客户端校验 、服务器端校验 —— 只有服务器端校验才能确保数据准确

商品图片上传到服务器端后,保存在哪个目录 ??? 必须直接在WebRoot下及其除WEB-INF、META-INF 子目录外

一般情况下,一张表对应Domain类 — DAO类 —- Service类
5商品列表查看

列表中显示原图,因为原图比较大,页面加载非常缓慢 ,页面布局不会很美观 —————- 缩略图

  • Java中通过图形界面技术,生成小图

在Product类中添加 getImgurl_s方法,用来获取缩略图路径

6商品详细信息查看

通过在列表中点击 商品图片或者商品名称 进入详情查看页面
7添加商品到购物车

购物车对象,不保存在数据库中,使用Session来保存用户购物车数据

保存购物车对象 Map

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页