SpringBoot Web开发----请求参数处理

请求参数处理

请求映射与Rest原理

在这里插入图片描述

  • xxxMapping;
  • Rest风格
    以前
    /getUser 获取用户
    /deleteUser 删除用户
    /editUser 修改用户
    /saveUser 保存用户
    现在
    /user
    GET-获取用户
    DELETE-删除用户
    PUT-修改用户
    POST-保存用户
    我们先写一个简单的映射请求

controller包里的:

@RestController
public class HelloController {
	@RequestMapping(value = "/user",method = RequestMethod.GET)
	 public String getUser(){
	     return "GET-张三";
	 }
	 @RequestMapping(value = "/user",method = RequestMethod.POST)
	 public String saveUser(){
	     return "POST-张三";
	 }
	 @RequestMapping(value = "/user",method = RequestMethod.PUT)
	 public String putUser(){
	     return "PUT-张三";
	 }
	 @RequestMapping(value = "/user",method = RequestMethod.DELETE)
	 public String deleteUser(){
	     return "DELETE-张三";
	 }
}

index.html里面写一个简单的表单提交:

	<form action="/user" method="get">
        <input type="submit" value="REST-GET">
    </form>
    <form action="/user" method="post">
        <input type="submit" value="REST-POST">
    </form>
    <form action="/user" method="put">
        <input type="submit" value="REST-PUT">
    </form>
    <form action="/user" method="delete">
        <input type="submit" value="REST-DELETE">
    </form>
    <hr>

项目启动后:

在这里插入图片描述

当我门去点击各自的表单提交时,会发现put和delete的方法没有返回我们预期的结果
当我们点击REST-GET时,返回 GET-张三
当我们点击REST-POST时,返回 POST-张三
当我们点击REST-PUT时,返回 GET-张三
当我们点击REST-DELETE时,返回 GET-张三
原因是我们在SpringBoot的表单提交里写的不支持put和delete方法,默认会返回get

在这里插入图片描述

解决方法:
1.index.html 在form表单里先去修改代码

原来的代码:

	<form action="/user" method="put">
        <input type="submit" value="REST-PUT">
    </form>
    <form action="/user" method="delete">
        <input type="submit" value="REST-DELETE">
    </form>

修改后的代码:

	<form action="/user" method="post">
		<!-- 将post隐藏起来,真正的指向的方法是put -->
        <input type="hidden" name="_method" value="put">
        <input type="submit" value="REST-PUT">
    </form>
    <form action="/user" method="post">
    	<!-- 将post隐藏起来,真正的指向的方法是delete-->
        <input type="hidden" name="_method" value="delete">
        <input type="submit" value="REST-DELETE">
    </form>

2.而我们想要使用REST风格,就得在SpringBoot中手动开启(yml文件中进行配置)
开启页面表单的Rest功能(选择性开启,前后端分离要使用)

spring:
	mvc:
	 hiddenmetnod:
	  filter:
	   enable: true

然后再次启动项目,去点击表单提交:
当我们点击REST-GET时,返回 GET-张三
当我们点击REST-POST时,返回 POST-张三
当我们点击REST-PUT时,返回 PUT-张三
当我们点击REST-DELETE时,返回 DELETE-张三
此时我们的put和delete就可以使用了.

表单提交要带上_method=真正请求的参数
请求过来被 HiddenHttpMethodFilter拦截,

1.请求是否正常,并且是POST方式,正常的话获取到_method的值
在这里插入图片描述2.兼容以下请求:put,delete,patch
3.原生Request是POST方式,包装模式RequesWrapper重写了getMethod方法.返回的是传入的值(_method)
4.过滤器放行的是wrapper。以后的方法调用getMethod是调用的requesWrapper

Rest使用客户端工具

  • 如PostMan直接发送put,delete等方式,无需Filter

SpringMVC里面派生了一些新的注解,大大简化了上述controller里面的代码

@RequestMapping(value = "/user",method = RequestMethod.GET)
相当于  @GetMapping("/user")
@RequestMapping(value = "/user",method = RequestMethod.POST)
相当于  @PostMapping("/user")
@RequestMapping(value = "/user",method = RequestMethod.PUT)
相当于  @PutMapping("/user")
@RequestMapping(value = "/user",method = RequestMethod.DELETE)
相当于  @DeleteMapping("/user")
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

感冒不能喝咖啡!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值