# 模板 **Repository Path**: codexiaobo/template ## Basic Information - **Project Name**: 模板 - **Description**: git模板 - **Primary Language**: Java - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-10-11 - **Last Updated**: 2021-10-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # java web小博商城 ## 敲代码的历程 ### 准备工作 1、导入静态资源、以及相应的jar包、以及C3P0数据库访问资源 2、设计相应的数据库 3、搭建web工程、MVC设计模式 4、设置Filter过滤器过滤项目编码格式 ![电商简单流程图](https://cdn.jsdelivr.net/gh/codexiaobo/image@main/java/电商简单流程图.6o17tbqi2ts0.png) ### 功能模块 | 序号 | 模块名称 | 主要功能 | | :--: | :----------: | :----------------------------------------------------------: | | 1 | 商品显示模块 | 分页显示所有商品、查看单个商品详细信息、搜索商品 | | 2 | 用户模块 | 新用户注册、用户登录、用户退出 | | 3 | 购物车模块 | 加入商品到购物车、修改购物车商品数量 | | 4 | 订单模块 | 提交订单并显示订单信息、用户确认后生成订单、用户查看历史订单 | | 5 | 支付模块 | 完成在线支付功能 | | 6 | 收货地址 | 管理收货地址 | | 7 | 后台模拟 | 主要实现商品的增删改查 | ### 用户模块 #### 注册功能 **因为我们使用传统的javaweb设计的系统、所以我们要解决多种不同的请求问题、所以我们写了一个父类的BaseServlet、在BaseController中我们通过反射技术拿到不同的访问请求、通过方法名与请求名一致来解决这个问题** #### 检查注册信息 **注册信息校验、我们要根据用户注册时输入的用户名来判断此用户是否注册过、我们在UserController中创建了一个check方法、先进行一次校验、校验用户是否输入内容、在此方法中调用UserServiceImpl中的checkUser业务逻辑方法、业务逻辑当中调用UserDaoImpl中的selectUserByName方法判断此用户输入的用户名是否已经存在、然而在UserDaoImpl中我们需要访问数据库、写好对应的SQL** #### 注册提交 **我们在UserController的reigister方法中获取到用户输入的信息存放大Map集合中、我们用BeanUtils.populate来和我们的User实体类来映射、然后设置用户激活状态、激活码、以及角色权限、注册密码存入数据库时我们采用MD5加密、用MD5Utils工具类来进行加密、然后调佣相关的Service和dao即可、当注册成功时放行、注册失败时提示、并重新注册** #### 激活功能 **接受到用户传入的激活码、因为之前我们已经用Base64来处理过激活码、所以我们需要将获取到的激活码反转一下、变回原来的、然后我们调佣相关逻辑、这里我们要用EmailUtils工具类来发送电子邮件、然后我们要来进行判断、我们要根据传进来的激活码来进行查找用户信息、然后进行激活、我们这样设置的、当为0时:表示激活失败、当为1:时:激活成功、当为2时:已经激活、然后将数据库中状态更新** #### 验证码功能 **创建生成验证码对象ValidateCode、直接getCode获取到验证码、然后存放到Sesion中返回即可** #### 登录功能 **首先获取到输入的内容以及验证码、然后依次判断、错误返回提示信息以及返回到当前页、正确放行、将信息存放到Session中跳转到相应页面** #### 自动登录功能 **当选择自动登录后将用户名和密码存放到本地浏览器Session中、然后用Filter过滤器来过滤、当再次登录时只需要检查本地浏览器是否存在改Cooke、如果存在Cooke将信息存放到Session中放行跳转到首页页面、不存在重新登录即可** ### 商品模块 #### 商品分页功能 **首先显示商品页面、我们在这里需要做一个分页显示、我们首先创建一个PageBean实体类、用来存放页码相关属性、currentPage当前页面、pageSize每页显示数量、totalCount总数据条数、totalPage总页码数、然后总页码数等于总数据条数除每页显示数量向上取整、然后设置每页显示数量、然后前端传来当前页码、然后SQL用关键字LIMIT标注、起始查询数据用(当前页码 - 1)*每页显示数量** #### 商品详情功能 **详情页面只需调用相关SQL即可** ### 购物车模块 **首先将购物车实体类中添加商品对象** #### 添加购物车功能 **首先要获取用户状态、是否登录、检验一下、然后获取前端输入、存放到数据库返回即可** #### 购物车显示功能 **首先要获取用户状态、是否登录、检验一下、然后根据用户Id查询即可** #### 删除购物车功能 **根据购物车Id删除即可** #### 更新购物车功能 **根据前端传进来的数据进行更新即可** #### 清空购物车功能 **根据用户Id删除这个用户购物车中的所有数据即可** ### 地址模块 #### 显示地址功能 **获取用户信息、根据用户Id查询即可** #### 添加地址功能 **根据传来信息插入到数据库即可** #### 删除地址功能 **根据地址Id删除即可** #### 默认地址功能 **根据地址Id进行更新即可、将选择的状态改为1、其余的改为0即可** #### 更新地址功能 **根据传来的信息更新即可** ### 订单模块 **首先在订单实体类中添加订单项和地址对象** #### 订单预览功能 **订单预览需要关联地址、其余功能正常访问数据库进行查看即可** #### 添加、显示订单、订单详情、更新订单功能 **时间用SimpleDateformat类转换一下即可、其余功能正常访问数据库进行操作即可** #### 支付宝支付功能 **使用支付宝沙箱环境模拟支付即可** ### 管理员模块 登录检验一下、然后依次正常访问数据库获取相关数据即可、主要就是有一个文件上传功能、这里用 ```java //创建插件实例化对象 DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory(); //创建插件实例化对象 ServletFileUpload fileUpload = new ServletFileUpload(diskFileItemFactory); ``` 处理然后依次获取相关数据即可、最后用输出流输出即可 ```java InputStream inputStream = fileItem.getInputStream(); OutputStream outputStream = new FileOutputStream(path); ```