架构
- B/S架构
- 三层架构
- 表现层(Web)解析请求 构造响应 xxController
- 表现层一般使用MVC模式
- Controller
- Model
- View
- 表现层一般使用MVC模式
- 业务层(Service)处理业务逻辑 xxService
- 持久层(Dao)与数据库交互 xxRepository
- 表现层(Web)解析请求 构造响应 xxController
- Spring MVC特点
- 与spring框架天然集成
- 注解驱动
- 易于扩展
- 支持RESTful风格
Spring MVC的使用
start.spring.io
- graddle project
- java
- 默认(2.3.5)
- dependencies
- spring web
- generate
汽车管理系统v1之知识点
- 请求映射
- @Controller 声明Controller类
- @RequestMapping类 声明请求处理方法,将HTTP请求映射到Controller方法
- value = “/cars”
- path = “/cars”
- 多个路径映射到同一方法
- value = {"/cars", “/vehicles”}
- 多个请求方式映射到同一方法
- @ResquestMapping(value= “/cars”, method = {RequestMethod.GET, RequestMethod.POST})
- @RequestMapping("/cars")
- @ResponseBody 将方法返回值视为HTTP响应体,框架自动序列化成JSON
- @RequestBody 将HTTP请求映射成一个对象,框架自动从JSON解析
- @ResponseStatus 设置响应码
汽车管理系统v2
- 根据Id查找汽车:GET http://localhost:8080/cars/1
- RequestMapping(value="/cars/{id}", method = RequestMethod.GET)
- public Car getCarByIdRestful(@PathVariable(“id”) Integer id)
- 将URL路径变量绑定到方法参数,提取的是路径
- @RequestMapping(value= “/cars/{id:[\d]+}”, method = RequestMethod.GET)
- 查找符合指定条件的汽车:GET http://localhost:8080/cars?color=red
- //GET /cars?color=red
- RequestParam(name = “color”, required = false)
- 将HTTP请求参数绑定到方法参数, 提取的是?后面的内容
- 属性别名
- (@RequestParam(“color” String color))
- (@RequestParam(value = “color”) String color)
- (@RequestParam(name = “color”) String color)
- (@RequestParam String color)
- 可选参数
- (@RequestParam(value=“color”, required = false) String color)
- (@RequestParam(value=“color”) Optional color)
- 设置默认值
- (@RequestParam(value=“color”, defaultValues = “red”) String colors)
- 将所有参数封装进Map
- (@RequestParam Map<String, String> allParams)
- 绑定多值参数
- (@RequestParam(value=“colors”) List color)
- 绑定表单参数和文件
- @RequestHeader
- @CookieValue
汽车管理系统V3
- @GetMapping
- @PostMapping
- @RestController
- @Controller
- @ResponseBody
- 可以放在Controller类上,对所有方法生效
- @RequestMapping
- 可以放在Controller类上,为所有方法提供路径前缀
- 变体
- @GetMapping
- @PostMapping
- @PutMapping
- @DeleteMapping
- @PatchMapping
- 请求映射
- @Controller
- @RequestMapping
- @ResponseBody
- @RequestBody
- ResponseStatus
- 参数绑定
- @RequestParam
- @PathVariable
- @RequestHeader
- @CookieValue
- 快捷方式
- @RestController
- @GetMapping
- @PostMapping
Spring MVC错误处理
汽车管理系统V4
- 查找汽车时查找不到怎么办?
- @ControllerAdvice
- @ExceptionHandler(CarNotFoundException.class)
- 异常处理方式一:ResponseStatusException
- 异常处理方式二
- @ControllerAdvice + @ExceptionHandler
- 其他异常处理方式
- Controller Level @ExceptionHandler
- 只能在Controller内部处理异常,过时
- HandlerExceptionResolver
- 不能设置响应体,过时
- DefaultErrorAttributes + BasicErrorController
- Spring Boot 所支持,使用场景少
- Controller Level @ExceptionHandler
Spring MVC参数校验
汽车管理系统v5
-
添加汽车时进行参数校验
-
查找汽车时进行参数校验
-
方式一
- @Valid
-
校验注解
-
implementation 'org.springframework.boot:spring-boot-starter-validation'