外卖点餐系统01
学习苍穹外卖项目的第一天,涉及内容包括项目整体介绍,前端Nginx环境搭建,后端IDEA和Maven以及MySQL搭建,本人使用的平台是Mac M3芯片
苍穹外卖项目介绍
项目介绍
管理端和用户端:外卖商家使用和点餐用户使用
功能构架:体现项目中的业务功能模块
产品原型
用于展示项目业务,一般由产品经理完成只有充分了解技术原型,通过产品原型理解业务,在最终开发才不会有偏差,在开发设计的过程才能更好符合实际应用
技术选型-结构师
展示项目中使用到的技术框架和中间件等
开发环境搭建
前端环境搭建
前端工程基于nginx运行
nginx在MAC上的安装、启动、重启和关闭: https://www.kancloud.cn/sxlcjqq/interviews/890653
执行如下命令
brew search nginx
brew install nginx
安装完以后,可以在终端输出的信息里看到一些配置路径:
/usr/local/etc/nginx/nginx.conf(配置文件路径)
/usr/local/var/www (服务器默认路径)
/usr/local/Cellar/nginx/1.8.0 (安装路径)
如果是macOS 1.12以上的系统,在安装过程中可能会出现"warning",说是不支持该版本的操作系统,可以暂时先忽略它。
苍穹外卖-Mac配置前端开发环境:https://blog.csdn.net/weixin_45786868/article/details/133845979
将我们下载的nginx的目录(/opt/homebrew/etc/nginx/)里的nginx.conf替换为老师给的nginx.conf,并将(/opt/homebrew/Cellar/nginx/1.27.0)中的html文件夹替换成老师给的资料中的html文件夹
windows启动nginx:双击nginx.exe即可启动nginx服务,访问端口号为80
MAC启动nginx:命令行执行
brew services start nginx // 启动nginx服务
ps -ef|grep nginx //检查nginx是否正在运行
下面页面正常显示 代表前端部署成功
后端环境搭建
后端工程基于maven进行项目构建,并且分模块开发
sky-take-out:maven父工程,统一管理依赖版本,聚合其他子模块
sky- common子模块中存放的是一些公共类,可以供其他模块使用
sky-pojo子模块中存放的是一些entity、DTO、VO
- ENtity:实体,通常和数据库中的表对应
- DTO:数据传输对象,通常用于程序中各层之间传递数据
- VO:视图对象,为前端展示数据提供的对象
- POJO:普通Java对象,只有属性 和对应的getter和setter
sky-server子模块中存放的是配置文件、配置类、拦截器、controller、启动类等
具体搭建环境步骤:
IDEA打开sky_take_out工程
- 用IDEA打开初始工程sky_take_out,如下图
- 在命令行检查电脑是否有maven,然后判断是否需要安装maven
brew info maven // 检查电脑maven信息
brew install maven //通过homebrew安装maven,通过homebrew安装,不需要配置环境变量classpath!
- 安装完maven后我们还需要配置IDEA中的maven
打开IDEA->setting,将maven home path换成本地路径,不知道可以通过brew info maven查看,然后通过cd命令进入maven本地文件夹,依次通过cd conf和ls命令,找到settings.xml文件,并将settings.xml文件路径复制到IDEA中User settings file,然后Apply,OK,IDEA中maven配置完成,具体演示步骤看下面的图片
使用Git进行项目代码的版本控制
- 创建Git本地仓库
- 创建Git远程仓库
- 将本地文件推送到Git远程仓库
使用IDEA自带Database可视化并连接MySQL
首先在命令行安装并启动MySQL,在安装完MySQL后需要初始化MySQL,设置root密码。
# homebrew安装MySQL
brew install MySQL
brew info MySQL
# 启动MySQL
brew services start MySQL
# 进入/退出MySQL环境
MySQL -u root -p // 进入
quit; // 退出
然后进入MySQL环境运行sky.sql文件,sky.sql会创建数据库sky_take_out,并在这个数据库中创建11个table。
如何命令行运行sky.sql文件:
- 首先命令行进入mysql运行环境
- 拖动sky.sql文件到命令行,回车
- mac m1芯片 要一层层cd 然后source sky.sql
然后在IDEA中建立与MySQL的连接
上图是填写MySQL的登陆用户和密码以及数据库名称,下图中需要给数据库连接安装对应驱动(Drivers),点击‘+’号,安装对应MySQL版本驱动即可,然后Apply,并test connection能否成功。
IDEA前后端联调注意事项
- application-dev.yml 中数据库密码是root,需要修改成本地数据库密码,有数字需要加双引号。
- 前端登陆账户密码,可以查看sky_take_out数据库中的employee表,会默认增加初始一项。
- Mac使用IDEA进入某一方法源码 快捷键:option+command+单击;进入方法对应接口:shift+command+单击;
JwtProperties
JwtProperties是一个配置属性类,存放在common模块->properties,这个类是用来封装springboot配置文件中的配置项,也就是.yml配置文件
Nginx反向代理和负载均衡概念
前端发送的请求,是如何请求到后端服务的?
Nginx反向代理:前端发送请求给nginx服务器,然后由nginx服务器动态分陪给后端。为什么不直接通过前端请求后端,反而中间要添加一个nginx服务器,有以下好处:
- 提高访问速度,nginx服务器可以提供缓存,如果请求在缓存中存在可以直接传递数据
- 进行负载均衡:如果前端直接发送请求给后端,前端只能绑定一台后端,而在实际应用中,由于前端请求服务的增加,往往需要部署多台后端组成集群,nginx服务器可以将前端大量请求按照指定方式均衡的分配给集群中每台后端服务器,使得后端服务负载均衡。
- 保证后端服务安全:防止前端直接访问后端
Nginx反向代理和负载均衡的配置方式-nginx.conf
将api/前路径替换,然后剩余的拼接上
负载均衡就是将发送给后端请求,指定服务器ip地址,可以有不同的分配策略
nginx负载均衡策略:
完善登录功能
Employee table中密码是明文存储,如何解决?
- 将密码加密后存储
使用MD5加密方式MD5信息摘要算法,一种密码散列函数,将原本明文密码生产为一个128位的散列值(16字节),且该过程是单向的。所以进行密码核对是核对加密后的128位密文。
- 修改数据库中的明文密码,改为MD5加密后的密文
- 修改Java代码,前端提交的密码进行MD5加密后再跟数据库中的密码进行对比
- DigestUtils工具类,可以对数据进行DM5加密
Swagger
帮助后端生成接口文档,并进行接口测试使用Swagger只需要按照他的规范去定义接口及接口相关信息,就可以做到生成接口文档,以及在线接口调试页面。Knife4j 是为Java MVC框架集成Swagger生成Api文档的增强解决方案。<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>3.0.2</version>
</dependency>
Swagger使用方式
- 导入 knife4j的maven坐标
- 在配置类中加入knife4j相关配置
- 设置静态资源映射,否则接口文档页面无法访问