# 商城后台项目
# 登录注册
# 创建 User 数据表
User 数据表有如下字段:
- uid;
- username;
- password;
- phone;
之后在项目目录里,创建对应的 User 的 Domain。
# 使用 Lombok
- 上面 👆Domain 中,我们写了很多 Getter / Setter 方法;
- Lombok 是一个代码生成工具;
- 它可以自动生成 Getter / Setter 方法,从而提高开发效率;
- 使代码更加简洁,直观,减少大量的冗余代码;
- 减少后期维护成本;
# 安装 Lombok
下载:https://projectlombok.org/download
安装 Eclipse 插件:
- 要想使用 Lombok 插件,下载完 jar 包之后,还需要先安装一下;
- 命令行执行命令
java -jar ./lombok.jar
进入安装界面; - 点击 Install,把插件安装到 Eclipse;
之后将刚才下载的 Lombok 的 jar 包引入到项目中:
之后重启一下 Eclipse;
# 引入 jar 包的两种方式
第一种:
- 我们上面 👆 引入 jar 包的形式;
- 先把 jar 包拷贝到 WEB-INF 目录下的 lib;
- 然后右键 jar 包,Build Path;
- 这种方式很麻烦,每次创建新项目,都要拷贝硬盘中的 jar 包;
第二种:
右键项目,点击 Build Path,点击 Configure Build Path;
点击 Libraries,点击 Add Library,点击 User Library;
新建一个自定义的包;
点击 Add External Jars,把外部的 jar 包和自定义的包关联起来;
点击确认后,你就可以看到包已经引入到 Libraries 里面了;
# 使用 Lombok
- Lombok 通过在类上加注解的形式使用;
- 常用注解:(下面 👇 这些注解都不需要记住,开发中很少使用)
@Data
:把下面的方法都给你生成一份;@Setter
@Getter
:自动生成 Getter / Setter 方法;@ToString
:生成 toString 方法;@EqualsAndHashCode
:生成 equals 和 hashCode 方法;@NoArgsConstructor
:无参构造器;@AllArgsConstructor
:全参构造器;
- 开发中一般只用
@Setter
@Getter
; @Setter
@Getter
写在类上,给类中每个属性都加 Getter 和 Setter;- 写在单独一个属性上,只给这个属性加 Getter 和 Setter;
# 注册验证
# 前端验证
在提交表单到后端之前,先进行前端验证,这里就不多说了。
# 注册表单发送 POST 请求到 Servlet
# 后端验证码判断
# 后端获取表单参数,把注册信息写入数据库
- 用
request.getParameterMap
接收表单 POST 请求发来的所有参数; - 用 BeanUtils 的
populate
把接收的参数封装成 User 对象; - 用 UUID 去生成随机的用户 UID;
- 通过 QueryRunner 把 User 信息写入数据库;
# 登录验证
- 获取用户名和密码参数;
- 去数据库查询用户是否用户信息正确;
- 如果正确,就跳转到主页面;
- 不正确,就跳转到登录页面;
# 商品列表
# 创建商品数据表
之后创建对应的商品 Domain:
# 将商品数据渲染到页面
# 服务器查询数据,并转发给页面
- 编写 GoodsServlet 来查询数据;
- 把数据库中取出来的数据,存放到 request 域中;
- 请求转发到 goods_list.jsp,同时把 request, response 对象传入;
- 这样就可以在 goods_list.jsp 中访问获取的商品数据了;
# 将商品数据渲染到页面
- 用 JSP 标签将查询到的数据渲染到页面;
- 之前访问商品页面,是请求 goods-list.jsp;
- 现在应该改成,请求 GoodsServlet;
# 用 EL 和 JSTL 优化上面代码
上面的代码可以用 EL 和 JSTL 来简化代码量。
# MVC 设计模式
设计模式,是开发过程总总结出来的一套约定俗成的开发套路;
JavaEE 模式:
- model 1 模式:JSP + JavaBean;
- JavaBean 封装数据,在 JSP 中操作数据,并且展示;
- 弊端:业务复杂时,JSP 代码容易混乱,不易于开发维护;
- model 2 模式:JSP + Servlet + JavaBean;
- MVC:
- Model:对应 JavaBean - 封装数据;
- View:对应 JSP - 页面展示;
- Controller:对应 Servlet - 操作数据,并把数据放到 View 层展示;
- MVC:
- Java Web 开发三层架构:
- Web 层:与浏览器交互,负责接收请求,做出响应;
- Service 层:处理业务逻辑,操作数据,把封装好的结果返回给 Web 层;
- DAO 层:直接与数据库相连,封装数据,返回给 Service 层;
# 用 MVC 重构商品列表
先创建 web, service, dao 三个目录:
编写商品的 DAO 代码,在这段程序中:
- 需要连接数据库;
- 查询数据;
- 再把查询到的结果集返回出去;
编写商品的 Service 代码,在这段代码中:
- 调用 DAO 去查数据;
- 把通过 DAO 查询到的结果,再返回给 Web 层;
编写 Web 层代码,在这段代码中:
- 接收浏览器发来的请求;
- 收到请求后去调用 Service 查数据;
- 之后把返回来结果,放到 request 域中响应给浏览器;