一、个人理解
Controller为控制层,项目中业务处理的核心实现就在Controller。
二、知识引入
Spring Boot 整合了传统Web开发的mvc、json、tomcat等框架。
(1)json为JSON数据解析组件;
(2)tomact为自带容器依赖。
(3)mvc框架分为三层:model(模型层,处理数据)、controller(控制层,分发器,进行业务处理)、view(视图层,前端页面展示)。下图为mvc框架的工作流程:
2.1 控制器相关知识点
Spring Boot提供的控制器注解为 @Controller 和 @RestController ,用来标识此类负责接收和处理HTTP请求的。两者的区别为,@Controller用于页面和数据的请求;@RestContoller用于只有数据请求的。
2.2 @Controller用法
下图返回的TryControl为视图View和name的数据。@Controller通常和Thymeleaf模板结合使用。
2.3 @RestController用法
该注解将返回的对象数据转换为json格式。
2.4 路由映射 @RequestMapping
@RequestMapping用于负责URL路由映射,添加在Controller类或者具体方法上。其常用属性如下:
(1)value:表示请求url的路径;
其中的通配符匹配,*表示匹配任意字符,**表示匹配任意路径,?表示匹配单个字符。
(2)method:HTTP请求方法,例如post,get,put,delete;
(3)consumes:请求的媒体类型,例如application,json;
(4)produces:响应的媒体类型;
(5)params,headers:请求的参数以及请求头的值。
三、实践展示
在本机浏览器中输入localhost:8080/deliver?QQname=fire,表示访问的页面为deliver,前端传来的参数为QQname,其值为fire。
在本机浏览器中输入localhost:8080/deliver?QQname=fire&phone=123456,表示前端传来有两个参数分别是QQname和phone,若有多个参数,用&进行连接。
GET请求下的例子展示
(1)不带参数
(2)带参数
(3)@RequestParam强制访问时必须带参数
post请求下的例子,post不能直接使用浏览器地址栏访问域名,可下载软件apipost进行在线调试。
(1)不带参数
(2)带参数
参数在访问中:localhost:8080/postTest2?QQname=fire&phone=123
参数在请求体Body中:
(3)参数封装对象中
参数需要在请求body中,其中参数名name和phone必须要和java中的user类保持一致,才能自动匹配。
(4)处理json格式的参数
@RequestBody 用来处理content-type不是默认的application/x-www-form-urlcoded编码的内容,比如说:application/json或者是application/xml等。一般情况下来说常用其来处理application/json类型。
(5)通配符
四、完整代码
笔记来源于网课:【1天搞定SpringBoot+Vue全栈开发】 https://www.bilibili.com/video/BV1nV4y1s7ZN/?p=3&share_source=copy_web&vd_source=b1ffec0a9f36b67266f32b5098c702a3
感谢up主:刘老师教编程