当前位置:网站首页 > Java教程 > 正文

java restlet 教程



  由于近期工作的需要,要把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类中同时对外提供多个rest接口服务。具体的实现步骤见如下章节。

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

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

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

       RestJaxRsServer类的代码如下:

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

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

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

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

Student

Teacher

       这部分是我们的RESTLET接口实现部分,此处我们有两个接口实现类,一个是StudentResource,一个是TeacherResource,分别对外提供不同的REST接口服务。至于StorageOperator类,把它当做一个内存数据库好了,其实就是一个HashMap,StudentResource和TeacherResource的操作会在StorageOperator类中具体实现。代码如下:

StudentResource

TeacherResource

StorageOperator

       在类的上面标注的PATH注解,作为全局的一个路径变量,方法上部的PATH注解都以类注解作为相对路径。并且,Produce表示返回的数据格式,此处是JSON类型。至于GET和POST,可以简单的理解为:

POST   /uri     创建

DELETE /uri/xxx 删除

PUT    /uri/xxx 更新或创建  

GET    /uri/xxx 查看

       客户端的访问REST接口,可以通过浏览器来输入url访问,也可以通过代码来访问,通过代码来访问的代码此处封装在了Client类中,代码如下:

StudentOperateClient

TeacherOperateClient

Client

       运行,得到如下结果:

服务端启动后:

客户端启动后的客户端信息:

客户端启动的服务端信息:

当然,此处的例子规模和功能都很小,是在参考了[2]的基础上稍加改造,算是可以作为学习RESTLET的第一步吧。

[1]http://whui0110.iteye.com/blog/

[2]http://www.infoq.com/cn/articles/rest-introduction

[3]http://www.lifeba.org/arch/restlet_develop_jax-rs_service_1.html

版权声明


相关文章:

  • java飞机大战游戏开发教程2025-02-09 13:02:03
  • java string菜鸟教程2025-02-09 13:02:03
  • mac java教程 pdf2025-02-09 13:02:03
  • java在线教程2025-02-09 13:02:03
  • java窗体安装教程2025-02-09 13:02:03
  • java包装编程教程2025-02-09 13:02:03
  • java表达映射教程2025-02-09 13:02:03
  • java教程4232025-02-09 13:02:03
  • 数据结构java教程2025-02-09 13:02:03
  • java教程405集2025-02-09 13:02:03