Spring MVC

架构
  • B/S架构
  • 三层架构
    • 表现层(Web)解析请求 构造响应 xxController
      • 表现层一般使用MVC模式
        • Controller
        • Model
        • View
    • 业务层(Service)处理业务逻辑 xxService
    • 持久层(Dao)与数据库交互 xxRepository
      服务器端三层架构
      表现层MVC模式
  • 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 所支持,使用场景少
Spring MVC参数校验
汽车管理系统v5
  • 添加汽车时进行参数校验

  • 查找汽车时进行参数校验

  • 方式一

    • @Valid
  • 校验注解
    校验注解

  • implementation 'org.springframework.boot:spring-boot-starter-validation'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值