Springmvc进阶

RESTful风格
概念
传统url设计风格
保存品牌:/brand/save
修改品牌:/brand/update
删除1号品牌:/brand/delete?id=1
查询1号品牌:/brand/select?id=1
常见HTTP请求方式
GET:查询
POST:保存
PUT:修改
DELETE:删除
restful设计风格【最终版】
保存品牌:/brand+POST
修改品牌:/brand+PUT
删除1号品牌:/brand/1+DELETE
查询1号品牌:/brand/1+GET
路径参数
@PathVariable
@GetMapping(“/brand/{currentPage}/{pageSize}”) //例如:访问路径: /brand/1/5
public String selectByPage(@PathViriable Integer currentPage,
@PathViriable Integer pageSize){…}
衍生注解
@GetMapping:发送GET请求访问
@PostMapping:发送POST请求访问
@PutMapping:发送PUT请求访问
@DeleteMapping:发送DELETE请求访问

参数校验
第一步,添加依赖
Springmvc进阶_第1张图片
第二步,添加校验规则
Springmvc进阶_第2张图片

第三步,在Controller方法中使用@Valid开启校验,使用BindingResult获取校验结果
Springmvc进阶_第3张图片
文件上传
单文件上传
Springmvc进阶_第4张图片
多文件上传
Springmvc进阶_第5张图片
统一响应结果
响应状态码和响应头
@ResponseStatus:描述状态码
Springmvc进阶_第6张图片

ResponseEntity:响应实体对象,封装状态码、响应头、响应体返回给客户端。
Springmvc进阶_第7张图片

自定义Result封装响应结果
【第一步】定义Result类
Springmvc进阶_第8张图片

【第二步】将Controller方法的返回值统一指定为Result类型
Springmvc进阶_第9张图片
全局异常处理
定义全局异常处理器并使用
作用:将项目中的代码异常统一处理,将来dao层将异常抛到service层,service层将异常抛到controller层,controller层将异常抛到异常处理。
Springmvc进阶_第10张图片

自定义异常并使用
【第一步】定义类继承RuntimException
在这里插入图片描述

【第二步】在需要的地方抛出自定义异常

Springmvc进阶_第11张图片

【第三步】在全局的异常处理器中定义方法,处理自定义异常
Springmvc进阶_第12张图片

定义拦截器并使用
作用:springmvc提供的一种拦截Controller方法的机制,底层采用的是AOP技术,可以对controller层方法进行增强。

【第一步】定义一个类型实现HandlerInterceptor接口,重写需要的方法。

Springmvc进阶_第13张图片

【第二步】让引导类实现WebMvcConfigurer接口,重写addInterceptors方法,在方法内部定义拦截路径。
Springmvc进阶_第14张图片
拦截器实现登录验证
Springmvc进阶_第15张图片
拦截器和过滤器的区别
归属不同: Filter属于Servlet技术,Interceptor属于SpringMVC技术
拦截内容不同: Filter是拦截请求和响应的,Interceptor拦截访问处理器中的方法,也就是拦截Controller中的方法调用。
执行顺序不同:先执行过滤器,后执行拦截器

springmvc执行流程
Springmvc进阶_第16张图片

你可能感兴趣的:(restful,java,http)