markdown
### 简述
```text
MVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分
M:Model,模型层,指工程中的JavaBean,作用是处理数据
V:View,视图层,指工程中的html或jsp等页面,作用是与用户进行交互,展示数据
C:Controller,控制层,指工程中的servlet,作用是接收请求和响应浏览器
```
```text
表述层各细分领域需要解决的问题全方位覆盖,提供全面解决方案
基于原生的Servlet,通过了功能强大的前端控制器DispatcherServlet,对请求和响应进行统一处理
```
### 注解
```text
@RequestMapping
标识一个类:设置映射请求的请求路径的初始信息
标识一个方法:设置映射请求请求路径的具体信息
#method派生的类
处理get请求的映射-->@GetMappingGET 用来获取资源
处理post请求的映射-->@PostMapping 用来新建资源
处理put请求的映射-->@PutMapping 用来更新资源
处理delete请求的映射-->@DeleteMapping 用来删除资源
但是目前浏览器只支持get和post
@RestController注解是springMVC提供的一个复合注解,标识在控制器的类上,
就相当于为类添加了@Controller注解,并且为其中的每个方法添加了@ResponseBody注解
```
```text
#param
"param":要求请求映射所匹配的请求必须携带param请求参数
"!param":要求请求映射所匹配的请求必须不能携带param请求参数
"param=value":要求请求映射所匹配的请求必须携带param请求参数且param=value
"param!=value":要求请求映射所匹配的请求必须携带param请求参数但是param!=value
```
### 通配符
```text
?:表示任意的单个字符
*:表示任意的0个或多个字符
\**:表示任意的一层或多层目录 -- 在使用\**时,只能使用/**/xxx的方式
```
### 获取请求的方法参数
```text
@RequestMapping("/{id}/{username}")
#@RequestBody可以获取请求体
public String testRest(@PathVariable("id") String id,
@PathVariable("username") String username){
System.out.println("id:"+id+",username:"+username);
return "id " + id + " username " + username;
}
@RequestMapping("/")
public String testRest(@RequestParam(value = "id",required = false) String id,
@RequestParam(value = "username") String username,
@RequestHeader(value = "host") String host){
return "id " + id + " username " + username + " host " + host;
}
#@CookieValue同上
#RequestEntity封装请求报文的一种类型,需要在控制器方法的形参中设置该类型的形参,当前请求的请求报
文就会赋值给该形参,可以通过getHeaders()获取请求头信息,通过getBody()获取请求体信息
#可以在控制器方法的形参位置设置一个实体类类型的形参,此时若浏览器传输的请求参数的参数
名和实体类中的属性名一致,那么请求参数就会为此属性赋值
```
```text
#用于标识一个控制器方法,可以将该方法的返回值直接作为响应报文的响应体响应到浏览器
@RequestMapping("/info")
@ResponseBody
public Information testResponseUser(){
return new Information(1001,"admin","123456");
}
```
### 异常处理
```text
#标注在异常处理的类上
@ControllerAdvice
#标注在异常处理的方法上
@ExceptionHandler(异常类.class)
```
### SpringMVC常用组件
```text
DispatcherServlet:前端控制器,不需要工程师开发,由框架提供
统一处理请求和响应,整个流程控制的中心,由它调用其它组件处理用户的请求
HandlerMapping:处理器映射器,不需要工程师开发,由框架提供
根据请求的url、method等信息查找Handler,即控制器方法
Handler:处理器,需要工程师开发
在DispatcherServlet的控制下Handler对具体的用户请求进行处理
HandlerAdapter:处理器适配器,不需要工程师开发,由框架提供
通过HandlerAdapter对处理器(控制器方法)进行执行
ViewResolver:视图解析器,不需要工程师开发,由框架提供
进行视图解析,得到相应的视图,例如:ThymeleafView、InternalResourceView、RedirectView
View:视图
将模型数据通过页面展示给用户
```
*
*[返回教程主页](https://www.monody.net/p/blog-page_3.html)*
*
评论