Spring框架、03SpringMVC

SpringMVC

SpringMVC入门

介绍

SpringMVC将Servlet一些通用功能进行了抽取和封装,使用它之后,代码主要有两部分组成:

  • 前端控制器:由SpringMVC提供,主要负责接收参数和返回数据

  • 处理器:由程序员编写,主要负责参数的处理和业务层调用

案例

入门案例

需求

  • 发送一个请求name=张三&age=18,后台接收参数,封装一个User对象返回json数据

步骤分析

  1. 创建web工程,添加依赖

  2. 添加web环境的初始类和核心配置类

  3. 创建实体类

  4. 创建处理器

  5. 部署项目到Tomcat

入门案例工作流程分析

注解

@RequestMapping

  • 名称:@RequestMapping

  • 位置:方法 类

  • 范例:

  • 属性:

    1. value: 等同于path,用于为当前方法绑定访问路径

    2. method:用于限制请求类型,如果省略此选项,代表不对请求类型做限制

  • 注意:此注解也可以标注在类上,代表类中的所有方法都可以共用一段URL

@ResponseBody

  • 作用:将方法返回值直接响应,如果返回值类型是 实体对象/集合 ,将会转换为JSON格式响应

  • 位置:Controller方法上/类上(如果标在类上,代表类中所有方法上都生效)

  • 简化:@RestController = @Controller + @ResponseBody ;

postman

postman

  • Postman是一款功能强大的接口调试工具

接受请求参数

简单、对象类型

简单类型

  • 需要保证前端传递的参数名称跟方法的形参名称一致

对象类型

  • 需要保证前端传递的参数名称跟实体类的属性名称一致

数组、集合类型

数组类型

  • 需要保证前端传递的参数名称跟方法中的数组形参名称一致

日期类型

日期类型

  • 使用 @DateTimeFormat 注解完成日期参数格式转换

Json参数

JSON参数

  • SpringMVC也可以接收请求体中的json字符串为参数,并且自动封装为指定对象

  • 此时要求JSON数据键名与形参对象属性名相同,定义POJO类型形参即可接收参数,需要使用 @RequestBody 标识

路径参数

路径参数

  • springmvc还支持通过请求路径直接传递参数,后台使用{…}来标识该路径参数,需要使用 @PathVariable 获取

@RequestParam

  • 如果方法形参名称与请求参数名称不匹配,可以使用 @RequestParam 完成映射。

  • 使用@RequestParam还可以为参数设置默认值

注意事项

  • @RequestParam中的required属性默认为true,代表该请求参数必须传递,如果不传递将报错。

  • 如果该参数是可选的,可以将required属性设置为false。

统一异常处理

出现异常,该如何处理?

  • 方案一:在Controller的方法中进行try…catch处理。代码臃肿,不推荐

  • 方案二: 全局异常处理。简单、优雅、推荐

全局异常处理器

注意事项

  • @RestControllerAdvice 标注在类上,声明当前类是一个用于专门处理异常的类

  • @ExceptionHandler 标注在方法上,声明当前方法可以处理哪些异常

Restful

开发规范-Restful

  • REST是一种软件架构风格,其强调HTTP应当以资源为中心[在请求地址中尽量的不要出现动词]。

  • REST使用不同的请求方式表示不同的操作操作: GET(获取)、POST(新建)、PUT(更新)、DELETE(删除)

相关推荐

  1. Spring框架常见的注解SpringSpringMVC、SpringBoot)

    2024-07-21 13:24:01       42 阅读
  2. SpringMVC-03

    2024-07-21 13:24:01       45 阅读
  3. springmvc-03

    2024-07-21 13:24:01       18 阅读
  4. SpringMVC框架

    2024-07-21 13:24:01       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-21 13:24:01       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-21 13:24:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-21 13:24:01       45 阅读
  4. Python语言-面向对象

    2024-07-21 13:24:01       55 阅读

热门阅读

  1. 主页目录导航

    2024-07-21 13:24:01       19 阅读
  2. Mechanize:自动化Web交互的利器

    2024-07-21 13:24:01       19 阅读
  3. 增量预训练和微调的区别

    2024-07-21 13:24:01       18 阅读
  4. Allure 和 JUnit 4结合学习

    2024-07-21 13:24:01       18 阅读
  5. vue3 学习笔记17 -- echarts的使用

    2024-07-21 13:24:01       22 阅读
  6. GPT-5一年半后发布

    2024-07-21 13:24:01       17 阅读
  7. 批量下载网易云音乐歌单的Python脚本

    2024-07-21 13:24:01       21 阅读