SpringMVC

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)*

*

评论