Java笔记-19、Web后端实战-准备
智能学习辅助系统
需求
- 部门数据管理
- 员工数据管理,文件上传
- 报表统计
- 登录认证
- 日志管理
- 班级、学员信息的数据管理
准备工作
开发规范
前后端混合:分工不明确;不便管理;难以维护。
开发模式:前后端分离。
前端开发完毕后,会独立部署在nginx服务器。
后端开发完毕后,会独立部署在tomcat服务器。
前端发起数据请求,后端响应数据请求。
接口文档定义请求信息和响应信息。这里的接口不是interface,而是功能,一个功能就是一个接口。依据页面原型和需求文档进行设计。
接口文档样例
功能:部门列表查询
- 基本信息
请求路径:/depts
请求方式:GET
接口描述:该接口用于部门列表数据查询
- 请求参数
无
- 响应数据
参数格式:application/json
参数说明:
| 参数名 | 类型 | 是否必须 | 备注 |
|---|---|---|---|
| code | number | 必须 | 响应码,1 代表成功,0 代表失败 |
| msg | string | 非必须 | 提示信息 |
| data | object[ ] | 非必须 | 返回的数据 |
| |- id | number | 非必须 | id |
| |- name | string | 非必须 | 部门名称 |
| |- createTime | string | 非必须 | 创建时间 |
| |- updateTime | string | 非必须 | 修改时间 |
响应数据样例:
{
"code": 1,
"msg": "success",
"data": [
{
"id": 1,
"name": "学工部",
"createTime": "2022-09-01T23:06:29",
"updateTime": "2022-09-01T23:06:29"
},
{
"id": 2,
"name": "教研部",
"createTime": "2022-09-01T23:06:29",
"updateTime": "2022-09-01T23:06:29"
}
]
}
开发流程
需求分析-接口设计(API接口文档)-前后端并行开发-测试(前、后端分别+联调)
软件架构风格-Restful
前端与后端交互的风格。
REST (REpresentational state Transfer),表述性状态转换,它是一种软件架构风格。
基于REST风格URL如下:
- http://localhost:8080/users/1 GET:查询id为1的用户
- http://localhost:8080/users/1 DELETE:删除id为1的用户
- http://localhost:8080/users POST:新增用户
- http://localhost:8080/users PUT:修改用户
其中总结起来,就一句话:通过URL定位要操作的资源,通过HTTP动词(请求方式)来描述具体的操作。
- GET : 查询
- POST :新增
- PUT : 修改
- DELETE :删除
REST是风格,是约定方式,约定不是规定,可以打破
描述模块的功能通常使用复数,也就是加s的格式来描述,表示此类资源,而非单个资源。如:users、emps、books…
Apifox
前后端都在并行开发,后端开发完对应的接口之后,如何对接口进行请求测试。浏览器只能发送GET请求。
前后端都在并行开发,前端开发过程中,如何获取到数据,测试页面的渲染展示。
使用apifox apipost postman等工具。
工程搭建
- 创建SpringBoot工程,并引入web开发起步依赖、mybatis、mysql驱动、lombok。
- 创建数据库表dept,并在application.yml中配置数据库的基本信息。
- 准备基础代码结构,并引入实体类Dept及统一的响应结果封装类 Result。
创建SpringBoot工程
- 创建空project,设置project structure中的SDK版本和Language Level。
- 检查Maven路径,找到Settings-Build-Build Tools-Maven,查看maven home path是否是对的,查看仓库的配置User settings file 和 Local repository。
- 检查设置字符集。打开Settings-Editor-File Encodings,将Global、Project、properties的Encoding都设置为UTF-8。
- 在工程下new一个module,选择spring boot,Java Maven,包名改一下删掉最后一级,JDK和Java选一下。
- 选择Spring Boot的版本,然后勾选依赖:Lombok、Spring Web、MyBatis Framework、MySQL Driver,创建。(如果pom.xml没有m小图标,右键add as a Maven Project)删除无用文件,只保留src和pom和.iml文件。
- 查看src目录结构,main-java下由一个启动类,main-resources下static和template删掉就行。application.properties同样删掉,新建application.yml文件。
创建数据库表
- 打开数据库管理软件,在MySQL中创建一个数据库\(CREATE DATABASE `tlias`\)。
- 在数据库中创建数据库表并插入一些数据。
CREATE TABLE dept (
id int unsigned PRIMARY KEY AUTO_INCREMENT COMMENT 'ID, 主键',
name varchar(10) NOT NULL UNIQUE COMMENT '部门名称',
create_time datetime DEFAULT NULL COMMENT '创建时间',
update_time datetime DEFAULT NULL COMMENT '修改时间'
) COMMENT '部门表';
- 在application.yml中配置数据库连接信息。
spring:
application:
name: tlias-web-management
datasource:
driver-cLass-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/tlias
username: root
password: 123456
mybatis:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
创建基本包结构和实体类
- 在main-java启动类同级下创建包pojo,存放实体类;包controller,存放控制层代码;包service,存放业务层代码;包mapper(dao,MyBatis中叫mapper),存放持久层代码。
- 创建实体类和响应结果封装类。
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Dept {
private Integer id;
private String name;
private LocalDateTime createTime;
private LocalDateTime updateTime;
}
// --------------------------------------------------
@Data
public class Result {
private Integer code; //编码:1成功,0为失败
private String msg; //错误信息
private Object data; //数据
public static Result success() {
Result result = new Result();
result.code = 1;
result.msg = "success";
return result;
}
public static Result success(Object object) {
Result result = new Result();
result.data = object;
result.code = 1;
result.msg = "success";
return result;
}
public static Result error(String msg) {
Result result = new Result();
result.msg = msg;
result.code = 0;
return result;
}
}
- 准备mapper、controller、service基本骨架。
在mapper包下创建接口DeptMapper,并加@Mapper注解。
在service包下创建接口DeptService,并在service包的impl包下创建实现类DeptServiceImpl实现接口,并加注解@Service,交给IOC管理。
在controller包下创建类DeptController,并加注解@RestController,表示控制层的请求处理类。
重温一下,RestController注解包含了Controller注解和ResponseBody注解,ResponseBody将方法的返回值直接作为响应数据响应给前端,如果是对象或集合,会转成json再响应。

浙公网安备 33010602011771号