文章目录
- SpringMVC的请求与响应(GET、POST、RESTful)
- 一、SpringMVC响应
- 1、简介
- 2、代码案例
- 2、注解
- 二、SpringMVC请求
- 三、GET请求获取
- 1、GET请求格式
- 2、注意事项
- 3、代码案例
- 4、常见报错
- 四、POST请求提交
- 1、POST请求格式
- 2、执行过程
- 3、代码案例
- 4、注解
- 五、RESTful风格请求
- 1、RESTful风格格式
- 2、四种基本请求形式
- 3、注解
- 4、RESTful访问要求
- 5、代码案例
- 5.1、GET
- 5.2、POST
- 5.3、PUT
- 5.4、DELETE
- 六、JSON数据
- 1、配置pom.xml
- 2、SpringMVC配置文件
- 3、注解@RequestBody
SpringMVC的请求与响应(GET、POST、RESTful)
一、SpringMVC响应
1、简介
- 响应就是返回数据
- 响应页面:@Controller @RequestMapping
- 响应文本:@Controller @RequestMapping @ResponseBody 或 @RestController @RequestMapping
2、代码案例
/**
* 作者:沈公子
* 日期:2022/7/18 - 12:03
* 需求:Spring MVC的角色,给出响应,C控制器
*
*/
// 标记这个类是控制器,接受请求,响应JSON串
@RestController
// 规定浏览器url访问路径,严格区分大小写,不能存在相同的路径名,可以加 / ,也可以不加 /
@RequestMapping("/test")
public class HelloController {
@RequestMapping("get")
public String show() {
// 得到数据:123
// 访问数据:http://localhost:8080/car/get
// 规定浏览器url访问路径,严格区分大小写
// 字符串
return "123";
}
}
2、注解
- @RestController
- 只能标记类
- 标记某个类是控制器
- 接受请求
- 给出响应
- @RestController = @Controller + @ResponseBody
- @Controller
- 标识类为控制器
- @ResponseBody
- 接受请求,响应JSON串
二、SpringMVC请求
- 请求就是向服务器发起请求操作,然后服务器会响应数据给浏览器
- 常用的请求方式有get、post、RESTful
三、GET请求获取
1、GET请求格式
- get:http://localhost:8080/test/one?id=1&name=张三&age=20
2、注意事项
- 方法中定义的参数就是url地址。
- 方法中的参数类型和名称规定了地址栏输入类型和名称,地址栏和参数数量可以不一致,可以改变顺序,八大基本数据类型除外。
- 参数中有八大基本数据类型,类型和名称一致,地址栏和参数数量一致,不能改变顺序,尽量使用引用类型。
- 方法中参数过多的情况下,可以将参数封装成对象,使用对象接受参数,框架会自动封装属性的值,类型和名称一致,地址栏和参数数量可以不一致,可以改变顺序。
- 总结:使用引用类型,按照正常顺序来
3、代码案例
<a th:href="@{/test/get}">get请求</a><br>
// 标记这个类是控制器
@Controller
// 规定浏览器url访问路径,严格区分大小写,不能存在相同的路径名,可以加 / ,也可以不加 /
@RequestMapping("/test")
public class HelloController {
@RequestMapping("get")
@ResponseBody // 接受请求,响应JSON串
public String show() {
return "123";
}
}
4、常见报错
- 404:找不到资源
- 400:参数类型不匹配
- 500:服务器代码错误,IDEA会抛出异常
四、POST请求提交
1、POST请求格式
- post:地址栏无法看到路径
- post请求需求一个表单,表单提交常用post请求,常用于添加数据
2、执行过程
填写内容 -> 提交 -> action=“http://localhost:8080/test/post” -> 找到后台 -> 封装数据set -> 获取数据get -> JDBC操作数据库
3、代码案例
<!--post提交-->
<form th:action="@{/test/post}" method="post">
用户名:<input type="text" name="username">
<input type="submit" value="添加信息">
</form>
<!--post提交文件-->
<form th:action="@{/test/up}" method="post" enctype="multipart/form-data">
头像:<input type="file" name="photo"><br>
<input type="submit" value="上传">
</form>
@Controller
@ResponseBody
@RequestMapping("/test")
public class HelloController {
@RequestMapping("post")
// @RequestParam:绑定形参的名字和请求参数的名字一致
public String show(@RequestParam("username")String name) {
return "用户名:"+name;
}
}
4、注解
- @RequestParam:绑定形参(后端)的名字和请求参数(前端)的名字一致
五、RESTful风格请求
1、RESTful风格格式
http://localhost:8080/username/password/age http://localhost:8080/张三/123123/20
2、四种基本请求形式
- GET:查询
- POST:新增
- PUT:更新
- DELETE:删除
3、注解
- @PathVariable
- 在参数中使用
- 与 @RequestMapping 搭配使用,映射路径
例:{id} 对应 @PathVariable Integer id
4、RESTful访问要求
- 在同一个地址下,通过不同的请求方法来决定哪个访问行为
- 通过请求方式决定访问的资源
5、代码案例
5.1、GET
<a th:href="@{/user}">查询所有的用户信息</a><br>
@RestController
public class Test(){
@GetMapping("/user")
public String getAllUser() {
System.out.println("查询所有用户信息 --> /user --> get");
return "success";
}
}
5.2、POST
<form th:action="@{/user}" method="post">
<input type="submit" value="添加用户信息">
</form>
@RestController
public class Test(){
@PostMapping("/user")
public String insertUser() {
System.out.println("添加用户信息 --> /user --> post");
return "success";
}
}
5.3、PUT
<form th:action="@{/user}" method="post">
<!--用来转换请求方式的,hidden隐藏域,_method必须这么写,put请求方式-->
<input type="hidden" name="_method" value="put">
<input type="submit" value="修改用户信息">
</form>
@RestController
public class Test(){
@PutMapping("/user")
public String updateUser() {
System.out.println("修改用户信息 --> /user --> put");
return "success";
}
}
5.4、DELETE
<form th:action="@{/user/1}" method="post">
<!--用来转换请求方式的,hidden隐藏域,_method必须这么写,delete请求方式-->
<input type="hidden" name="_method" value="delete">
<input type="submit" value="删除用户信息">
</form>
@RestController
public class Test(){
@DeleteMapping("/user/{id}")
public String deleteUser(@PathVariable("id") Integer id) {
System.out.println("删除用户信息 --> /user/" + id + " --> delete");
return "success";
}
}
六、JSON数据
1、配置pom.xml
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.3</version>
</dependency>
2、SpringMVC配置文件
- @EnableWebMvc // 开启MVC驱动,json数据转换成对象(java配置)
- <mvc:annotation-driven /> // 开启MVC驱动,json数据转换成对象(xml配置)
3、注解@RequestBody
- @RequestBody:将请求体中的内容和控制器方法的形参进行绑定,常用于JSON数据,json->java