基于RESTful类型的webService
来源:互联网 发布:网络里麻瓜是什么意思 编辑:程序博客网 时间:2024/06/03 15:20
RESTful是基于jax-rs的WebService.它即支持XML也支持JSON.
JAX-RS是JAVA EE6 引入的一个新技术。 JAX-RS即Java API for RESTful Web Services的简写,是一个Java 编程语言的应用程序接口,支持按照表述性状态转移(REST)架构风格创建Web服务。JAX-RS使用了Java SE5引入的Java标注来简化Web服务的客户端和服务端的开发和部署。
JAX-RS提供了一些标注将一个资源类,一个POJOJava类,封装为Web资源。标注包括:
@Path,标注资源类或者方法的相对路径 @GET,@PUT,@POST,@DELETE,标注方法是HTTP请求的类型。 @Produces,标注返回的MIME媒体类型 xml,json @Consumes,标注可接受请求的MIME媒体类型 @PathParam,@QueryParam,@HeaderParam,@CookieParam,@MatrixParam,@FormParam,分别标注方法的参数来自于HTTP请求的不同位置,例如@PathParam来自于URL的路径,@QueryParam来自于URL的查询参数,@HeaderParam来自于HTTP请求的头信息,@CookieParam来自于HTTP请求的Cookie。
RESTful的webService包括以下步骤:
第一步:添加jsr311.jar(支持JSR)文件 和jettison-1.3.jar(解析JSON)。此文件是jdk1.6提供的新支持包。支持json格式的WebService. 必须。
第二步:必须 - 创建一个JavaBean.并添加@XmlRootElement注解。
第三步:必须 - 创建一个服务类,并使用@Path等注解进行标注。
第四步:使用JaxRsServerFactoryBean发布WebService. 必须。
可以给JaxRsServerFactoryBean添加消息拦截器 – 可选。
发布成功以后,可以输入以下地址访问XML描述文件,注意此描述文件不能生成本地代码。
http://localhost:9005/users?_wadl&_type=xml
注意上面的参数是:_wadl 而不是wsdl
第五步:客户端使用HttpClient进行调用。
第六步:或是客户端使用Ajax调用。
代码示例:
package com.cxf.my;import javax.ws.rs.GET;import javax.ws.rs.Path;import javax.ws.rs.PathParam;import javax.ws.rs.Produces;import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;import com.cxf.bean.User;@Path(value="/rs")@Produces(value={"application/xml","application/json"})public class Restful { @GET @Path(value="/say/{name}") //http://http://127.0.0.1:8080/rs/say/hello public User say(@PathParam("name")String nm){ System.err.println("Hello...."+nm); User u = new User(); u.setName("你好:"+nm); u.setAge(99); return u; } public static void main(String[] args) { //RESTful的请求 JAXRSServerFactoryBean bean = new JAXRSServerFactoryBean(); bean.setAddress("http://127.0.0.1:8080"); bean.setServiceBean(new Restful()); bean.create(); }}
如果需要返回值,必须是一个JavaBean,且必须是添加了@XmlRootElement注解的,否则不能正常解析
package com.cxf.bean;import javax.xml.bind.annotation.XmlRootElement;@XmlRootElement(name="user")public class User { private String name; private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "User [name=" + name + ", age=" + age + "]"; }}
运行结果:
查看wsdl
发送请求:
- 基于RESTful类型的webService
- 基于SSM+CXF构建的RESTFul webservice
- 基于CXF 发布 restful风格的webservice
- 开发基于CXF的 RESTful WebService web 项目 webservice发布
- 开发基于CXF的 RESTful WebService web 项目 webservice发布
- 基于CXF的JAX-WS、JAX-RS(RESTful)的webService
- 基于CXF的JAX-WS、JAX-RS(RESTful)的webService
- 基于CXF的JAX-WS、JAX-RS(RESTful)的webService
- 基于 CXF 的 restful 风格的webservice 实现
- 基于CXF的JAX-WS、JAX-RS(RESTful)的webService
- 基于spring实现的restful webservice返回json数据
- 基于jersey搭建RESTful风格的WebService接口
- RESTful 的webservice
- WebService的重头戏---restful
- Jmeter测试restful的webservice
- RestEasy(restful风格的)WebService
- 开发restful风格的webservice
- webservice和restful的区别
- linux中poll,epoll,select区别,等等
- Android 自定义控件基础 canvas paint
- 百练 2775:文件结构“图”(递归法)
- Java开发——JavaScript初步学习
- python 个人学习笔记1
- 基于RESTful类型的webService
- 网络直播步入“剩者为王”的时代,三大层面将成决定性因素
- 关于MyBatis在eclipse中的配置及简单的增删改查操作
- 程序员之所以犯错误,不是因为他们不懂,而是因为他们自以为什么都懂。
- Java语言基础
- OC基础-如何避免内存泄漏23
- 小M开发_JS_day170710
- 快速乘取模运算
- SFM算法流程