目录
[一·前言:什么是Spring Web MVC](#一·前言:什么是Spring Web MVC)
[2.2Spring MVC 与Spring Boot的关系](#2.2Spring MVC 与Spring Boot的关系)
[2.3MVC 与三层框架](#2.3MVC 与三层框架)
一·前言:什么是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,变成非必传