Javaweb学习笔记——(二十四)——————图书商城项目
图书商城
环境搭建
1.导入原型
*用户模块
*分类模块
*图书模块
*购物车模块
*订单模块
2.功能分析
*前台
**用户模块
>注册
>激活
>登录
>退出
**分类模块
>查看所有分类
**图书模块
>查询所有图书
>按分类查询图书
>查询图书详细(按id查询)
**购物车模块
>添加购物车条目
>清空所有条目
>删除指定条目
>我的购物车(按用户查询购物车)
**订单模块
>生成订单
>我的订单(按用户查询订单)
>按id查询订单
>确认收货
>付款功能(只能跳转到银行页面)
>付款回调功能(由银行来调用我们这个方法,表示用户已经付款成功)
*后台:
**管理员
>登录
**分类管理
>添加分类
>查看所有分类
>删除分类
>按id查询
>修改分类
**图书管理
>查询所有图书
>按id查询
>删除图书
>修改图书
>添加图书(上传图片)
**订单模块
>查询所有订单
>按状态查询订单
>发货
3.框架的搭建
3.1导包
*数据库
**mysql驱动
**c3p0(jar包和配置文件)
**dbutils
**itcast-tools
>commons-beanutils
>commons-logging
*javamail
**mail.jar
**activation.jar
*上传
**commons-fileupload
**commons-io
*ajax
json-lib
3.2创建pachage
*根:com.changemax.bookstore
**user
>domain
>dao
>service
>web.servlet
**category
>domain
>dao
>service
>web.servlet
**book
>domain
>dao
>service
>web.servlet
**cart
>domain
>web.servlet
**order
>domain
>dao
>service
>web.servlet
3.3表
*tb_user
*category
*book
*orders
*orderitem
用户模块
1.用户模块的相关类创建
*domain:User
*dao:UserDao
*service:UserDao
*web.servlet:UserServlet
2.用户注册
流程:/jsps/user/regist.jsp ->UserServlet#regist() ->msg.jsp
页面:
*regist.jsp
**表面页面,请求UserServlet#regist()方法
**参数:整个表单数据
*msg.jsp
Servlet:
*UserServlet#regist()
**一键封装表单数据到User form对象
**补全:uid、激活码
**输入校验
>保存错误信息到request
>保存当前表单数据(form)到request(回显);
>转发回到regist.jsp
**调用service的regist()方法,传递form过去
>如果跑出异常:保存错误信息(异常信息)、保存表单数据(回显)、转发到regist.jsp
>如果没有抛出异常:
***发邮件(发件人、收件人、标题、内容),内容中包含超链接,超链接指向可完成激活的Servlet地址。链接中要有激活码参数
***保存成功信息到request中。
***转发到msg.jsp
Service:
*UserService#regist(User form)
**校验用户是否被注册,如果注册,抛出UserException
**校验邮箱是否被注册,如果注册,抛出UserExcetpion;
**把user插入到数据库中
Dao:
*User findByUsername(String username):按用户名查询用户
*User findByEmail(String email):按email查询用户
*void add(User form):插入用户到数据库中
3.用户激活
流程:用户的邮件中->UserServlet#active()->msg.jsp
4.用户登录
流程:/jsps/user/login.jsp -> UserServlet#login() -> index.jsp
5.用户退出
流程:top.jsp -> UserServlet#quit() -> login.jsp
quit():把session销毁
分类模块
1.分类模块的相关类创建
*com.changemax.bookstore.category
**domain:Category
**dao:CategoryDao
**service:CategoryService
**web.servlet:CategoryServlet
2.查询所有分类
流程:main.jsp(<iframe>) -> CategoryService#findAll() -> left.jsp
图书模块
1.创建相关类
*com.changemax.bookstore.book
**domain:Book
**dao:BookDao
**service:BookService
**web.servlet:BookServlet
2.查询所有图书
流程:left.jsp(全部分类) -> BookServlet#findAll() -> /jsps/book/list.jsp
3.按分类查询图书
流程:left.jsp -> BookServlet#findByCategory() -> list.jsp
4.查询详细信息(加载)
流程:list.jsp(点击某一本书) -> BookServlet#load() -> desc.jsp
Javaweb学习笔记——(二十四)——————图书商城项目的更多相关文章
- python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法
python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法window安装redis,下载Redis的压缩包https://git ...
- (C/C++学习笔记) 二十四. 知识补充
二十四. 知识补充 ● 子类调用父类构造函数 ※ 为什么子类要调用父类的构造函数? 因为子类继承父类,会继承到父类中的数据,所以子类在进行对象初始化时,先调用父类的构造函数,这就是子类的实例化过程. ...
- javaweb学习总结(二十四)——jsp传统标签开发
一.标签技术的API 1.1.标签技术的API类继承关系 二.标签API简单介绍 2.1.JspTag接口 JspTag接口是所有自定义标签的父接口,它是JSP2.0中新定义的一个标记接口,没有任何属 ...
- javaweb学习总结二十四(servlet经常用到的对象)
一:ServletConfig对象 1:用来封装数据初始化参数,在服务器web.xml配置文件中可以使用<init-param>标签配置初始化参数. 2:实例演示 web.xml文件中配置 ...
- Java基础学习笔记二十四 MySQL安装图解
.MYSQL的安装 1.打开下载的mysql安装文件mysql-5.5.27-win32.zip,双击解压缩,运行“setup.exe”. 2.选择安装类型,有“Typical(默认)”.“Compl ...
- Java学习笔记二十四:Java中的Object类
Java中的Object类 一:什么是Object类: Object类是所有类的父类,相当于所有类的老祖宗,如果一个类没有使用extends关键字明确标识继承另外一个类,那么这个类默认继承Object ...
- JavaWeb学习笔记(十四)—— 使用JDBC处理MySQL大数据
一.什么是大数据 所谓大数据,就是大的字节数据,或大的字符数据.大数据也称之为LOB(Large Objects),LOB又分为:clob和blob,clob用于存储大文本,blob用于存储二进制数据 ...
- JavaWeb学习记录(十四)——商城购物之字符串拼接实现最近浏览商品和购物车的功能
一.字符串拼接的工具类 package blank.util; import java.util.Iterator;import java.util.Map;import java.util.Set; ...
- PHP学习笔记二十四【Get Set】
<?php Class Person{ private $n1; private $n2; private $n3; //使用__set方法来管理所有的属性 public function __ ...
- Javaweb学习笔记——(十四)—————— 服务器端验证注册登入表单项目
项目:https://download.csdn.net/download/qq_40223688/10463436 项目 功能: *注册 *登录--------------------------- ...
随机推荐
- 自定义JDBC链接池
上篇简单介绍了jdbc链接数据库: 本篇就说一下自定义连接池以及增删改查的测试: 自定义连接池 自定义链接池的原因 JDBC连接中用到Connection 在每次对数据进行增删查改 都要 开启 ...
- RabbitMQ消费者消息权重,
有的消费者处理速度快,有的消费者处理速度慢,我们想给处理快的多发消息,处理慢的少发消息, 怎么办呢?按照之前的轮询模式,肯定不行的,这里可以检测消息数量,如果消费者正在处理就不给他发 .... def ...
- KERBEROS PROTOCOL TUTORIAL
KERBEROS PROTOCOL TUTORIAL This tutorial was written by Fulvio Ricciardi and is reprinted here wit ...
- go笔记-熔断器
参考: https://studygolang.com/articles/13254 区别:(限速器 VS 熔断器) 限速器(limiter)可以限制接口自身被调的频率 熔断器可监控所调用的服务的失败 ...
- 【原创】IDEA一定要改的八条配置
引言 坦白说,我很少写这种操作类型的文章.因为这种文章没啥新意,大家操作步骤肯定是一样的.然而,我答应了我的同事小阳,给她出一篇!毕竟人家打算从Eclipse转IDEA了,于是以示鼓励,写一篇给她! ...
- building 'twisted.test.raiser' extension error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools
Error msg: building 'twisted.test.raiser' extension error: Microsoft Visual C++ 14.0 is required. Ge ...
- PS快速秒抠图技巧
1,首先,打开图片,复制一层为图层1,养成原图保存好,在新图层上操作的习惯 2,点击菜单栏“选择”选择 - “色彩范围”命令,面板如下图所示: 3, 选择左边第一个吸管工具吸取人物模特后面的背景颜色, ...
- 如何在网中使用百度地图API自定义个性化地图
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- python配置文件的加载
背景: 微信机器人项目用到了mysql数据库配置,阿里云OSS上传文件配置:现在需要将这些配置参数统一写到一个配置文件中统一管理,而不是分散的写在代码中 1. 使用.ini文件作为配置文件 例如: s ...
- Python学习之路——函数的参数分类
今日内容 '''实参:调用函数,在括号内传入的实际值,值可以为常量.变量.表达式或三者的组合*****形参:定义函数,在括号内声明的变量名,用来接受外界传来的值''''''注:形参随着函数的调用 ...