SpringMVC的请求与响应(GET、POST、RESTful)


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
    1. 只能标记类
    2. 标记某个类是控制器
    3. 接受请求
    4. 给出响应
    5. @RestController = @Controller + @ResponseBody
  • @Controller
    1. 标识类为控制器
  • @ResponseBody
    1. 接受请求,响应JSON串

二、SpringMVC请求

  • 请求就是向服务器发起请求操作,然后服务器会响应数据给浏览器
  • 常用的请求方式有get、post、RESTful

三、GET请求获取

1、GET请求格式

  • get:http://localhost:8080/test/one?id=1&name=张三&age=20

2、注意事项

  1. 方法中定义的参数就是url地址。
  2. 方法中的参数类型和名称规定了地址栏输入类型和名称,地址栏和参数数量可以不一致,可以改变顺序,八大基本数据类型除外。
  3. 参数中有八大基本数据类型,类型和名称一致,地址栏和参数数量一致,不能改变顺序,尽量使用引用类型。
  4. 方法中参数过多的情况下,可以将参数封装成对象,使用对象接受参数,框架会自动封装属性的值,类型和名称一致,地址栏和参数数量可以不一致,可以改变顺序。
  5. 总结:使用引用类型,按照正常顺序来

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、注解

  1. @PathVariable
    1. 在参数中使用
    2. 与 @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
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值