关于Rest的起源和框架、入门资料的一些东西大家可以去看看ajax的博客,我直接从第一步开始吧。
首先要从
http://www.restlet.org/downloads/stable下载并安装Restlet,我安装的是2.0.10 Java EE 版。
安装完成后,docs里面是文档,lib里面是我们需要的类库,src是Restlet的源码。src目录下org.restlet.example包里面有很多的例子可以学习,说明可以看readme.txt。
接下来开始我们的第一个应用。
我的环境是JDK1.5+MyEclipse8.6+tomcat5.5.25。
1.创建项目
首先在eclipse中创建一个Web Project,命名为firstSteps,JavaEE级别选5.0。部署在tomcat中后,启动tomcat,通过浏览器访问
http://localhost:8080/firstSteps/ 能看到首页。
2.导入包
从Restlet安装目录/lib中将org.restlet.jar拷贝至项目/WebRoot/WEB-INF/lib目录下,并加入Build Path中。
3.Let's Roll
在src目录下创建包com.sunny.restlet.firstSteps。
在包中创建Resource类HelloWorldResource,代码如下:
package com.sunny.restlet.firstSteps;
import org.restlet.resource.Get;
import org.restlet.resource.ServerResource;
/**
* Resource which has only one representation.
*/
public class HelloWorldResource extends ServerResource {
@Get
public String represent() {
return "hello, world";
}
}
这就是我们的资源类,可以看到里面将represent方法注释成@Get,这表明资源类要将represent方法对外提供为Get访问。
接下来是Application类FirstStepsApplication:
package com.sunny.restlet.firstSteps;
import org.restlet.Application;
import org.restlet.Restlet;
import org.restlet.routing.Router;
public class FirstStepsApplication extends Application {
@Override
public synchronized Restlet createRoot() {
// Create a router Restlet that routes each call to a
// new instance of HelloWorldResource.
Router router = new Router(getContext());
// Defines only one route
router.attachDefault(HelloWorldResource.class);
return router;
}
}
FirstStepsApplication中将HelloWorldResource附加到Context上。
我们需要一个主类将Application附加到Host上并启动服务:
package com.sunny.restlet.firstSteps;
import org.restlet.Component;
import org.restlet.data.Protocol;
public class FirstStepsMain {
public static void main(String[] args) throws Exception {
// Create a new Component.
Component component = new Component();
// Add a new HTTP server listening on port 8182.
component.getServers().add(Protocol.HTTP, 8182);
// Attach the sample application.
component.getDefaultHost().attach("/firstSteps",
new FirstStepsApplication());
// Start the component.
component.start();
}
}
主类会启动本地的8182端口作为主机并将FirstStepsApplication附加到/firstSteps目录。
4.运行
运行FirstStepsMain类,会输出以下信息:
- 2012-1-11 2:25:35 org.restlet.engine.http.connector.HttpServerHelper start
- 信息: Starting the internal HTTP server on port 8182
此时可以通过浏览器访问
http://localhost:8182/firstSteps/就可以看到提示信息“hello, world”了。
第一个Restlet应用运行成功。
5.在Servlet容器中运行
刚才只是我们运行一个主类来启动8182端口作为主机,很多人可能更希望在Servlet容器中启动服务。
5.1.导入包
想要在Servlet容器中运行Restlet,需要导入包org.restlet.ext.servlet.jar,同样可以在Restlet/lib目录下找到它。
5.2.配置RestletServlet
修改WEB-INF/web.xml,在</web-app>前加入以下配置:
<servlet>
<servlet-name>RestletServlet</servlet-name>
<servlet-class>org.restlet.ext.servlet.ServerServlet</servlet-class>
<!-- FirstStepsApplication -->
<init-param>
<param-name>org.restlet.application</param-name>
<param-value>com.sunny.restlet.firstSteps.FirstStepsApplication</param-value>
</init-param>
</servlet>
<!-- Catch all requests -->
<servlet-mapping>
<servlet-name>RestletServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
5.3.部署运行
重新部署firstSteps,通过浏览器访问
http://localhost:8080/firstSteps/就可以看到首页变成提示信息“hello, world”了。
至此Servlet运行成功。