打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
浅谈GET,POST,PUT发送请求

 一般我们在浏览器的地址栏输入网址回车后,发送的是GET请求

当用表单提交时(最普遍的是用户登录),我们可以指定是GET还是POST请求,这里需要注意的是有的浏览器并不支持PUT请求,那后台restful的PUT请求对应的方法岂不是不能用了

SpringMVC为我们提供了一种解决方案,

1
2
3
<form id="user" action="/springmvc/user" method="post"
    <input type="hidden" name="_method" value="put"/> 
</form>

我们还是用POST方式,但是我们添加了一个名为_method的隐藏域,并且值为put,同时需要在web.xml中添加一个Filter,如下:

1
2
3
4
5
6
7
8
<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>mcpMvc</servlet-name>
 </filter-mapping>

这样虽然发送的仍然是POST请求,但是该Filter会把其转成PUT请求这样就可以调用PUT相应的方法了

这样做的缺点是前端页面我们需要额外添加一个隐藏域什么的

下面结合springMVC探讨一下JQuery发送AJAX请求的一些事

一般我们发送请求的代码如下:

1
2
3
4
$.ajax({ 
        type : 'get'
        url : 'http://localhost/TestSpring3.2R/coc/body?name=tom'
    });
或者如下:
1
2
3
4
5
6
var mydata = {'name':'tom'};
$.ajax({ 
        type : 'get'
        url : 'http://localhost/TestSpring3.2R/coc/body',
        data : mydata      
    });
那么这2种有什么区别呢?

经试验发现对于GET和POST方式,这2中没什么差别

但是对于PUT,第一种的参数可以顺利传入,但是第二种的参数就不能接受了,那么我们怎么才能得到第二种方式所穿的参数呢?

这里我们可以使用@RequestBody

@RequestBody对于GET请求是没有意义的

对于POST请求,无论你是使用第一种方式还是第二种方式,异或是2种方式同时使用,他会把所有的参数当放到@RequestBody所对应的那个参数里,输出的结果类似:

1
id=ff&status=gg&name=ee

如果你要用到参数,你需要自己处理

对于PUT请求 @RequestBody所对应的那个参数的值就是通过第二种方式传进来来的值

------------------------------------我是分割线--------------------------------------

对于SpringMVC,它提供了MultiValueMap这个类,我们可以这样来接受参数

1
2
3
       @RequestMapping(value = "/", produces = "application/json;charset=UTF-8", method = RequestMethod.PUT)
    @ResponseBody
    public Map<String,Object> updateUser(@RequestBody MultiValueMap<String, String> valueMap){
他回把你传过来的参数,放到valueMap里,这个接口继承于Map<K, List<V>>,key就是传过来的参数名,value就是参数值,由于可能存在同名的参数,所以value的类型是List,这样我们就可以很方便的取得参数值了

来自:http://blog.csdn.net/mfe10714022/article/details/39692305
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
SpringMVC添加支持Http的delete、put请求
SpringMVC rest风格(Post增 Delete删 Put改 get查)
SpringMVC控制器接收不了PUT提交的参数的解决方案
Spring MVC过滤器-HiddenHttpMethodFilter
ajax 请求参数 springMVC入参
springMvc直接接收json数据自动转化为Map<String,String>
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服