一、SpringMVC简介
1.什么是MVC
Model:数据模型
View:视图
Controller:控制器

MVC是一种Web应用架构,是一种代码设计思想
思想:将所有客户端请求交由控制器,由控制器将其进行分发,并将结果响应给客户端。

2.常见MVC框架
使用原生Servlet实现MVC:

1
2
配置比较复杂
数据处理太麻烦

实际开发中一般都会使用MVC框架,如Struts1、Struts2、SpringMVC等

对比:

1
2
3
4
效率方面,Struts1>SpringMVC>Struts2
Struts2是多例的,效率低
Struts1和SpringMVC是单例的,两者效率差不多。
配置方面:SpringMVC>Struts2>Struts1

3.为什么使用SpringMVC

1
2
3
4
使用注解来替代xml配置,更简单
是单例的,效率高
用户可以自定义,扩展性好
SpringMVC和Spring无缝衔接

二、SpringMVC实现原理

DispatcherServlet
SpringMVC核心控制器(前端控制器):主要是用来分发请求的

HandlerMapping
映射处理器:根据请求的url来映射查找到对应的Handler

Handler就是Controller层的实现类
HandlerAdapter
适配器:用来适配不同的处理器Handler
处理器有两种实现方式:实现接口、基于注解,所以执行前需要先适配

Handler
处理器:真正用来处理和执行业务,并产生数据模型Model和视图View,
Handler会将Model和View封装成ModelAndView对象并返回。

ViewResolver
视图解析器:根据视图名称解析成具体的视图,一般多为jsp页面,然后把它封装成View对象并返回。

三、RestFul 风格

RestFul 只是一种风格,基于这个风格设计的程序可以更简洁,有层次,更易于实现缓存等机制, 他实现了请求相同的路径而产生不同的逻辑的效果, 实现了 URL 复用

一般基于数据增删改查发出的请求,是通过==区分不同的路径==达到 CRUD 的效果,例如:

1
2
localhost:8080/dropUser?id=1		删除用户
localhost:8080/finduser?id=1 查询用户

而 RestFul 是通过==区分请求的方法==达到 CRUD 的效果,例如

1
2
localhost:8080/user?id=1	删除用户	发出DELETE请求
localhost:8080/user?id=1 查询用户 发出GET请求

在 RestFul 中针对增删改查分别对应着四种请求方法

[ 添加: POST ][ 删除: DELETE ][ 修改: PUT ][ 查询: GET ]

针对区分四种请求的方法有两种手段:

1
2
3
4
5
6
7
8
9
10
11
通过 RequestMapping 中的 method 属性进行区分请求

// 仅接收以post方法发出的请求
@RequestMapping(value="/user", method = RequestMethod.POST)

通过每个方法对应的注解进行区分

@PostMapping
@DeleteMapping
@PutMapping
@GetMapping