spring-boot-devtools

devtools会监听classpath下的文件变动,触发Restart类加载器重新加载该类,从而实现类文件和属性文件的热部署

可以指定某些文件修改不重新部署

Controller和RestController

如果请求的是数据和页面,使用@Controller注解即可;如果只是请求数据,则使用@RestController注解。

数据(Model),页面(View)

image-20230627121306173


RequestParam

将请求的参数绑定到控制器的方法参数上,接收的参数来自http请求体或请求url的QuertString,当请求的参数名称与Controller的业务方法参数名称一致时,此注解可以省略;如果写了此注解,没有接收到参数,就会报错,可以再加个属性,required = false


PathVaraible

用来处理动态的url(比如”/user/{id}”),url的值可以作为控制器中处理办法的参数


RequestBody

接收的参数来自requestBody中,即请求体中,一般用于处理json、xml类型的数据,如果返回是这两种,一定要加此注解


文件上传

表单的enctype=”application/x-www-form-urlencoded”默认时,form表单的数据格式为:key=value&key=value

一般都要将enctype更改为enctype=”multipart/form-data”。

spring.servlet.multipart.max-file-size=1MB 每个文件的配置最大为1MB

spring.servlet.multipart.max-request-size=10MB 单次请求文件的总数不能大于10MB

可以通过使用MultipartFile获取上传的文件数据,再通过transferTo方法将其写入到磁盘

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@RestController
public class FileController {
private String UPLODE_FOLODE = System.getProperty("user.dir")+"/upload/";
@PostMapping("/up")
public String upload(String nickname, MultipartFile f) throws IOException {
saveFile(f);
return "文件上传成功";
}
public void saveFile(MultipartFile f) throws IOException {
File upDir = new File(UPLODE_FOLODE);
if(!upDir.exists()) {
upDir.mkdir();
}
File file = new File(UPLOAD_FOLODE + f.getOriginalFilename());
f.transferTo(file);
}
}

Interceptor

springboot定义了HandlerInterceptor接口来实现自定义拦截器的功能

HandleInterceptor接口定义了preHandle,postHandle,afterComletion三种方法,通过重写这三种方法实现请求前、请求后等操作

1
2
3
4
5
6
7
@Configuration
public calss WebConfigure implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginInterceptor()).addPatterns("/user/**");
}
}
1
2
3
4
5
6
7
8
9
10
public class LoginInterceptor extends HandleInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception {
if(条件) {
return true;
}else {
return false;
}
}
}

状态码

http定义了40个标准状态码,可用于传达客户端请求的结果。分为五个类别

  • 1xx:信息,通信传输协议级信息
  • 2xx:成功,表示客户端的请求已成功接受
  • 3xx:重定向,表示客户端必须执行一些其他操作才能完成其请求
  • 4xx:客户端错误,此类错误状态码指向客户端
  • 5xx:服务器错误,服务器负责编写错误代码

RESTful API

  • @GetMapping:处理get请求,获取资源
  • @PostMapping:处理post请求,新增资源
  • @PutMapping:处理put请求,更新资源
  • @DeleteMapping:处理delete请求,删除资源
  • @PatchMapping:处理patch请求,用于部分更新资源

@PathVariable

和动态路由有关,动态路由是传的参数写在路径后面并且用”/“连接

用”/“连接必须要用此注解才能获取到参数值


mybatis-plus实现分页

创建配置类,实现分页拦截插件

1
2
3
4
5
6
7
8
9
10
@Configuration
public class MyBatisPlusConfig {
@Bean
public MybaitsPlusInterceptor paginationInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
PaginationInterceptor paginationInterceptor = new PaginationInterceptor(DBType.MYSQL);
Interceptor.addINnerInterceptor(paginationInterceptor);
return interceptor;
}
}