SpringMVC RestTemplate的几种请求调用
1.用统一的方法模板进行四种请求:POST,PUT,DELETE,GET
restTemplate.exchange(
String url,
HttpMethod method,
HttpEntity requestEntity,
Class responseType,
Object uriVariables[]
)
说明:
1)url: 请求地址;
2)method: 请求类型(如:POST,PUT,DELETE,GET);
3)requestEntity: 请求实体,封装请求头,请求内容
4)responseType: 响应类型,根据服务接口的返回类型决定
5)uriVariables: url中参数变量值
例如:
(1)POST请求
String reqJsonStr = "{\"code\":\"testCode\", \"group\":\"testGroup\",\"content\":\"testContent\", \"order\":1}";
HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<String> entity = new HttpEntity<String>(reqJsonStr,headers);
ResponseEntity<Map> resp = restTemplate.exchange(DIC_DATA_URL, HttpMethod.POST, entity, Map.class);
(2)PUT请求
String reqJsonStr = "{\"id\":227,\"code\":\"updateCC\", \"group\":\"UPDATE\",\"content\":\"updateCT\", \"order\":9}";
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<String> entity = new HttpEntity<String>(reqJsonStr,headers);
ResponseEntity<Map> resp = restTemplate.exchange(DIC_DATA_URL, HttpMethod.PUT, entity, Map.class);
(3)DELETE请求
ResponseEntity<Map> resp = restTemplate.exchange(DIC_DATA_URL + "?id={id}", HttpMethod.DELETE, null, Map.class, 227);
(4)GET请求
ResponseEntity<String> results = restTemplate.exchange(url,HttpMethod.GET, null, String.class, params);
2.用各种请求对应的专一接口
(1)POST请求
postForObject(String url, Object request, Class responseType, Object uriVariables[]):
返回数据对象Object,例如:
DicData data = new DicData();
data.setCode("cd123"); data.setGroup("TEST"); data.setContent("测试数据"); data.setOrder(5);
DicData obj = restTemplate.postForObject(DIC_DATA_URL, data, DicData.class);
> 或者
postForEntity:(String url, Object request, Class responseType, Object uriVariables[])
返回封装了数据对象的ResponseEntity对象,例如:
DicData data = new DicData();
data.setCode("cd123"); data.setGroup("TEST"); data.setContent("测试数据"); data.setOrder(5);
ResponseEntity<Map> respEntity = restTemplate.postForEntity(DIC_DATA_URL, data, Map.class);
> (2)PUT请求
put(String url, Object request, Object urlVariables[])
例如:
DicData data = new DicData();
data.setId(226L); data.setCode("updateCode"); data.setGroup("UPDATE");
data.setContent("测试数据"); data.setOrder(9);
restTemplate.put(DIC_DATA_URL, data);
> (3)DELETE请求
delete(String url, Object urlVariables[])
例如:
restTemplate.delete(DIC_DATA_URL + "?id={id}", 222);
> (4)GET请求
getForObject(String url, Class responseType, Object urlVariables[]):
返回请求的结果对象,例如
Order o = restTemplate.getForObject(Constants.SERVER_URL+"/order?orderCode={orderCode}",
Order.class,order.getOrderCode());
getForEntity(String url, Class responseType, Object urlVariables[]):
返回封装了数据对象的ResponseEntity对象,例如:
ResponseEntity<EBTUser> ebtuserResponse = restTemplate.getForEntity(url,EBTUser.class);
EBTUser user = ebtuserResponse.getBody();
3.GET请求,要返回一些复合数据类型时的处理
> (1)返回List类型数据
DicData[] dicResult = restTemplate.getForObject( Constants.SERVER_URL + "/dicDatas/dicData?"
+ "group={group}", DicData[].class, group);
List<DicData> list = Arrays.asList(dicResult);
或者
//ParameterizedTypeReference解决单层不嵌套以及嵌套的list
// pass generic information to resttemplate; ParameterizedTypeReference为spring3.2版本后引进的类
ParameterizedTypeReference<List<DicData>> responseType = new ParameterizedTypeReference<List<DicData>>();
ResponseEntity<List<DicData>> resp = restTemplate.exchange(Constants.SERVER_URL + "/dicDatas/dicData?group={group}",
HttpMethod.GET, null, responseType);
List<DicData> list = resp.getBody();
> (2)返回属性中有范型数据的复合对象
//ObjectMapper 解析嵌套的list变成的json字符串,TypeReference
比如,分页对象
ResponseEntity<String> results = restTemplate.exchange(url,HttpMethod.GET, null, String.class, params);
// 借助com.fasterxml.jackson.databind.ObjectMapper 对象来解析嵌套的json字符串
ObjectMapper mapper = new ObjectMapper(); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
PageInfo<Product> page = mapper.readValue(results.getBody(), new TypeReference<PageInfo<Product>>() { });
相关推荐
SpringMVC 接收 Ajax 请求注意事项 SpringMVC 框架在处理 Ajax 请求时需要注意一些重要的配置和设置,以确保请求的正确处理和数据的正确传输。下面我们将介绍在 SpringMVC 中接收 Ajax 请求的注意事项。 基本数据...
在SpringMVC中,Ajax请求通常涉及到以下几个关键步骤: 1. **前端准备**: - 首先,你需要在HTML页面中引入jQuery库,因为它是广泛使用的JavaScript库,提供了方便的Ajax函数。 - 在HTML元素上添加事件监听器,...
3. **Controller**: 控制器处理HTTP请求并调用业务逻辑。通过`@RequestMapping`注解,我们可以指定控制器处理特定的URL请求。此外,`@RequestParam`、`@PathVariable`等注解帮助我们获取请求参数。 4. **View**: ...
springmvc调用业务逻辑
SpringMVC中RestTemplate传值接值方法是指在SpringMVC框架中使用RestTemplate来进行数据传输和接收的一种方法。这种方法可以帮助开发者快速简便地实现数据交换和处理。 RestTemplate的配置 在使用RestTemplate之前...
综上所述,Spring MVC结合HttpClient提供了一种有效的方式,使我们在Java Web应用中能够轻松地调用外部服务。通过合理的配置和编程,我们可以构建稳定、高效的远程服务调用系统。在实际开发中,还应根据具体需求进行...
SpringMVC 是一种基于 Java 的实现 MVC 设计模型的请求驱动类型的轻量级 Web 框架,属于SpringFrameWork 的后续产品,已经融合在 Spring Web Flow 中。 SpringMVC 已经成为目前最主流的MVC框架之一,并且随着Spring...
使用@RequestParam、@RequestHeader和@CookieValue注解分别映射请求参数、请求头和Cookie值信息到相应处理方法的入...另外,SpringMVC也支持使用POJO对象绑定请求参数,且也可以使用Servlet原生API作为目标方法的形参。
本实例代码着重讲解了SpringMVC中的四种映射方式以及拦截器的实现,这对于理解和掌握SpringMVC的请求处理机制至关重要。 1. **四种映射方式**: - **通配符映射**:`@RequestMapping("/path/*")`,星号(*)代表任意...
- **控制器(Controller)**:接收用户请求,处理业务逻辑,调用模型,并将结果转发给视图。 ### 3. SpringMVC工作流程 1. 用户发送HTTP请求到达DispatcherServlet。 2. DispatcherServlet根据请求信息,通过...
java中的springMVC模式调用过程,该图片显示了如果在java中使用springMVC的模式调用数据库过程。
springmvc 例子。采用了httpInvoke远程调用技术,为了简单只用了jsp->controller->dao分层。。其中的jsp controller 放在_web工程中,业务逻辑放在_svc中,分开下载,如果觉得没有,就可以不用下载另外一个工程了,...
SpringMVC映射请求
刚接触SpringMVC几天、代码肯定比不上大佬ε≡٩(๑>₃<)۶ ,手下留情,谢谢 尝试手写SpringMVC动态调用方法 初步使用反射注解实现动态调用方法 初步了解SpringMVC @Controller、@RequestMapping、@requestParam...
在 Controller 处理完请求后,会返回一个 ModelAndView 对象,供 DispatcherServlet 调用。 六、ViewResolver ViewResolver 是视图解析器,它的职责是根据 ModelAndView 中的视图名,找到具体的视图进行渲染。...
接口调用通常涉及网络请求,可以使用HttpURLConnection、Apache HttpClient或者Spring的RestTemplate等工具。在Java中,这些工具可以发送GET或POST请求,接收JSON或其他格式的数据,并将其转换为Java对象。在这个...
基于zipkin调用链封装starter实现springmvc、dubbo、restTemplate等实现全链路跟踪资料齐全+详细文档.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都...
本项目采用的是经典的Java EE技术栈:Maven、SpringMVC、Spring和Mybatis,来实现这一功能,同时包含了调用数据库存储过程的操作。以下是关于这个项目的关键知识点的详细说明: 1. Maven:Maven是一个项目管理工具...
它们负责接收请求参数,调用业务逻辑,最后将结果返回给视图层。 4. **注解式控制器** 从Spring 3.0开始,SpringMVC引入了注解式编程,使得开发者可以直接在方法上使用@RequestMapping等注解来定义请求映射,极大...