前言
前面我们把Java对MYSQL数据库的操作除了jpa以外都尝试了一遍,但是一直都是用测试类去测试功能,但是一直都没有跟web有啥关系,哈哈,别着急嘛,开始学习就要把知识先拆开,分而治之,后面我们再来串联起来,所以从这小节开始,我也打算换个思路,从顶层开始,直接用SpringBoot整合SpringMVC,然后先用postman,再上Swagger,再就转向前端了,前端写个基本的界面加上一个增删改查,然后回头来配置一个拦截器,再上redis,做完之后,把整个项目用容器部署一下,差不多整个是这样个安排。
反正就是一个思路,用最小的切面,让大家对整个技术栈有个完整的认识。
康康官网
先把Spring
官网带大家看看吧
Spring makes Java cloud-ready
这是最新的口号,看来Spring为了云原生这一块的应用,下了不少功夫,这个我们后面再讲,毕竟之前博客搭建rocketMQ
的时候就看到了,一个单机部署的消息队列都是起步8 g内存的,哈哈,所以咱目前还是以单体应用为主,一般项目最多上个redis
,消息队列都用得少,Redis
肯定会讲的
官网没事多逛逛哈,养成习惯就好了
引入依赖
咱们在之前的mybatis-plus
项目的基础上进行开发
加上web starter就好了
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
记得点一下刷新依赖哈
仅仅使用Controller来返回测试
新建一个Controller
com.example.demo.controller
包下创建UserController
package com.example.demo.controller;
import com.example.demo.dataobject.UserDO;
import com.example.demo.utils.MD5Util;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
// 表示这是控制器类 直接使用接口方法返回结果,就是直接返回json哈
@RestController
// 表示我们请求的路径 我们请求这个 controller 的时候就需要加上 /user 这个前缀
@RequestMapping("/user")
public class UserController {
// GetMapping 标识请求是发送 GET 请求 路径匹配 {id} 表示id是请求参数
@GetMapping("/{id}")
// @PathVariable标识这里用的是前端请求过来的 路径参数 就是方法可以把待会儿传过来的路径中的id 传入这个方法
public UserDO get(@PathVariable("id") Integer id) {
// 模拟一个返回用户
UserDO userDO = new UserDO();
userDO.setId(id); // 传入我们在请求中给出的 id
userDO.setUsername("SpringMVC");
userDO.setPassword(MD5Util.getMD5("123"));
return userDO; // 由于由我们的 @RestController 所以我们会把返回的 userDO 对象 解析成json串
}
}
运行我们的主方法
打开Postman测试接口(后面用我们炫酷的 swagger)
点击这里新建一个测试请求
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZhznIiwB-1612067295826)(C:\Users\15292\AppData\Roaming\Typora\typora-user-images\image-20201210104316543.png)]
从我们的Console中可以看到我们应用启动(其实就是Tomcat)的端口
我们在路径中直接传入参数
路径前面可以勾选请求方法
然后 Send
上面那个匹配的路径是localhost:8080/user
,没有涉及到参数传递
后面还有一些例子,大家自己练习把,就是把请求方法改变了,这里还涉及到一个知识点,Restful API
规范
// GetMapping 标识请求是发送 GET 请求
@GetMapping("/get") // 修改URL为这个
// 传入的时候 用请求参数 ?id=xxx 的形式
public UserDO get(@RequestParam("id") Integer id) {
// 模拟一个返回用户
UserDO userDO = new UserDO();
userDO.setId(id); // 传入我们在请求中给出的 id
userDO.setUsername("SpringMVC");
userDO.setPassword(MD5Util.getMD5("123"));
return userDO; // 由于由我们的 @RestController 所以我们会把返回的 userDO 对象 解析成json串
}
暂时废弃的例子
不太推荐用这种请求形式哈
package com.example.demo.controller;
import com.example.demo.dataobject.UserDO;
import com.example.demo.utils.MD5Util;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.*;
// 表示这是控制器类 直接使用接口方法返回结果,就是直接返回json哈
@RestController
// 表示我们请求的路径 我们请求这个 controller 的时候就需要加上 /user 这个前缀
@RequestMapping("/user")
public class UserController {
@GetMapping("")
public List<UserDO> list() {
List<UserDO> result = new ArrayList<>();
for (int i=0; i<5; i++) {
UserDO userDO = new UserDO();
userDO.setId(i);
userDO.setUsername(UUID.randomUUID().toString());
userDO.setPassword(MD5Util.getMD5(String.valueOf(i)));
result.add(userDO);
}
return result;
}
// GetMapping 标识请求是发送 GET 请求 路径匹配 {id} 表示id是请求参数
@GetMapping("/{id}")
// @PathVariable标识这里用的是前端请求过来的 路径参数 就是方法可以把待会儿传过来的路径中的id 传入这个方法
public UserDO get(@PathVariable("id") int id) {
// 模拟一个返回用户
UserDO userDO = new UserDO();
userDO.setId(id); // 传入我们在请求中给出的 id
userDO.setUsername("SpringMVC");
userDO.setPassword(MD5Util.getMD5("123"));
return userDO; // 由于由我们的 @RestController 所以我们会把返回的 userDO 对象 解析成json串
}
}
这里有个坑,参数不能用Integer
,要用int
,否则会404