Spring MVC中的四种提交方式 GET、POST、PUT和DELETE

1.REST风格
  具体说,就是HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:
  GET用来获取资源;
  POST用来新建资源;
  PUT用来更新资源;
  DELETE 用来删除资源。

2.配置文件
  由于浏览器只支持POST和GET方法,因此需要使用_method隐藏字段通知Spring这是一个PUT/DELETE请求。
  为此,Spring3.0增加了一个过滤器,可以将这些请求转换为标准的http方法,使得支持GET、POST、PUT与DELETE请求,该过滤器是HiddenHttpMethodFilter。
  因此,我们需要在web.xml文件中配置此过滤器。

web.xml


<filter>
<filter-name>HiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HiddenHttpMethodFilter</filter-name>
<servlet-name>springmvc</servlet-name>
</filter-mapping>

前后台代码
  完成配置后,就可以在对应页面使用我们的的四种提交方式进行前后台数据的交互了。
  前台提交数据:

GET
<form action="/method/get" method="GET">
<input type="submit" value="GET">

</form>
POST
<form action="/method/post" method="post">
<input type="hidden" name="_method" value="POST">
<input type="submit" value="POST">

</form>

deteletd
<form action="/method/test" method="post">
<input type="hidden" name="_method" value="DELETE">
<input type="submit" value="删除">

</form>
put
<form action="/method/test2" method="post">
<input type="hidden" name="_method" value="PUT">
<input type="submit" value="put">

</form>

后台接收数据:重定向就是重新换个网址重新发送请求

@RequestMapping(value="/method/get",method=RequestMethod.GET)
public String GET(){
System.out.println("GET");
return "redirect:/test";
}
@RequestMapping(value="/method/post",method=RequestMethod.POST)
public String POST(){
System.out.println("POST");
return "redirect:/test";
}

DELETE PUT 不能直接跳转,需要重定向
@RequestMapping(value="/method/test",method=RequestMethod.DELETE)
public String DELETE(){
System.out.println("DELETE");
return "redirect:/test";
}

@GetMapping("/test")
public String redirecttest(){
return "test";
}

@RequestMapping(value="/method/test2",method=RequestMethod.PUT)
public String PUT(){
System.out.println("PUT");
return "redirect:/test2";
}
@GetMapping("/test2")
public String redirecttest2(){
return "test2";
}

其中get和post方法是html中自带的,但是不支持PUT和DELETE方法,所以需要通过POST方法模拟这两种方法,需要在表单中添加一个隐藏域,名为_method,值为PUT或DELETE。即如下代码:


<input type="hidden" name="_method" value="PUT/DELETE">

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容