赞
踩
定位:专门为餐饮企业(餐厅、饭店)定制的一款软件产品
功能架构:体现项目中的业务功能模块
产品原型:用于展示项目的业务功能,一般由产品经理进行设计
技术选型:展示项目中使用到的技术框架和中间件等
整体结构
开启nginx
后端工程基于maven进行项目构建,并且进行分模块开发
如果maven加载不了可以加入镜像下载
<repositories> <repository> <id>huawei</id> <name>华为云</name> <url>https://repo.huaweicloud.com/repository/maven/</url> <releases><enabled>true</enabled></releases> </repository> <repository> <id>aliyun</id> <name>阿里云</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <releases><enabled>true</enabled></releases> <!--snapshots默认是关闭的,需要开启 --> <!--禁止从公共仓库下载snapshot构件是推荐的做法,因为这些构件不稳定,且不受你控制,你应该避免使用。 但是如果是私服仓库,可以激活snapshot的支持 --> <snapshots><enabled>false</enabled></snapshots> </repository> </repositories>
使用Git进行项目代码的版本控制,具体操作:
创建Git远程仓库
将本地文件推送到Git远程仓库(选中全部)
通过数据库建表语句创建数据库表结构:
在数据库中导入sql文件:
在idea中连接数据库
把配置文件中的用户名和密码改为自己的
后端的初始工程中已经实现了登录功能,直接进行前后端联调测试即可
编译项目:
编译成功后启动程序:
确保提前运行了nginx.exe,端口号为:localhost:80如果没有页面显示需要手动修改端口号
用户名:admin、密码:123456
成功登录!
前端发送的请求,是如何请求到后端服务的?
前端请求地址:http://localhost/api/employee/login
后端接口地址:http://localhost:8080/admin/employee/login
nginx反向代理,就是将前端发送的动态请求由nginx转发到后端服务器
nginx反向代理的好处:
nginx反向代理的配置方式:
nginx负载均衡的配置方式:
nginx负载均衡策略:
名称 | 说明 |
---|---|
轮询 | 默认方式 |
weight | 权重方式,默认为1,权重越高,被分配的客户端请求就越多 |
ip_hash | 依据ip分配方式,这样每个访客可以固定访问一个后端服务 |
least_conn | 依据最少连接方式,把请求优先分配给连接少的后端服务 |
url_hash | 根据url分配方式,这样相同的url会被分配到同一个后端服务 |
fair | 依据响应时间方式,响应时间短的服务将会被优先分配 |
问题:员工表中的密码是明文存储,安全性太低
1、将密码加密后存储,提高安全性
2、使用MD5加密方式对明文密码加密(不可逆)
步骤:
1、修改数据库中明文密码,改为MD5加密后的密文(e10adc3949ba59abbe56e057f20f883e)
2、修改Java代码,前端提交的密码进行MD5加密后再跟数据库中密码对比
EmployeeServiceImpl
//密码比对
// TODO 后期需要进行md5加密,然后再进行比对
//对前端传过来的明文密码进行md5加密处理
password = DigestUtils.md5DigestAsHex(password.getBytes());
3、测试:登录成功
将课程资料中提供的项目接口导入YApi
打开yapi网页:YApi Pro-高效、易用、功能强大的可视化接口管理平台
使用Swagger你只需要按照它的规范去定义接口及接口相关的信息,就可以做到生成接口文档,以及在线接口调试页面。官网:API Documentation & Design Tools for Teams | Swagger
Knife4j是Java MVC框架集成Swagger生成Api文档的增强解决方案
1、导入maven坐标
<!-- Knife4j-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>3.0.2</version>
</dependency>
2、在配置类中加入knife4j相关配置
/** * 通过knife4j生成接口文档 * @return */ @Bean public Docket docket() { ApiInfo apiInfo = new ApiInfoBuilder() .title("苍穹外卖项目接口文档") .version("2.0") .description("苍穹外卖项目接口文档") .build(); Docket docket = new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo) .select() .apis(RequestHandlerSelectors.basePackage("com.sky.controller")) .paths(PathSelectors.any()) .build(); return docket; }
3、设置静态资源映射,否则接口文档页面无法访问
/**
* 设置静态资源映射
* @param registry
*/
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
3、在浏览器中输入http://localhost:8080/doc.html#/home
登录测试:
通过注解可以控制生成的接口文档,使接口文档拥有更好的可读性,常用注解如下:
注解 | 说明 |
---|---|
@Api | 用在类上,例如Controller,表示对类的说明 |
@ApiModel | 用在类上,例如entity、DTO、VO |
@ApiModelProperty | 用在属性上,描述属性信息 |
@ApiOperation | 用在方法上,例如Controller方法,说明方法的用途、作业 |
----------------------------------------------- |
| @Api | 用在类上,例如Controller,表示对类的说明 |
| @ApiModel | 用在类上,例如entity、DTO、VO |
| @ApiModelProperty | 用在属性上,描述属性信息 |
| @ApiOperation | 用在方法上,例如Controller方法,说明方法的用途、作业 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。