SpringMVC
底层是servlet
特点
- 轻量级
- 基于spring
MVC
- Model:数据模型层,连接数据库,控制数据持久化
- View:视图层,用于前端展示
- Controller:控制层,用于接收请求调用后端服务进行业务处理
DispatchServlet
适配器模式
用于进行调度,处理请求分发,将不同的请求分发到不同的servlet。
spring-mvc配置文件
正式环境中使用注解只需配置视图解析器,开启drivern即可
-
配置处理器映射器
常用:BeanNameUrlHandlermapping
根据请求url找到处理该请求的controller
-
配置处理器适配器
SimpleControllerHandlerAdapter
到对应的controller执行业务逻辑
-
配置视图解析器
处理返回的ModleAndView进行页面跳转
一次请求的处理
- 前端访问url,提交请求到后台
- dispatchServlet拦截请求进行处理,交给HandlerMapping将url与controller进行匹配
- 将请求交给HandlerAdapter到对应的controller进行处理。
- 将处理结果ModelAndView交给视图解析器进行解析
- 将发挥结果返回到前端
注解
-
@controller
作用和实现controller接口相同,定义一个控制器方法返回是String,都会被视图解析器解析
-
@ResponseBody
用于向前端传递字符串数据,在方法前添加该注解,返回值不经过视图解析器解析。
-
@RestConntroller
相当于@Controller和@ResponseBody注解的结合,可以省略@ResponseBody
-
@RequestMapping
设置真实的访问地址,将url和对应的controller方法对应,可以设置url和请求方法【post,get,delete】
GetMapping :请求方式为get
PostMapping :请求方式为post
PutMapping :请求方式为put
PatchMapping:请求方式为patch
-
@PahtVariable
路径变量,用于前端将数据通过url传递到controller
-
@RequestParam
匹配前端传过来的参数名
拦截器
AOP思想的实现
拦截器和过滤器的区别
截器指挥拦截访问controller的请求,过滤器会拦截所有请求
拦截器自带静态资源过滤,效率更高
拦截器触发时机是请求controller方法之前,过滤器触发时机是在请求进入servlet之前
拦截器可以使用spring中的任何资源
使用
实现HandlerInterceptor三个方法
- preHandle:处理前
- postHandle:处理后
- afterHadle:清理后
RESTFUL
一种涉及风格
URL和URI
URI包括URL和URN
所有的URL都是URI
使用restful api的好处
只需要注意资源在互联网中的位置
使用http method方法进行规范,简单易懂
使用http method方法方便进行权限控制处理
使用URI【统一资源定位符】确定资源(不含资源类型后缀)
常用的http动词
GET:取出资源(一个或多个)
POST:新建一个资源
PUT:更新资源(客户端提供完整资源属性)
PATCH:更新资源(客户端提供部分资源属性)
DELETE:删除资源
不常用的http动词
HEAD:获取资源元数据
OPTIONS:获取信息
示例
http://localhost:8080/test/add?a=1&b=2
http://localhost:8080/test/add/1/2