博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
开发RESTful WebService
阅读量:5225 次
发布时间:2019-06-14

本文共 4046 字,大约阅读时间需要 13 分钟。

RESTful风格的webservice越来越流行了,sun也推出了RESTful WebService的官方规范:JAX-RS。全称:Java API for RESTful WebService。该规范定义了一系列的注解

 

RESTful简化了web service的设计。它不再须要wsdl。也不再须要soap协议,而是通过最简单的http协议数据传输(包含xmljson)。既简化了设计,也降低了网络传输量(由于仅仅传输代表数据的xmljson,没有额外的xml包装)

 

以下为大家介绍使用cxf开发RESTful WebService

 

Cxf2.7实现了大部分的jax-rs规范。从cxf3.0開始实现jax-rs的全套规范

 

服务端

Spring3+cxf开发RESTfulweb service

 

服务端jar

上面的jettison jar包是用来将jaxb扩展为为json支持的jar

 

实体类

package com.tgb.cxf.server;import javax.xml.bind.annotation.XmlRootElement;//一定要使用XmlRootElement注解进行标注@XmlRootElement(name="user")public class User {		private String id;	private String name;		public String getId() {		return id;	}	public void setId(String id) {		this.id = id;	}	public String getName() {		return name;	}	public void setName(String name) {		this.name = name;	}	}

WebService接口

@Path("/userservice/")public interface IMyService {		@Path("/addUser/")	@POST	Response addUser(User user);		@Path("/delUser/{id}/")	@DELETE	Response delUser(@PathParam("id") String id);		@Path("/updateUser/")	@PUT	Response updateUser(User user);		@Path("/getUserById/{id}/")	@GET	@Produces("application/json")//返回json数据格式	User getUserById(@PathParam("id") String id);		@Path("/")	@GET	@Produces("application/json")//返回json数据格式	List
findAllUsers();}

WebService实现类

public class MyServiceImpl implements IMyService {	private HashMap
users = new HashMap
(); public MyServiceImpl(){ init(); } public Response addUser(User user) { users.put(user.getId(), user); System.out.println("加入用户成功"); System.out.println(users.size()); System.out.println(users.get("2").getName()); return Response.ok().build(); } public Response delUser(String id) { users.remove(id); System.out.println(users.size()); return Response.ok().build(); } public Response updateUser(User user) { users.put(user.getId(), user); System.out.println(users.get("1").getName()); return Response.ok().build(); } public User getUserById(String id) { return users.get(id); } private void init(){ User user = new User(); user.setId("1"); user.setName("温欢"); users.put(user.getId(), user); } public List
findAllUsers() { List
userlist = new ArrayList
(); userlist.add(users.get("1")); return userlist; }}

spring-cxf.xml配置文件

web.xml文件配置

contextConfigLocation
classpath:config/spring-cxf.xml
org.springframework.web.context.ContextLoaderListener
cxf
org.apache.cxf.transport.servlet.CXFServlet
1
cxf
/services/*

client

所需jar

由于RESTful就是利用最原始的http协议数据传输。所以client事实上就是一个httpclient。有下面几种实现方式

 

JAX-RS Client API--cxf3.0+

Proxy【使用起来简单。代理封装通信细节】

Apache HttpClient

WebClient

 

为了简单我使用了Proxy方式

代码例如以下

public class MyClient {			/** @MethodName	: main		 * @Description	: JaxRs測试client		 * @param args		 */		public static void main(String[] args) {			IMyService myService = JAXRSClientFactory.create("http://localhost:8096/cxf02/services/myservice",IMyService.class);						User user = myService.getUserById("1");			System.out.println(user.getName());						User user = new User();			user.setId("2");			user.setName("委座");			myService.addUser(user);						/*User user = new User();			user.setId("1");			user.setName("123");			myService.updateUser(user);*/									myService.delUser("1");						System.out.println(myService.findAllUsers().get(0).getName());		}		}

大家能够使用TCPMON这个工具监控下面。能够看到http body中仅仅是简单的json串,没有像soap协议那样的“信封”包装

 

使用RESTful设计风格+传输json数据格式 能够大大的简化web service的设计 并提高传输效率

事实上springMVC也採用了RESTful的设计风格。只是它使用的是spring自己的注解,这些注解和jax-rs中的注解惊奇的类似。假设大家有兴趣能够研究一下springMVC的RESTful特性。

转载于:https://www.cnblogs.com/mengfanrong/p/5134498.html

你可能感兴趣的文章
有道词典_每日一句_2019/09
查看>>
微信小程序 movable-view组件应用:可拖动悬浮框_返回首页
查看>>
微信公众号_Deejo说_2019
查看>>
ASC47B borderless
查看>>
MPT树详解
查看>>
最适合程序员转行的10大职业
查看>>
空间分析开源库GEOS
查看>>
RQNOJ八月赛
查看>>
数据表设计
查看>>
alluxio
查看>>
关于ajax回调数据类型为Json,如何获得他的值
查看>>
前端各种mate积累
查看>>
css深度选择器
查看>>
jQuery 1.7 发布了
查看>>
Python(软件目录结构规范)
查看>>
Windows多线程入门のCreateThread与_beginthreadex本质区别(转)
查看>>
Nginx配置文件(nginx.conf)配置详解1
查看>>
linux php编译安装
查看>>
Ext Gantt Web甘特图--高级应用
查看>>
name phone email正则表达式
查看>>