- 浏览: 626376 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (819)
- java开发 (110)
- 数据库 (56)
- javascript (30)
- 生活、哲理 (17)
- jquery (36)
- 杂谈 (15)
- linux (62)
- spring (52)
- kafka (11)
- http协议 (22)
- 架构 (18)
- ZooKeeper (18)
- eclipse (13)
- ngork (2)
- dubbo框架 (6)
- Mybatis (9)
- 缓存 (28)
- maven (20)
- MongoDB (3)
- 设计模式 (3)
- shiro (10)
- taokeeper (1)
- 锁和多线程 (3)
- Tomcat7集群 (12)
- Nginx (34)
- nodejs (1)
- MDC (1)
- Netty (7)
- solr (15)
- JSON (8)
- rabbitmq (32)
- disconf (7)
- PowerDesigne (0)
- Spring Boot (31)
- 日志系统 (6)
- erlang (2)
- Swagger (3)
- 测试工具 (3)
- docker (17)
- ELK (2)
- TCC分布式事务 (2)
- marathon (12)
- phpMyAdmin (12)
- git (3)
- Atomix (1)
- Calico (1)
- Lua (7)
- 泛解析 (2)
- OpenResty (2)
- spring mvc (19)
- 前端 (3)
- spring cloud (15)
- Netflix (1)
- zipkin (3)
- JVM 内存模型 (5)
- websocket (1)
- Eureka (4)
- apollo (2)
- idea (2)
- go (1)
- 业务 (0)
- idea开发工具 (1)
最新评论
-
sichunli_030:
对于频繁调用的话,建议采用连接池机制
配置TOMCAT及httpClient的keepalive以高效利用长连接 -
11想念99不见:
你好,我看不太懂。假如我的项目中会频繁调用rest接口,是要用 ...
配置TOMCAT及httpClient的keepalive以高效利用长连接
一般我们在浏览器的地址栏输入网址回车后,发送的是GET请求
当用表单提交时(最普遍的是用户登录),我们可以指定是GET还是POST请求,这里需要注意的是有的浏览器并不支持PUT请求,那后台restful的PUT请求对应的方法岂不是不能用了
SpringMVC为我们提供了一种解决方案,
我们还是用POST方式,但是我们添加了一个名为_method的隐藏域,并且值为put,同时需要在web.xml中添加一个Filter,如下:
这样虽然发送的仍然是POST请求,但是该Filter会把其转成PUT请求这样就可以调用PUT相应的方法了
这样做的缺点是前端页面我们需要额外添加一个隐藏域什么的
下面结合springMVC探讨一下JQuery发送AJAX请求的一些事
一般我们发送请求的代码如下:
或者如下:
那么这2种有什么区别呢?
经试验发现对于GET和POST方式,这2中没什么差别
但是对于PUT,第一种的参数可以顺利传入,但是第二种的参数就不能接受了,那么我们怎么才能得到第二种方式所穿的参数呢?
这里我们可以使用@RequestBody
@RequestBody对于GET请求是没有意义的
对于POST请求,无论你是使用第一种方式还是第二种方式,异或是2种方式同时使用,他会把所有的参数当放到@RequestBody所对应的那个参数里,输出的结果类似:
如果你要用到参数,你需要自己处理
对于PUT请求 @RequestBody所对应的那个参数的值就是通过第二种方式传进来来的值
------------------------------------我是分割线--------------------------------------
对于SpringMVC,它提供了MultiValueMap这个类,我们可以这样来接受参数
他回把你传过来的参数,放到valueMap里,这个接口继承于Map<K, List<V>>,key就是传过来的参数名,value就是参数值,由于可能存在同名的参数,所以value的类型是List,这样我们就可以很方便的取得参数值了
参考:https://my.oschina.net/dxqr/blog/113766
当用表单提交时(最普遍的是用户登录),我们可以指定是GET还是POST请求,这里需要注意的是有的浏览器并不支持PUT请求,那后台restful的PUT请求对应的方法岂不是不能用了
SpringMVC为我们提供了一种解决方案,
引用
<form id="user" action="/springmvc/user" method="post">
<input type="hidden" name="_method" value="put"/>
</form>
<input type="hidden" name="_method" value="put"/>
</form>
我们还是用POST方式,但是我们添加了一个名为_method的隐藏域,并且值为put,同时需要在web.xml中添加一个Filter,如下:
引用
<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>
<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请求的一些事
一般我们发送请求的代码如下:
引用
$.ajax({
type : 'get',
url : 'http://localhost/TestSpring3.2R/coc/body?name=tom'
});
type : 'get',
url : 'http://localhost/TestSpring3.2R/coc/body?name=tom'
});
或者如下:
引用
var mydata = {'name':'tom'};
$.ajax({
type : 'get',
url : 'http://localhost/TestSpring3.2R/coc/body',
data : mydata
});
$.ajax({
type : 'get',
url : 'http://localhost/TestSpring3.2R/coc/body',
data : mydata
});
那么这2种有什么区别呢?
经试验发现对于GET和POST方式,这2中没什么差别
但是对于PUT,第一种的参数可以顺利传入,但是第二种的参数就不能接受了,那么我们怎么才能得到第二种方式所穿的参数呢?
这里我们可以使用@RequestBody
@RequestBody对于GET请求是没有意义的
对于POST请求,无论你是使用第一种方式还是第二种方式,异或是2种方式同时使用,他会把所有的参数当放到@RequestBody所对应的那个参数里,输出的结果类似:
引用
id=ff&status=gg&name=ee
如果你要用到参数,你需要自己处理
对于PUT请求 @RequestBody所对应的那个参数的值就是通过第二种方式传进来来的值
------------------------------------我是分割线--------------------------------------
对于SpringMVC,它提供了MultiValueMap这个类,我们可以这样来接受参数
引用
@RequestMapping(value = "/", produces = "application/json;charset=UTF-8", method = RequestMethod.PUT)
@ResponseBody
public Map<String,Object> updateUser(@RequestBody MultiValueMap<String, String> valueMap){
@ResponseBody
public Map<String,Object> updateUser(@RequestBody MultiValueMap<String, String> valueMap){
他回把你传过来的参数,放到valueMap里,这个接口继承于Map<K, List<V>>,key就是传过来的参数名,value就是参数值,由于可能存在同名的参数,所以value的类型是List,这样我们就可以很方便的取得参数值了
参考:https://my.oschina.net/dxqr/blog/113766
发表评论
-
TransactionalEventListener注解
2021-07-04 12:14 1118TransactionalEventListener注解 记 ... -
Spring核心之bean
2021-06-16 13:49 210Spring Aop介绍 AOP,确实难,会让很多人懵逼 ... -
不使用@EnableTransactionManagement注解就能使用事务
2021-06-13 11:03 464https://blog.csdn.net/weixin_38 ... -
spring4.1.8扩展实战之三
2019-01-03 23:35 410spring4.1.8扩展实战之三:广播与监听 https:/ ... -
Spring装配Bean的过程
2018-03-22 20:40 346(spring-第1回【IoC基础篇】)Spring容器中Be ... -
第三章 DispatcherServlet详解 ——跟开涛学SpringMVC
2018-03-20 19:54 480http://jinnianshilongnian.iteye ... -
Spring事件机制
2017-10-26 22:56 343Spring事件机制的简单例子 http://blog.cs ... -
Spring3.1新属性管理API:PropertySource、Environment、Profile
2017-09-06 20:17 430http://jinnianshilongnian.iteye ... -
FactoryBean的实现原理与作用
2017-09-05 20:50 0FactoryBean的实现原理与作用 http://blog ... -
@Inject和@Autowired以及@Resource区别
2017-08-21 15:52 726@value 注解配置默认值 但是,如果配置文件中没有设置 n ... -
通过Spring @PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作
2017-08-02 09:51 540关于在spring 容器初始化 bean 和销毁前所做的操作 ... -
Spring HttpInvoker远程调用的例子
2017-07-20 19:42 404http://blog.csdn.net/liuhui_306 ... -
spring 获取bean的几种方式
2017-07-20 17:36 398http://www.cnblogs.com/luoluosh ... -
一句话概括下spring框架及spring cloud框架主要组件
2017-07-19 16:56 44作为java的屌丝,基本上 ... -
AOP日志,记录调用类、方法、方法参数名称、方法参数值(包括对象和基本类型)
2017-07-15 19:15 2238http://blog.csdn.net/paincupid/ ... -
spring mvc Controller中使用@Value无法获取属性值
2017-06-28 17:14 962http://www.cnblogs.com/xianan87 ... -
4种方法让SpringMVC接收多个对象
2017-06-06 11:23 525http://blog.csdn.net/lutinghuan ... -
springmvc在普通类中获取HttpServletRequest对象
2017-05-25 17:18 727https://stackoverflow.com/quest ... -
spring的配置文件中mvc:view-controller path使用方法
2017-05-14 13:11 875[list] 1、重定向 <mvc:view-contr ... -
warning no match for this type name: com.cloud.access.web [Xlint:invalidA
2017-02-27 08:47 1521warning no match for this type ...
相关推荐
### 浅谈Python Requests 库中的PUT与POST请求参数处理 在进行Web开发或API测试时,经常会遇到需要向服务器发送数据的情况。Python作为一种广泛使用的编程语言,提供了强大的`requests`库来帮助开发者轻松实现HTTP...
其中,GET用于请求指定资源的数据,POST用于向服务器提交数据,PUT用于请求服务器将请求主体存储在提供的URI下,PATCH用于对已存在的资源进行部分修改,而DELETE用于请求服务器删除指定的资源。 在Laravel框架中,...
### 浅谈HTTP协议与REST架构 #### HTTP协议概述 HTTP(Hypertext Transfer Protocol)是一种应用层协议,主要用于从Web服务器传输超文本文档至本地浏览器的传送协议。它采用客户端/服务器模式,通过TCP/IP进行通信...
1、POST请求:HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 这几种。其中 POST 一般用来向服务端提交数据。 2、 Content-Type : 是指 http/https 发送信息至服务器...
CORS将请求分为简单请求和非简单请求,可以简单的认为,简单请求就是没有加上额外请求头部的get和post请求,并且如果是post请求,请求格式不能是application/json(因为我对这一块理解不深如果错误希望能有人指出...
调用XMLHttpRequest对象的open()方法时需要指定请求类型(如GET、POST、PUT、DELETE等)、请求的URL地址以及一个布尔值参数,该参数指定请求是否为异步处理。异步处理是Ajax的核心特性,它允许在不阻塞当前页面的...
这个模块提供了发送GET、POST、PUT等HTTP请求的方法。本文将深入探讨使用`subscribe()`处理HTTP请求返回结果时的一些关键注意事项。 首先,`subscribe()`函数是RxJS库中的一个操作符,它是Observable模式的核心部分...
2. 改变HTTP请求类型,将GET请求改为POST请求,以避免某些基于请求类型的检测。 **方法二:防止被识别为可疑的`eval`** `eval`函数在PHP中常用于执行动态生成的代码,但因为其潜在的安全风险,容易被安全软件标记...
- `method`: 请求类型,可以是GET、POST、PUT、DELETE、JSONP、HEAD等。 - `url`: 要请求的URL,可以是绝对URL或相对于应用的相对URL。 - `params`: 参数对象或映射,用于GET请求中的查询字符串。 - `data`: 请求体...
6. 请求配置:fetch的配置对象提供了多种选项,允许我们设置请求的类型(GET、POST、PUT、DELETE等)、头部信息、请求模式、是否允许跨域、重定向策略等。通过这些配置,我们可以精确控制请求的行为,以适应不同的...
在AngularJS中,$http服务是用于与服务器进行异步通信的主要工具,它支持GET、POST、PUT、DELETE等多种HTTP方法。 在讨论AngularJS $http提交数据之前,让我们先回顾一下jQuery中的$.post()方法。$.post()是jQuery ...
2. `type`: 定义请求的类型,通常有GET、POST、PUT、DELETE等。GET用于获取数据,POST用于向服务器提交数据。 3. `data`: 这个选项用于传递请求参数,可以是字符串形式,如`"adminCode=king&age=22"`,也可以是对象...
浅谈spring-boot允许接口跨域并实现拦截(CORS) Spring Boot中实现CORS(Cross-Origin Resource Sharing,跨域资源共享)机制是为了解决不同域名、协议或端口下的资源请求问题。在Spring Boot项目中,我们可以使用...
CORS允许使用所有类型的HTTP请求方法,包括GET、POST、PUT、DELETE等,具有更广泛的应用场景和安全性。 总结来说,JSONP是一种利用script标签特性实现的跨域解决方案,适用于简单的GET请求,而CORS则是一种现代的...
使用 HttpClient 发起 HTTP 请求,可以使用 `get`、`post`、`put`、`delete` 等方法。例如,在 `config.service.ts` 文件中添加以下代码: ```typescript getConfig() { return this.http.get('请求地址', { ...