`
hdxiong
  • 浏览: 378116 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

rest服务例子

阅读更多
1、接口类(IHello)

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;

import com.bean.Result;

@Path("/find/")
public interface IHello {

	/**
	 * 登录 
	 * @param userName 帐号
         * @param userPass 密码
	 * @return
	 */
	@POST
	@Path("/login")
	Result login(@FormParam("userName")String userName,@FormParam("userPass")String userPass);

       /**
	 * 按名称查询 
	 * @param who 名字
	 * @return
	 */
	@GET
	@Path("/findByName/{who}")
	Result findByName(@PathParam("who")String who);

}


2、实现类(HelloImpl)
public class HelloImpl implements IHello {

	@Override
	public Result findByName(String who) {
       //逻辑实现
    }

        @Override
	public Result login(String userName, String userPass) {
       //逻辑实现
    }

}


3、返回实体(Result)
import java.util.List;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name = "result")
public class Result implements Serializable{

	/**
	 * 返回结果
	 */
	private List<User> lstUser;

	public List<User> getLstUser() {
		return lstUser;
	}

	public void setLstUser(List<User> lstUser) {
		this.lstUser = lstUser;
	}
}



4、app-rest.xml配置
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxrs="http://cxf.apache.org/jaxrs"
	xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxrs
http://cxf.apache.org/schemas/jaxrs.xsd">


	<import resource="classpath:META-INF/cxf/cxf.xml" />
	<import resource="classpath:META-INF/cxf/cxf-extension-jaxrs-binding.xml" />
	<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

	<jaxrs:server id="hello" address="/hello">
		<jaxrs:extensionMappings>
			<entry key="json" value="application/json" />
			<entry key="xml" value="application/xml" />
		</jaxrs:extensionMappings>
		<jaxrs:serviceBeans>
			<ref bean="helloImpl" />
		</jaxrs:serviceBeans>
	</jaxrs:server>

	<bean id="helloImpl" class="com.HelloImpl" />
</beans>


5、依赖jar包
<dependency>
	<groupId>org.apache.cxf</groupId>
	<artifactId>apache-cxf</artifactId>
	<version>2.2.7</version>
	<type>pom</type>
	<scope>compile</scope>
</dependency>
<dependency>
	<groupId>javax.ws.rs</groupId>
	<artifactId>jsr311-api</artifactId>
	<version>1.0</version>
	<type>jar</type>
	<scope>compile</scope>
</dependency>
<dependency>
	<groupId>commons-httpclient</groupId>
	<artifactId>commons-httpclient</artifactId>
	<version>3.1</version>
</dependency>
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring</artifactId>
	<version>2.5.4</version>
</dependency>
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-webmvc</artifactId>
	<version>2.5.4</version>
</dependency>
<dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>servlet-api</artifactId>
	<version>2.5</version>
	<type>jar</type>
	<scope>provided</scope>
</dependency>


6、web.xml配置
<servlet>
	<servlet-name>CXFServlet</servlet-name>
	<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
	<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
	<servlet-name>CXFServlet</servlet-name>
	<url-pattern>/rest/*</url-pattern>
</servlet-mapping>


7、调用方法
方法一:
HttpClient httpClient = new HttpClient();
GetMethod getMethod = new GetMethod("http://localhost:8080/Test/rest/hello/find/findByName/jack.xml");
try {
	int status = httpClient.executeMethod(getMethod);
	if (status == 200) {
		XMLSource xmlSource = new XMLSource(getMethod.getResponseBodyAsStream());
		Result result = xmlSource.getNode("/", Result.class);
		System.out.println(result.getLstUser().size());
	}
} catch (Exception e) {
	e.printStackTrace();
}

方法二:
IHello hello = (IHello) JAXRSClientFactory.create("http://localhost:8080/Test/rest/hello", IHello.class);
Result result = hello.findByName("jack");
System.out.println(result.getLstUser().size());


8、优缺点和注意事项
1.优缺点
优点:跨平台(支持xml和json格式)
缺点:效率低
2.注意事项
参数:如果不是java的基本类型需要封装成javabean,类必须加如下注解:
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Param {
... 
}

返回值:如果不是java基本类型需要封装成javabean,需要序列化,属性和类需要加如下注解:
@XmlRootElement(name = "result")
public class Result implements Serializable {
 @Field
 private String id;
 ...
}
分享到:
评论

相关推荐

    使用Spring Cloud Netflix Zuul代理网关访问后台REST服务例子

    前端应用可以通过Zuul与后台REST服务进行通信,而无需知道服务的具体位置。同时,Zuul提供的过滤器功能允许你添加各种中间件逻辑,增强了系统的灵活性和安全性。 在压缩包`spring-cloud-examples-master`中,可能...

    spring rest doc 例子

    spring rest doc 例子,根据里面的例子,配合你的项目我相信能很快就用的上哦。尝试着用用吧。 spring rest doc 例子,根据里面的例子,配合你的项目我相信能很快就用的上哦。尝试着用用吧。

    使用Spring MVC创建REST服务简单例子

    本教程将通过一个简单的例子,讲解如何利用Spring MVC创建REST服务。 首先,我们需要在项目中引入Spring MVC的相关依赖。通常,这涉及到在Maven或Gradle的配置文件中添加Spring Web和Spring MVC的依赖。例如,如果...

    Java 调用Http Rest接口 例子说明2

    HTTP REST接口是一种基于HTTP协议的网络服务,它支持常见的HTTP方法如GET、POST、PUT、DELETE等。这些方法分别对应于对资源的获取、创建、更新和删除操作。 - **GET** 方法用于从服务器检索信息。 - **POST** 方法...

    spring mvc rest 小例子

    总结来说,这个“Spring MVC REST小例子”涵盖了如何使用Spring MVC框架构建REST服务的基本概念,包括HTTP方法映射、JSON数据交互以及相关的开发工具。通过学习和实践这个例子,你可以更好地理解和掌握RESTful服务的...

    Java 调用Http Rest接口 例子说明

    REST (Representational State Transfer) 是一种设计网络应用程序的架构风格,其核心原则之一是无状态性。在REST架构中,客户端和服务端之间的交互基于HTTP协议,通过发送HTTP请求并接收HTTP响应来完成。 #### 三、...

    开发rest的简单例子

    总结起来,本例子通过Spring框架展示了如何开发一个简单的REST服务。从创建REST控制器、定义资源模型,到使用HTTP方法和JSON响应,以及如何测试和保护这些服务,这些都是开发REST API的基础步骤。理解并掌握这些概念...

    REST服务示例入门

    2. 由于【1】的改动,使得只有以/rest开头的URL才能映射到某资源,使用rest服务时,必须要加上/rest。 3. 由于【1】的改动,RestComponent类注册application时将资源字符串加上了/rest。 4. 由于【1】的改动和本人...

    REST服务Post创建以及调用小例子

    ### REST服务Post创建及调用详解 #### 一、REST服务简介 REST(Representational State Transfer)是一种软件架构风格,通常用于定义轻量级、易于理解的服务端与客户端交互方式。它强调资源(如HTML页面、图片文件...

    Wcf和Rest服务的完整例子代码

    在IT行业中,Web服务是应用程序之间进行通信的一种方式,而WCF(Windows Communication Foundation)和REST(Representational State Transfer)是两种常见的Web服务技术。本文将深入探讨这两种服务的实现,以及它们...

    spring3.0 mvc和rest入门例子

    在压缩包文件"spring3_rest"中,可能包含了一个简单的Spring 3.0 MVC和REST的例子,你可以通过这个例子学习如何配置Spring MVC的DispatcherServlet,创建RESTful端点,处理请求和响应,以及如何使用JUnit进行测试。...

    Azure使用Rest访问存储服务的例子

    在Azure云平台上,访问存储服务是一项关键操作,尤其对于开发者来说,通过REST接口进行交互能够实现灵活、高效的数据管理。本篇文章将详细讲解如何利用REST API来访问Azure的Blob、队列和表存储服务。 首先,Azure...

    MyEclipse REST Web Service 简单的实现例子

    我们将通过一个实际的例子,从创建项目、定义服务接口到测试运行,一步步讲解整个过程,帮助开发者理解REST服务的工作原理及其在MyEclipse中的实现方法。 【标签】:REST Web Service 首先,我们需要启动MyEclipse...

    struts2_rest整合完整例子

    Struts2 和 REST 整合是一个常见的Web开发实践,它允许开发者构建RESTful风格的Web服务,从而提高应用的可伸缩性和互操作性。在这个完整的例子中,我们将深入探讨Struts2框架如何与REST原则相结合,以及如何通过提供...

    kettle生成经纬度, REST Client、Http Client组件例子

    REST(Representational State Transfer)是一种轻量级的Web服务交互方式,常用于API调用。在Kettle中,我们使用这些组件向RESTful API发送GET、POST等HTTP请求,获取或发送数据。REST Client是Kettle的一个内置组件...

    spring-data-rest-angular例子

    这个项目旨在演示如何利用Spring Data REST将后端数据服务暴露为RESTful API,以便Angular前端能够方便地进行数据交互。下面我们将深入探讨该项目中的关键技术和知识点。 1. **Spring Boot**: Spring Boot是Spring...

    java REST接口测试 测试小例子

    在Java开发中,REST(Representational State Transfer,表述性状态转移)接口已经成为现代Web服务的主要交互方式之一。RESTful API设计简洁,易于理解和使用,它通过HTTP协议来完成客户端与服务器之间的通信。在这...

    Spring3.0 rest 实例

    这个实例展示了如何利用Spring的特性来创建符合REST原则的服务,提供高效、可扩展且易于使用的API。在实际项目中,根据具体需求,还可以进一步优化和扩展,如添加CORS支持、使用Swagger进行API文档化等。

    Go搭建REST服务.pdf

    REST(Representational State Transfer)是一种广泛采用的Web服务设计风格,它强调资源的表述和状态转换。在Go中搭建REST服务,可以利用其内置的HTTP服务器库,以及结构体和方法来创建自定义的API。 首先,让我们...

    java:alibaba-dubbo-rest应用例子

    alibaba 2.6.x的rest协议例子。 需要安装zookeeper,默认端口,即可。 provider:运行RestProvider的main方法即可。 consumer:运行RestConsumer的main方法,在控制台,回车即可发一笔请求。 里面包含了中文名字自动...

Global site tag (gtag.js) - Google Analytics