# shop **Repository Path**: meyolo/shop ## Basic Information - **Project Name**: shop - **Description**: 一个简单的shop。 - **Primary Language**: Java - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2021-03-20 - **Last Updated**: 2024-06-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # JAVAEE 商城项目实现 ## 第一阶段: ### 1、项目基本架构设计 ### 1.1 开发配置 - 使用技术:java+mysql+jsp - 开发工具:IDEA - 环境配置:JDK1.8+maven3.6.3+tomcat7 ### 1.2 基本架构 **package** > dao:数据库操作 > > - CarDao:购物车接口 > - CarDaoImpl:购物车接口实现 > - GoodsDao:商品接口 > - GoodsDaoImpl:商品接口实现 > - UserDao:用户接口 > - UserDaoImpl:用户接口实现 > filter:设置一些过滤器 > > - CharacterFilter:字符编码过滤 > pojo:实体类 > > - Car:购物车类 > - CarInfo:订单信息 > - Goods:商品类 > - User:用户类 > servlet: > > - BasicServlet:基本功能(注册登录) > - DetailsServlet:商品详情的显示 > - QueryServlet:主页商品展示(查询所有商品) > utils: > > - DBUtil:数据库操作辅助类 > - MD5utils:MD5加密类 webapp: - index.jsp:主页的展示 - register.jsp:用户注册页面 - login.jsp:登录页面 - detail.jsp:商品详情页面 pom.xml 所需依赖包: - servlet依赖 - 数据库连接依赖 - commons-beanutils依赖 - druid数据库连接池依赖 - jsp依赖 - jstl依赖 - lombok依赖 - junit单元测试依赖 ### 2、数据库设计 > 用户: - user_id ----主键 - user_name ----账号 - user_password ------密码 - name ---- 姓名 - age -----年龄 - account ------账户 > 商品: - goods_id -- 商品主键 - goods_name -----商品名称 - goods_price ----商品价格 > 购物车: - cart_id --购物车主键 - cart_number -- 购物车订单号 - user_id --用户姓名 - goods_id ---商品名称 (数组) ## 第二阶段: ### 1.dao层编写具体的方法 - CarDao接口 - 为购物车中添加货物 当购物车不存在该商品时 - ```java. int insertNewGoodsCar(int goods_num, int goods_id, int user_id); ``` - 为购物车中添加货物 当购物车存在该商品时 - ```java. int insertRepeatGoodsCar(int user_id, int goods_id, int goods_num); ``` - 用户名与购物车id 一致 通过用户id 获得购买的所有商品信息 - ```java. List queryCarInfo(int user_id); ``` - 判断是否为已加入购物车商品 - ```java. Car IsRepeatGoods(int goods_id,int user_id); ``` - 删除购物车中商品 - ```java. int deleteGoodsInCarByid(int user_id,int goods_id); ``` - 清空购物车 - ```java. int clearCar(int user_id); ``` - GoodsDao接口 - 查询所有货物 - ```java. List queryAllGoods(); ``` - 查询单个货物 - ```java. Goods queryGoodById(int goods_id); ``` - UserDao - 注册 - ```java. public int register(User user); ``` - 登录 - ```java. public User login(String user_name, String user_password); ``` ### 2.DaoImpl实现具体的方法 ### 3.filte层的编写 1. 新建一个CharacterFilter的过滤类对所用到的字符编码做了统一格式UTF-8。 2. 新建了一个PushCharacter的过滤类,主要作用是对用户在不同的状态下去点击加入购物车操作的过滤。 先通过Session中绑定的信息是否存在判断用户处于登录还是未登录状态。 - 如果用户是未登录状态,将会把用户所加入的商品暂时存储在session中,并引导用户去登录页面。 - 如果是登录状态,则直接持久化在数据库中,调用PushCar的Servlet进行处理。 ### 4.listener层的编写 1. 此处就新建一个SessionListener的类,实现HttpSessionListener接口,通过session的创建去new一个HashMap来存储用户在未登录情况下所点击加入购物车的商品信息。 ### 5.pojo层的编写 1. Car :设置相应属性,方法。 2. CarInfo :设置相应属性,方法。 3. Goods:设置相应属性,方法。 4. User:设置相应属性,方法。 ### 6.Servlet层的编写 1. BasicServlet:实现用户注册、登录、注销的操作。 - 注册:将前端传过来的数据进行转型,new一个用户对象,调用set方法实现用户的注册。 - 登录:将前端传过来的账号和密码与数据库进行匹配,实现用户的登录操作。 - 注销:移除用户存储在session中的信息,同时注销其session。 2. CarServlet:实现加入购物车、购物车的显示、清空购物车、对购物车中商品进行删除。 - 加入购物车:在进行pushcar操作前,前面的filter已经做过处理,这里直接获取前端传过来的商品信息,先进行判断是否此商品已加入购物车,如果已加入,则更新其数量,若是新商品,则直接加入购物车。 - 购物车显示:通过获取session中存储的user信息,根据用户ID查询用户购物车的信息,进行遍历。 - 清空购物车:调取clear方法,通过UserID删除对应的购物车信息。 - 购物车单个物品删除:调取delete方法,通过UserID删除购物车中单个商品信息。 3. DetailServlet:获取Servlet路径,进行字符串分割,获取商品ID,实现从主页点击商品图片跳转到详情页面, 4. QueryServlet:查询所有商品信息,调取queryAllGoods方法进行查询。 ### 7.utils层的编写 1. DBUtil :封装了数据库交互的操作,增删改查的操作。 2. MD5util:采用MD5对用户密码进行加密。 ## 第三阶段: ### 实现简单购买 # Git笔记: ## 一、Git简介 **Git是什么**:Git是目前世界上最先进的分布式版本控制系统(没有之一)。 **什么是版本控制系统**:版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统 ## 二、集中式和分布式: **集中式版本控制系统**:版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,每个人电脑上都有一个完整的版本库然后开始干活,干完活了,再把自己的活推送给中央服务器。 **分布式版本控制系统**:每个人的电脑里有完整的版本库,统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。 ## 三、git的命令: ### 基本命令: 1. cd .. :返回上一级 2. cd :进入某个目录 3. pwd :显示当前目录路径 4. ls(ll) :列出当前目录的文件 ll就是ls -l,列出详细信息 5. touch :新建一个文件 6. rm :删除文件,加上 -rf(就是rm -rf 文件名),就是强制删除目录 ​ rm -rf / :意为删除电脑中所有文件,切勿在Linux中尝试! 7. `mkdir` :新建一个目录 8. mv :移动文件,或者是更改文件名称,mv index.html aa,这就是将index.html移动到aa目录下。但必须保证文件和目标文件夹都在同一个目录下。否则就会更改文件名称 9. reset :重新初始化终端/清屏 10. clear :清屏 11. history :查看命令历史 12. help :帮助 13. #:代表注释 14. cat :显示文件内容 15. exit:退出