# 商城后台项目

# 登录注册

2020-2-3-9-57-42.png

# 创建 User 数据表

User 数据表有如下字段:

  • uid;
  • username;
  • password;
  • phone;

2020-2-3-10-55-7.png

之后在项目目录里,创建对应的 User 的 Domain。

2020-2-3-11-4-15.png

# 使用 Lombok

  • 上面 👆Domain 中,我们写了很多 Getter / Setter 方法;
  • Lombok 是一个代码生成工具;
  • 它可以自动生成 Getter / Setter 方法,从而提高开发效率;
  • 使代码更加简洁,直观,减少大量的冗余代码;
  • 减少后期维护成本;

# 安装 Lombok

下载:https://projectlombok.org/download

安装 Eclipse 插件:

  • 要想使用 Lombok 插件,下载完 jar 包之后,还需要先安装一下;
  • 命令行执行命令 java -jar ./lombok.jar 进入安装界面;
  • 点击 Install,把插件安装到 Eclipse;

2020-2-3-11-25-19.png

  • 之后将刚才下载的 Lombok 的 jar 包引入到项目中: 2020-2-3-11-27-38.png

  • 之后重启一下 Eclipse;

# 引入 jar 包的两种方式

第一种

  • 我们上面 👆 引入 jar 包的形式;
  • 先把 jar 包拷贝到 WEB-INF 目录下的 lib;
  • 然后右键 jar 包,Build Path;
  • 这种方式很麻烦,每次创建新项目,都要拷贝硬盘中的 jar 包;

第二种

  • 右键项目,点击 Build Path,点击 Configure Build Path; 2020-2-3-11-36-14.png

  • 点击 Libraries,点击 Add Library,点击 User Library; 2020-2-3-11-37-49.png

  • 新建一个自定义的包; 2020-2-3-11-39-42.png

  • 点击 Add External Jars,把外部的 jar 包和自定义的包关联起来; 2020-2-3-11-42-0.png

  • 点击确认后,你就可以看到包已经引入到 Libraries 里面了; 2020-2-3-11-43-33.png

# 使用 Lombok

  • Lombok 通过在类上加注解的形式使用;
  • 常用注解:(下面 👇 这些注解都不需要记住,开发中很少使用)
    • @Data:把下面的方法都给你生成一份;
    • @Setter @Getter:自动生成 Getter / Setter 方法;
    • @ToString:生成 toString 方法;
    • @EqualsAndHashCode:生成 equals 和 hashCode 方法;
    • @NoArgsConstructor:无参构造器;
    • @AllArgsConstructor:全参构造器;
  • 开发中一般只用 @Setter @Getter
  • @Setter @Getter 写在类上,给类中每个属性都加 Getter 和 Setter;
  • 写在单独一个属性上,只给这个属性加 Getter 和 Setter;

2020-2-3-11-53-3.png

# 注册验证

# 前端验证

在提交表单到后端之前,先进行前端验证,这里就不多说了。

2020-2-3-19-40-34.png

# 注册表单发送 POST 请求到 Servlet

2020-2-3-20-56-6.png

# 后端验证码判断

2020-2-3-20-54-46.png

# 后端获取表单参数,把注册信息写入数据库

  • request.getParameterMap 接收表单 POST 请求发来的所有参数;
  • 用 BeanUtils 的 populate 把接收的参数封装成 User 对象;
  • 用 UUID 去生成随机的用户 UID;
  • 通过 QueryRunner 把 User 信息写入数据库;

2020-2-3-21-12-27.png

# 登录验证

  • 获取用户名和密码参数;
  • 去数据库查询用户是否用户信息正确;
  • 如果正确,就跳转到主页面;
  • 不正确,就跳转到登录页面;

2020-2-3-22-10-19.png

2020-2-3-22-9-21.png

# 商品列表

# 创建商品数据表

2020-2-4-21-41-8.png

之后创建对应的商品 Domain:

2020-2-4-21-42-34.png

# 将商品数据渲染到页面

# 服务器查询数据,并转发给页面

  • 编写 GoodsServlet 来查询数据;
  • 把数据库中取出来的数据,存放到 request 域中;
  • 请求转发到 goods_list.jsp,同时把 request, response 对象传入;
  • 这样就可以在 goods_list.jsp 中访问获取的商品数据了;

2020-2-4-21-56-37.png

# 将商品数据渲染到页面

  • 用 JSP 标签将查询到的数据渲染到页面;

2020-2-4-22-14-25.png

  • 之前访问商品页面,是请求 goods-list.jsp;
  • 现在应该改成,请求 GoodsServlet;

2020-2-4-22-15-47.png

# 用 EL 和 JSTL 优化上面代码

上面的代码可以用 EL 和 JSTL 来简化代码量。

2020-2-5-0-44-25.png

# MVC 设计模式

设计模式,是开发过程总总结出来的一套约定俗成的开发套路;

JavaEE 模式:

  • model 1 模式:JSP + JavaBean;
    • JavaBean 封装数据,在 JSP 中操作数据,并且展示;
    • 弊端:业务复杂时,JSP 代码容易混乱,不易于开发维护;
  • model 2 模式:JSP + Servlet + JavaBean;
    • MVC:
      • Model:对应 JavaBean - 封装数据;
      • View:对应 JSP - 页面展示;
      • Controller:对应 Servlet - 操作数据,并把数据放到 View 层展示;
  • Java Web 开发三层架构:
    • Web 层:与浏览器交互,负责接收请求,做出响应;
    • Service 层:处理业务逻辑,操作数据,把封装好的结果返回给 Web 层;
    • DAO 层:直接与数据库相连,封装数据,返回给 Service 层;

2020-2-7-19-46-21.png

# 用 MVC 重构商品列表

2020-2-7-19-58-16.png

先创建 web, service, dao 三个目录:

2020-2-7-21-2-52.png

编写商品的 DAO 代码,在这段程序中:

  • 需要连接数据库;
  • 查询数据;
  • 再把查询到的结果集返回出去;

2020-2-7-21-4-54.png

编写商品的 Service 代码,在这段代码中:

  • 调用 DAO 去查数据;
  • 把通过 DAO 查询到的结果,再返回给 Web 层;

2020-2-7-21-5-32.png

编写 Web 层代码,在这段代码中:

  • 接收浏览器发来的请求;
  • 收到请求后去调用 Service 查数据;
  • 之后把返回来结果,放到 request 域中响应给浏览器;

2020-2-7-21-8-18.png

上次更新: 7/4/2020, 4:14:54 AM