Spring MVC的常用注解和用法(一)

目录

[一·前言:什么是Spring Web MVC](#一·前言:什么是Spring Web MVC)

二·MVC与三层架构

2.1MVC定义

[2.2Spring MVC 与Spring Boot的关系](#2.2Spring MVC 与Spring Boot的关系)

[2.3MVC 与三层框架](#2.3MVC 与三层框架)

三·常见的注解以及使用方法

3.1@Controller

3.2@RestController

3.3@RequestMapping

四·请求参数接收

4.1传递单个参数

4.2传递多个参数

4.3传递对象

4.4@RequestParam:后端参数重命名


一·前言:什么是Spring Web MVC

Spring Web MVC是基于Servlet API构建的原始Web框架,从一开始就包含在Spring框架中。

MVC:是一种软件架构设计模式;Web框架:用于处理浏览器与Java程序之间的交互。

二·MVC与三层架构

2.1MVC定义

MVC(Model View Controller),把软件系统分为三个基本部分:

View(视图):与浏览器交互,展示数据。

Model(模型):处理业务逻辑和数据

Cotroller(控制器):接收请求,选择模型处理,并决定返回哪个视图

这是MVC的定义

2.2Spring MVC 与Spring Boot的关系

Spring Boot只是实现Spring MVC 的一种方式。Spring Boot 可以添加很多依赖,借助这些依赖实现不同功能,Spring MVC就包含其中,实现Web功能。

这是Spring 实现的MVC

2.3MVC 与三层框架

目前主流的开发方式是前后端分离,对于Java后端开发,通常把整体架构分为三层:

表现层:展示数据结果和接收用户指令。

业务逻辑层:处理业务逻辑。

数据层:存储和管理数据。

在Spring中对应为:

Controller:控制层,接收前端请求,并处理响应数据。

Service:业务逻辑层,处理具体业务逻辑

Dao:数据访问层,负责数据的增删改查。

Model:实体类

MVC中,视图和控制器合起来:对应三层架构中的表现层;模型:对应业务逻辑层,数据层以及实体类。为了解耦分层和代码复用。

三·常见的注解以及使用方法

3.1@Controller

@Controller 用于定义一个控制器,Spring框架启动时加载,并把对象交给Spring管理。

在默认情况下,@Controller返回的是视图

返回的是/hello.html,Spring MVC 会把它当作视图名称,去查找对应的静态页面

3.2@RestController

@RestController 是@Controller 和 @ResponseBody的组合注解

@RestController表示该类中所有方法返回的都是数据,而不是视图

3.3@RequestMapping

@RequestMapping是用来注册接口的路由映射,它既可以修饰类,也可以修饰方法。

访问地址:类路径+方法路径

在类上面修饰的是类路径,在方法上面的是方法路径,第一个参数value就是路径。

常用属性有value,method,params,headers,consumes,produces

四·请求参数接收

访问不同的路径就是发送不同的请求。发送请求时可能会带参数。

4.1传递单个参数

通过浏览器访问,网址输入http://127.0.0.1:8080/Hello/Name?name=MVC

输出:

Spring MVC 会根据方法参数名,找到对应请求参数并赋值。

如果参数名不一致:http://127.0.0.1:8080/Hello/Name?name1=MVC

注意:1.使用基本类型接收参数时,参数必须传(初boolean类型),否则会报500错误

2.类型不匹配时,会报400错误

对于参数可能为空的数据,建议使用包装类型。

4.2传递多个参数

多个参数可以使用多个形参接收。

访问:http://127.0.0.1:8080/Hello/Age?name=zhangsan&age=18

4.3传递对象

当参数太多,可以封装为对象,Spring MVC 会自动实现对象参数的赋值

访问:http://127.0.0.1:8080/Hello/Person1?id=1&name=zhangsan&age=18

Spring会根据参数名称自动绑定到对象的各个属性上,如果某个属性未传递,则赋值为null;基本类型则赋值为默认初值。

4.4@RequestParam:后端参数重命名

前端传递的key和后端接收的key可以不一致,可以用@RequestParam来重命名前后端的参数值。

访问: http://127.0.0.1:8080/Hello/name?a=zhangsan

注意:1.使用@RequestParam进行参数重命名时,请求参数只能和@RequestParam声明的名称一致,才能进行参数绑定和赋值。

2.使用@RequestParam进行参数重命名时,参数默认变成必传参数

当然可以修改@RequestParam的属性required为false,变成非必传

相关推荐
晴空蓝天1 小时前
Spring Boot 3.5 脚手架里的 JWT + Redis 双轨会话,双端 token 隔离我是这么设计的
java·spring boot·redis
IT枫斗者枫哥1 小时前
MyBatis 列表查询优化:一页20条数据,21次SQL改成2次
java
君顾11 小时前
本地电竞服务交易系统架构设计与实战:从同城服务撮合到订单履约
java·开发语言·电竞
小刘在重生~1 小时前
十六(3)、《集合扩充》CopyOnWriteArrayList 超详细解析(线程安全集合)
java·笔记·面试·职场和发展
逆境不可逃1 小时前
Pi Agent 学习笔记:对话怎样保存、分支与恢复
java
huaweichenai2 小时前
spring boot使用hutool实现调用外部接口
java·spring boot
泡海椒2 小时前
Java 后端最优 PDF 导出方案:jquick-pdf 项目引入与快速测试
java·开发语言·pdf
阿飞7662 小时前
订单超时自动关单:RabbitMQ 延迟队列 + 定时任务"双保险"实践
java
二炮手亮子2 小时前
使用云服务+hermes+mino模型 我用微信操控服务器自己编程并部署实操
java·语言模型·ai编程