《苍穹外卖》开发环境搭建
- 前端环境搭建
- 后端环境搭建
- 项目结构
- sky-common 模块
- sky-pojo 模块
- sky-server 模块
- Git 版本控制
- 创建本地仓库
- 创建远程仓库
- 本地文件推送远程仓库
- 数据库环境搭建
- 前后端联调
- 完善登录功能
黑马程序员最新Java项目实战《苍穹外卖》,最适合新手的SpringBoot+SSM的企业级Java项目实战。
前端环境搭建
前端工程基于 nginx 运行,因为《苍穹外卖》项目侧重于后端开发,所以黑马程序员给我们直接提供了前端的代码部分,我们只需要在本地搭建好前端环境,并运行起来,专注于后端开发即可。
-
在资源贴中下载前端工程资源并将其解压:
-
进入
\nginx-1.20.2\html\sky
路径,可以看到打包好的项目目录结构如下: -
那么我们需要将
nginx-1.20.2
目录移动到没有中文的目录下才能正常启动!!! -
双击
nginx-1.20.2/nginx.exe
文件,窗口会一闪而过,之后访问浏览器地址【http://localhost/】: -
此时,前端环境已经搭建完毕。
注:当前 Nginx 的配置文件中已经配置了反向代理,通过此配置可以将前端请求转发到后端服务。
后端环境搭建
项目结构
后端工程基于 maven 进行项目构建,并且进行分模块开发。项目的目录结构如下:
使用 IDEA 导入初始工程,项目的整体结构如下:
对工程的每个模块作用说明:
序号 | 名称 | 说明 |
---|---|---|
1 | sky-take-out | maven父工程,统一管理依赖版本,聚合其他子模块 |
2 | sky-common | 子模块,存放公共类,例如:工具类、常量类、异常类等 |
3 | sky-pojo | 子模块,存放实体类、VO、DTO等 |
4 | sky-server | 子模块,后端服务,存放配置文件、Controller、Service、Mapper等 |
对项目整体结构了解后,接下来我们详细分析上述的每个子模块:
sky-common 模块
sky-common 模块中存放的是一些公共类,可以供其他模块使用:
分析sky-common模块的每个包的作用:
名称 | 说明 |
---|---|
constant | 存放相关常量类 |
context | 存放上下文类 |
enumeration | 项目的枚举类存储 |
exception | 存放自定义异常类 |
json | 处理 json 转换的类 |
properties | 存放 SpringBoot 相关的配置属性类 |
result | 返回结果类的封装 |
utils | 常用工具类 |
sky-pojo 模块
sky-pojo 模块中存放的是一些 entity、DTO、VO 类:
分析sky-pojo模块的每个包的作用:
名称 | 说明 |
---|---|
Entity | 实体,通常和数据库中的表对应 |
DTO | 数据传输对象,通常用于程序中各层之间传递数据 |
VO | 视图对象,为前端展示数据提供的对象 |
POJO | 普通Java对象,只有属性和对应的getter和setter |
sky-server 模块
sky-server 模块中存放的是 配置文件、配置类、拦截器、controller、service、mapper、启动类等:
分析sky-server模块的每个包的作用:
名称 | 说明 |
---|---|
config | 存放配置类 |
controller | 存放controller类 |
interceptor | 存放拦截器类 |
mapper | 存放mapper接口 |
service | 存放service类 |
SkyApplication | 启动类 |
Git 版本控制
创建本地仓库
-
点击【VCS】、【创建 Git 仓库】:
-
选择当前项目,点击确定:
-
出现 git 提交按钮,本地仓库创建成功:
创建远程仓库
-
访问 https://gitee.com/,新建仓库,完善仓库信息:
-
点击创建:
本地文件推送远程仓库
-
添加远程仓库地址:
-
点击 IDEA 菜单栏中的提交按钮:
-
选中【未进行版本管理的文件】,下方输入本次提交的注释,点击【提交并推送】【仍然提交并推送】:
-
点击推送:
-
推送完成,刷新远程仓库即可:
数据库环境搭建
-
下载数据库文件,【sky.sql】:
-
通过该 sql 文件直接可创建数据库,所以不需要提前创建数据库,直接使用 SQLYog 导入该文件执行即可:
-
执行完成后,共创建出11张表:
前后端联调
后端的初始工程中已经实现了登录功能,直接进行前后端联调测试即可。实现思路:
-
启动前端环境:
-
启动后端环境:
-
前端页面输入账号密码【账号:admin;密码:123456】进行登录:
完善登录功能
-
打开employee 表,修改数据库中明文密码,改为 123456 经过 MD5 加密后的密文【e10adc3949ba59abbe56e057f20f883e】:
-
修改 EmployeeServiceImpl 实现类中的用户登录逻辑的代码,调用
DigestUtils
的md5DigestAsHex()
方法将前端提交的密码进行 MD5 加密,再跟从数据库中查询的密码进行比对:public Employee login(EmployeeLoginDTO employeeLoginDTO) {......//密码比对// 对前端传过来的明文密码进行MD5加密处理password = DigestUtils.md5DigestAsHex(password.getBytes());if (!password.equals(employee.getPassword())) {//密码错误throw new PasswordErrorException(MessageConstant.PASSWORD_ERROR);}...... }