苍穹外卖day1 环境搭建

 本节解决项目前端 管理端(Web)后端 后端服务(java)环境搭建 

其中前端 用户端(小程序)的环境搭建 在后文编写微信小程序代码时候再进行

一.前端

 进入nginx服务器标准的目录结构, 进入html再进入sky

 想要运行nginx服务必须满足路径中没有汉字的条件, 即需要更改图中niginx-1.20.2的位置

若满足条件则双击nginx.exe 启动nginx服务 

 访问本地端口号80  效果如下

二 后端搭建

 

二. (1) 

 sky-take-out 是一个父工程,  下面由common, pojo, server三个子工程

 项目模块功能

二.(2)

constant 常量类 context 上下文类 enumeratation枚举类  exception全局异常类 json 处理json转换的类 properties包包含springboot中的配置属性类:把我们配置文件的一些配置项封装成对象,放入properties包  result 结果类 把后端返回的结果类放在result包中,  utils工具类

二.(3) 

Entity:实体  表里边的字段和类中属性也会有对应关系

DTO:  数据传输对象 : 比如从前端传入一个json数据, 后端则需要接受这个数据并把数据封装成java对象, 而这个java对象往往使用DTO来接受

VO: 后端生成的数据封装成Java对象,之后可以通过一个VO对象来返回,VO就是专注于前端页面展示的一种视图对象

 

 二.(4)

 三

将项目上传至git

gitignore中的文件不需要上传 

 四  数据库环境

 五 前后端联调

五 (1) 连接数据库

 1 使用mybatis需要让springboot项目中的entity实体对应数据库表中数据

2 引入Mybatis相关依赖, 并在application-dev.yml文件中修改为自己数据库的用户名,密码等信息, 完成数据库连接.

数据库连接四要素:

driver-class-name: com.mysql.cj.jdbc.Driver => 1 配置驱动类 
host: localhost
port: 3306
database: sky_take_out  => 2 指定要连接那台数据库的服务器(localhost), 要连入的端口(3306)以及数据库名(sky_take_out)
username: root   =>  3 连入数据库的用户名
password: 1111   =>  4 连入数据库的密码

五. (2) 联接测试

运行启动类SkyApplication中的main()方法. 启动连接 右下角出现server started 连接成功在前端登录界面输入用户名 admin  密码123456

 localhost服务器中sky_take_out中的employee表中初始默认带有

用户username : admin

密码password :123456

登录成功   右上角错误先忽略

 五. 登录功能实现过程

前端向后端发送登录请求, 在最开始会发送到controller.admin 包中的EmployeeController类下

 在EmployeeController类下加入断点, 点击前端界面登录 可以看到username和password被提交到后端

 进入下一步, login方法观察如何实现

=========================================================================

login方法被定义在EmployeeService接口中,并在EmployeeServiceImpl类中重写login方法

 进入重写后的login方法  使用employMapper中的getByUsername方法根据用户名查询数据库中的数据

 employMapper被定义在EmployMapper类中

 我们进入EmployMapper类 根据用户名查询员工信息

 之后回到EmployeeServiceImpl类中, 会根据拿到的数据库账号密码去和输入的账号密码去比对

 并且判断账号是否锁定我们用到了设置好的常量

==================================================================================================================================================

具体说一下这个异常处理:

加入输入密码不匹配数据库中的密码, 则抛出一个密码错误异常类PasswordErrorException 

 PasswordErrorException类继承基础异常类BaseException, 基础异常类继承RuntimeException

而其中的参数msg由常量类MessageConstant提供,该类为每种异常提供一个常量名称

  再完成抛出异常后, 该密码错误异常PasswordErrorException被全局异常处理器(处理项目中抛出的业务异常)GlobalExceptionHandler 接收, 并且在接受过程中, PasswordErrorException类型异常

 被向上转型成为父类BaseException类型异常,便于管理.

在log.error("异常信息:{}", ex.getMessage()); 记录日志后

包装成Result类返回给前端

 ==================================================================================================================================================

 最后返回employ实体对象

 =========================================================================

 

 =========================================================================

通过employ.getId()获取主键值  装入claims 

@ConfigurationProperties(prefix = "sky.jwt") 配置属性类的注释,用来封装springboot配置文件当中的配置项

在springboot配置文件中找sky.jwt

 之后这些配置项封装到 JwtProperties jwtProperties对象中,并被注入到EmployeeController

  ========================================================================

 成功得到令牌token, 与主键值, 用户名,姓名, 一起封装进EmployeeLoginVO employeeLoginVO

 最后,再把EmployeeLoginVO employeeLoginVO封装成Result 返回给前端

 六. 思考

前端发送请求地址 

 后端接口地址

并且后端基于内嵌的Tomcat服务器因此有着8080端口号

 优点

 

缓存(速度)  多台服务器同时进行 前端无法直接连到后端 

 server代表一个虚拟主机, 监听的端口号为80,特定请求转发到指定后端

 七 完善登录功能

八. Swagger

 我们选择WebMvcConfiguration类作为我们的配置类

@Bean注解  由Spring创建对象并管理对象

构建生成的接口文档的描述信息, 这个对象构造好之后

 ApiInfo apiInfo = new ApiInfoBuilder()
                .title("苍穹外卖项目接口文档")
                .version("2.0")
                .description("苍穹外卖项目接口文档")
                .build();

 我们通过常量 DocumentationType.SWAGGER_2(Swagger版本)

以及上面创建好的ApiInfo对象 

select()方法

指定生成接口所需要扫描的包  com.sky.controller  若包有子包也会一起扫描  (通过反射机制解析controller类以及类方法,生成接口文档)

来构造Docket对象生成接口文档

 Docket docket = new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.sky.controller"))
                .paths(PathSelectors.any())
                .build();

 

/**
     * 设置静态资源映射
     * @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/");
}
将我们生成接口文档的文件放在这个路径下边 "classpath:/META-INF/resources/"
                                       "classpath:/META-INF/resources/webjars/"
所以在我们发出这些页面请求时"/doc.html", "/webjars/**"需要把它映射到真正的资源上面去
并且addResourceHandlers()这个方法名称不能随便写,因为这是重写父类WebMvcConfigurationSupport.calss (Spring提供)中的方法

配置完成后,运行程序可以从日志上看出方法2和方法3都参与运行

 接口测试:测试登录功能

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值