使用Jersey RestFul创建webservice实例

甲方要求所有厂商提供一个restful的接口监控自己的所有服务及数据库是否正常,在此之前都不知道什么是restful。。。。没办法硬着头皮上。下面是我对restful的简单了解以及应用实例,希望能帮助到跟我一样的小白。

实现Restful 有两种一种是由Jersey提供的,另一种是Apache CXF的,本文介绍的是Jersey Restful。Apache CXF在下一篇始终介绍。

什么是Restful?

Restful是一种软件架构风格、设计风格,提供了一组设计原则和约束条件。主要用于客户端和服务器交互类的软件,基于这个风格设计的软件可以更简洁,更有层次感,更易于实现缓存等级制

是对资源的具体操作HTTP方法映射到资源的CRUD(创建、读取、更新和删除)操作,基本模式如下:

  • HTTP GET:读取/列出/检索单个或资源集合。
  • HTTP POST:新建资源。
  • HTTP PUT:更新现有资源或资源集合。
  • HTTP DELETE:删除资源或资源集合。

具体大家去度娘看一下,我这就不多介绍了,本文以快速实现Jersey Restful风格接口为主要目的。下面就直接上代码了

常用注解:

@GET:该注解标记的方法表明用于处理GET请求,GET方法是幂等且安全的。
@POST:该注解标记的方法表明处理POST请求,POST方法表明是一种创建操作的方法,POST方法是一种写操作的HTTP请求,RPC中的写操作均是使用post方法,而在REST中我们只是使用POST方法来添加资源。
@DELETE:该注解标记的方法表明这个方法执行的是一个删除资源的操作,其返回值可以是void,即没有返回值。
@Consumes:在服务器端,@Consumes(MediaType.APPLICATION_XML)定义了服务器端要消费的媒体类型,也就是说消费客户端请求实体的媒体类型,可以是xml、json等类型。
@Produces:@Consumes(MediaType.APPLICATION_XML)定义了服务器端生产的媒体类型,即服务器端产生的响应实体的媒体类型,同样也可以是xml、json等媒体类型。
@Path:该注解可以标记在类名之上,也可以标记在方法名上。该注解接收一个value参数,表示定义资源的地址。另外,资源地址相同,但是HTTP方法不同的两个方法是完全两个不同的REST接口,HTTP方法和资源地址相结合在一起才可以完成对一个资源的定位。
@QueryParam:该注解表明是一个查询条件,查询条件决定了方法的作用域,查询参数组成了查询条件。Jersey中使用@QueryParam注解来定义查询参数。另外注解@QueryParam还可以和注解@DefaultVaule一起使用,注解@DefaultValue的作用则是预置一个默认值,当请求中不包括该参数时候使用这个默认值。
@PathParam:该注解定义路径的参数信息,每一个参数都对应一个子资源。
@FormParam:该注解表示用来定义表单的参数。
@Context:该注解用来解析上下文参数。(@Context HttpRequest request)

注解转自https://www.cnblogs.com/wrong5566/p/5985001.html

下面首先定义两个bean,ParentStatus 和SubStatus

public cpublic class SubStatus {lass ParentStatus {
	private String status;
	private List<SubStatus> errdetail = new ArrayList<SubStatus>();
         //get/set 忽略
}


public class SubStatus {
        private String status;
	private String errorMessage;
        //get/set 忽略
}

在定义一个 Controller

 @Path("/wsdlservice")
public class WSDLService {
	   @GET  
	   @Path("/wsdls")  
	   @Produces(MediaType.APPLICATION_JSON)  
	   public String GetWSDL() throws Exception{
		   ParentStatus p = new ParentStatus();
		   SubStatus subStatus = new SubStatus();
		   subStatus.setStatus("21");
		   subStatus.setErrorMessage("1212112132wdasfsdsf");
		   p.setStatus("-1");
		   
		   p.getErrdetail().add(subStatus);
		   
		   String jsonString = JSONArray.fromObject(p).toString();
		return jsonString;
		   
	   }

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
     <display-name>WSDL Management</display-name>  
    <servlet>  
        <servlet-name>Jersey RESTful Application</servlet-name>  
      <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
        <init-param>  
            <param-name>jersey.config.server.provider.packages</param-name>  
            <param-value>cn.com.sinosoft.Controller</param-value>  
        </init-param>  
    </servlet>  
    <servlet-mapping>  
        <servlet-name>Jersey RESTful Application</servlet-name>  
        <url-pattern>/rest/*</url-pattern>  
    </servlet-mapping>  
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

发布在tomcat后在浏览器执行http://localhost:8080/FirstRestFul/rest/wsdlservice/wsdls 返回json,完成。

[{"errdetail":[{"errorMessage":"1212112132wdasfsdsf","status":"21"}],"status":"-1"}]
所使用的jar包,一个都不能少。:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值