项目中要用到Rest的web service,提前做了一个Demo,做下笔记。
Demo 分2个项目,一个是restServer 一个是restClient, 都是Spring MVC架构。主要看代码:
Pojos:
package com.pojo; import java.io.Serializable; public class Phone implements Serializable{ private static final long serialVersionUID = 1L; private String phoneNumber="1"; private String phoneType="1"; public String getPhoneNumber() { return phoneNumber; } public void setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; } public String getPhoneType() { return phoneType; } public void setPhoneType(String phoneType) { this.phoneType = phoneType; } }
package com.pojo; import java.io.Serializable; public class PhoneResult implements Serializable { private static final long serialVersionUID = 1L; protected String rawPhoneNumber; protected String result; public String getRawPhoneNumber() { return rawPhoneNumber; } public void setRawPhoneNumber(String rawPhoneNumber) { this.rawPhoneNumber = rawPhoneNumber; } public String getResult() { return result; } public void setResult(String result) { this.result = result; } }
restServer controller:
package com.acxiom.rest.controller; import org.codehaus.jackson.map.ObjectMapper; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import com.pojo.Phone; import com.pojo.PhoneResult; @Controller @RequestMapping({ "/helloworld" }) public class HelloWorldController { @RequestMapping(value = { "/hi/{userName}" }, method = {RequestMethod.GET }) @ResponseBody public String hi(@PathVariable("userName") String userName) { return "Hi, " + userName; } @RequestMapping(value = { "/hello" }, method = {RequestMethod.GET }) @ResponseBody public String process(String userName) { return "Hello, " + userName; } @RequestMapping(value = { "/hiPost/{userName}" }, method = {RequestMethod.POST }) @ResponseBody public String hiPost(@PathVariable("userName") String userName) { return "Hi, " + userName; } @RequestMapping(value = { "/hello" }, method = {RequestMethod.POST }) @ResponseBody public String helloPost(String userName) { return "Hello, " + userName; } @RequestMapping(value = { "/hygiene/{phone}" }, method = {RequestMethod.POST },produces="application/json") @ResponseBody public PhoneResult hygiene(@PathVariable("phone")String phoneObject) { PhoneResult result = new PhoneResult(); try { ObjectMapper mapper = new ObjectMapper(); Phone phone = mapper.readValue(phoneObject, Phone[].class)[0]; result.setRawPhoneNumber(phone.getPhoneNumber().toUpperCase()); result.setResult("SUCCESS"); }catch (Exception e) { e.printStackTrace(); result.setResult("ERROR, " + e.getMessage()); } return result; } }
restClient controller:
package com.acxiom.rest.controller; import java.util.HashMap; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpEntity; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.client.RestTemplate; import com.pojo.Phone; import com.pojo.PhoneResult; import com.util.JsonUtil; @Controller public class HomeController { @Autowired private RestTemplate restTemplate; @RequestMapping(value = { "/home" }, method = { org.springframework.web.bind.annotation.RequestMethod.GET }) public String home(ModelMap model) throws Exception { //test get hi method 1 String url = "http://localhost:8080/restServer/helloworld/hi/{userName}.spring"; Map<String, String> map = new HashMap<String, String>(); map.put("userName", "TOMMY"); model.addAttribute("HiResponse", getResponseMessage(url, map)); //test get hi method 2 model.addAttribute("HiResponse2", this.restTemplate.getForEntity(url, String.class, "TOMMY2").getBody()); //test get hello method url = "http://localhost:8080/restServer/helloworld/hello.spring?userName=seaboy"; model.addAttribute("HelloResponse", getResponseMessage(url, null)); //test post hello method model.addAttribute("HelloPostResponse", this.restTemplate.postForEntity("http://localhost:8080/restServer/helloworld/hello.spring?userName=seaboyPost", null, String.class).getBody()); //test post hygiene method MultiValueMap<String,Object> dataMap2 = new LinkedMultiValueMap<String, Object>(); Phone p = new Phone(); p.setPhoneNumber("0513 1111"); dataMap2.add("phone", JsonUtil.javaToJson(p)); HttpEntity<Object> entity2 = new HttpEntity<Object>(dataMap2); model.addAttribute("PhoneResponse", this.restTemplate.postForObject("http://localhost:8080/restServer/helloworld/hygiene/{phone}.spring", entity2, PhoneResult.class, dataMap2)); return "home"; } private String getResponseMessage(String url, Map<String, String> paras) { if (paras != null) { return this.restTemplate.getForEntity(url, String.class, paras).getBody(); } else { return this.restTemplate.getForEntity(url, String.class).getBody(); } } }
JsonUtil:
package com.util; import java.io.StringWriter; import org.codehaus.jackson.map.ObjectMapper; public class JsonUtil { public static String javaToJson(Object o) throws Exception{ StringWriter writer = new StringWriter(); ObjectMapper mapper = new ObjectMapper(); mapper.writeValue(writer, o); String json=writer.toString(); return json; } }
home.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%> <%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> <%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>HOME PAGE</title> </head> <body> <div id="main"> <div id="top"> Hi Response: ${HiResponse} <br> Hi2 Response: ${HiResponse2} </div> <div id="buttom"> Hello Response: ${HelloResponse} <br> Hello Post Response: ${HelloPostResponse}<br> Phone Response: ${PhoneResponse.result} </div> </div> </body> </html>
测试结果:
Hi Response: Hi, TOMMY Hi2 Response: Hi, TOMMY2 Hello Response: Hello, seaboy Hello Post Response: Hello, seaboyPost Phone Response: 86 0513 11112222
相关推荐
在这个"Struts2+rest简单实例"中,开发者创建了一个小型的示例应用,目的是帮助初学者快速理解如何在Struts2框架中集成RESTful服务。以下是这个实例中可能涉及的关键知识点: 1. **Struts2框架基础**:Struts2的...
在这个“java rest简单实例,新手入门”的项目中,你将学习如何使用Java来创建RESTful API。 首先,我们需要理解REST的基本概念。REST的核心是资源,每个资源都有一个唯一的URI(统一资源标识符),通过HTTP方法来...
在这个"struts2+rest简单实例"中,我们可以看到如何将这两种技术结合在一起,以创建一个更现代化、更灵活的应用程序。以下是一些关于Struts2和REST的关键知识点: 1. **Struts2核心概念**: - **Action类**:这是...
在这个“开发REST的简单例子”中,我们将探讨如何使用Spring框架来创建一个RESTful API。 首先,让我们了解REST的基本原则: 1. 客户端-服务器架构:客户端和服务器之间有明确的职责划分,客户端负责用户界面和用户...
本教程将通过一个简单的例子,讲解如何利用Spring MVC创建REST服务。 首先,我们需要在项目中引入Spring MVC的相关依赖。通常,这涉及到在Maven或Gradle的配置文件中添加Spring Web和Spring MVC的依赖。例如,如果...
【标题】:MyEclipse REST Web Service 简单实现案例 在当今互联网技术日新月异的时代,REST(Representational State Transfer)架构风格已成为构建Web服务的重要方式,它强调资源的表述和状态转换,简单易用且...
本实例聚焦于使用JAVA开发REST客户端,这是一套经典且实用的测试案例,类似于知名的Postman工具,但专为JAVA环境设计,并附带源代码。 REST客户端的主要任务是模拟用户对RESTful服务的请求,包括GET、POST、PUT、...
在这个例子中,我们同样创建了一个`HttpClient`实例,并且使用`PostMethod`对象来构造POST请求。然后添加了请求参数,并通过`executeMethod`方法执行请求。最后,释放连接资源。 #### 四、注意事项 1. **编码问题*...
Spring Data REST Angular 示例项目是一个整合了Java Spring Boot框架与Angular前端框架的应用实例,展示了如何构建一个现代化的Web应用。这个项目旨在演示如何利用Spring Data REST将后端数据服务暴露为RESTful API...
- **实例结构**:由于压缩包文件名为"RestPro",我们可以推断这可能是一个关于REST实践的项目,可能包含服务器端代码(如Java、Python或Node.js)、客户端代码(如JavaScript或命令行工具)以及相关的配置文件。...
Kettle的JSON解析能力使这一切变得简单且高效。 总之,Kettle的REST接口功能强大,结合JSON数据处理,使得在ETL过程中与其他系统集成变得容易。无论是批量操作还是单个请求,都可以通过Kettle流畅地完成。在实际...
在这个小例子中,我们将探讨如何使用Spring MVC来实现REST接口。 首先,让我们理解Spring MVC的基本架构。Spring MVC通过DispatcherServlet作为前端控制器,接收HTTP请求,然后根据请求映射找到相应的Controller...
Django-REST-framework提供的序列化器(Serializers)使得这一转换变得简单快捷。序列化器可以帮助你验证输入数据、转换数据格式,并为视图提供一个简单的API。教程中提到了HyperlinkedModelSerializer,它在序列化...
本案例“Rest 开发小案例”提供了一个完整的REST开发工程,包括了使用Jersey框架实现REST服务的实例。 首先,让我们深入了解一下REST的基本概念。REST的核心思想是将系统中的各种操作视为对资源的操作,资源通过URI...
安装 REST 插件非常简单,只需按如下步骤进行即可: 将 Struts 2 项目下 struts2-convention-plugin-2.1.6.jar、struts2-rest-plugin-2.1.6.jar 两个 JAR 包复制到 Web 应用的 WEB-INF/lib 路径下。 由于 Struts 2 ...
REST Client是Kettle的一个内置组件,它提供了一个简单的界面来配置HTTP请求的各个参数,如URL、方法类型、头部信息和请求体。Http Client则可能是一个第三方插件,提供了更高级的自定义选项,比如支持SSL、设置代理...
- **实践案例**:通过一个虚构公司的例子,逐步展示如何随着业务发展,利用REST技术解决各种问题。 - **高级话题**:探讨如何利用REST构建复杂的应用程序和服务,包括高级用例中的超媒体驱动流程等。 通过以上...
在Java中,我们通常使用JUnit框架进行单元测试,不过这个例子可能没有依赖JUnit,而是直接编写了简单的测试逻辑。测试代码可能包含了对REST接口的GET、POST、PUT、DELETE等常见HTTP方法的调用,以验证接口的功能是否...
虽然在这个简单的例子中没有具体的模型,但在实际应用中,你可能需要创建实体类来表示业务对象。这些实体类可以使用`@Entity`注解,配合Spring Data JPA进行数据库操作。 5. **视图解析**: 对于更复杂的场景,你...
在压缩包文件"spring3_rest"中,可能包含了一个简单的Spring 3.0 MVC和REST的例子,你可以通过这个例子学习如何配置Spring MVC的DispatcherServlet,创建RESTful端点,处理请求和响应,以及如何使用JUnit进行测试。...