RESTLET开发实例

1 前提

  由于近期工作的需要,要把RESTLET应用到项目中,于是在网上参考了一些资料的基础上,实践了一个关于RESTLET接口的小例子。

  Restlet的思想是:HTTP客户端与HTTP服务器之间的差别,对架构来说无所谓。一个软件应可以既充当Web客户端又充当Web服务器,而无须采用两套完全不同的APIs。

  Restlet提供了多个版本:Java SE、Java EE、android、Google AppEngine、Google Web Toolkit、Android。这里我们使用的是jee版本。

  RESTLET的实现可以采用JAX-RS方式,也可以采用其他方式,见:

http://www.iteye.com/topic/85928

本例子是采用JAX-RS的API开发的,这种方式提供了一种基于注解的模型来描述分布式资源,可以利用注解的功能提供资源的位置、传递等。可以再一个Resource类中同时对外提供多个接口服务。具体的实现步骤见如下章节。

2 实例开发

2.1 工程说明

       此处可以建立一个web工程,也可以建立一个JAVASE工程,如何应用就UP TO YOU了,此处的例子只是为了梳理下RESTLET的开发流程,不涉及到web界面的应用,所以就建立了一个普通的JAVASE的工程。工程的结构图如下:

 

       我们的工程分为如下几个部分:Server启动模块、Application模块、modle模块、REST接口实现的resource模块和客户端模块。

       工程所依赖的jar包,是最基本的这个6个包,因为数据的传输使用的JSON,所以json包是必须的,如果想扩展功能,请自行添加其余的包。

2.2 Server端启动部分

       RestJaxRsServer类的代码如下:

 1 package com.scott.restlet;
 2 
 3 import org.restlet.Component;
 4 import org.restlet.data.Protocol;
 5 
 6 import com.scott.restlet.application.RestJaxRsApplication;
 7 
 8 public class RestJaxRsServer {
 9     
10     public static void main(String[] args) throws Exception {
11         Component component = new Component();
12         component.getServers().add(Protocol.HTTP, 8082);
13         component.getDefaultHost().attach(new RestJaxRsApplication(null));
14         component.start();
15         
16         System.out.println("The restlet server started ...");
17     }
18 }

 

此代码中指定了我们的HTTP的绑定端口,地址就是本地默认的ip。另外,代码中有一个RestJaxRsApplication,这是每个Application能够管理一组restlet接口。

2.3 Application部分

       在application包中有两个类,一个是RestJaxRsApplication类,继承了org.restlet.ext.jaxrs.JaxRsApplication,作为运行类,用于初始化REST的运行环境,其代码如下:

 1 package com.scott.restlet.application;
 2 
 3 import org.restlet.Context;
 4 import org.restlet.ext.jaxrs.JaxRsApplication;
 5 
 6 
 7 public class RestJaxRsApplication extends JaxRsApplication {
 8 
 9     public RestJaxRsApplication(Context context) {
10         super(context);
11         this.add(new MyApplication());
12     }
13 
14 }

 

另外一个是MyApplication,作为应用类,继承了javax.ws.rs.core.Application,这里面绑定了我们的RESTLET的接口RESOURCE类,可以将多个资源绑定在HashSet中,代码如下:

 1 package com.scott.restlet.application;
 2 
 3 import java.util.HashSet;
 4 import java.util.Set;
 5 
 6 import javax.ws.rs.core.Application;
 7 
 8 import com.scott.restlet.resource.StudentResource;
 9 import com.scott.restlet.resource.TeacherResource;
10 
11 public class MyApplication extends Application {
12 
13     @Override
14     public Set<Class<?>> getClasses() {
15         Set<Class<?>> resources = new HashSet<Class<?>>();
16         
17         resources.add(StudentResource.class);
18         resources.add(TeacherResource.class);
19         
20         return resources;
21     }
22 
23 }

 

2.4 模型部分

       此实例的操作模型比较简单,就是一个Student类和一个Teacher类,代码如下:

Student

 1 package com.scott.restlet.modle;
 2 
 3 public class Student {
 4 
 5     private int id;
 6     private String name;
 7     private int sex;
 8     private int age;
 9     private int grade;
10 
11     public int getGrade() {
12         return grade;
13     }
14 
15     public void setGrade(int grade) {
16         this.grade = grade;
17     }
18 
19     public int getId() {
20         return id;
21     }
22 
23     public 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值