首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

RESTLET开发实例(2)使用Component、Application的REST服务

2013-11-08 
RESTLET开发实例(二)使用Component、Application的REST服务?然后把相应的restlet的lib下的全部jar加入工程

RESTLET开发实例(二)使用Component、Application的REST服务

?

然后把相应的restlet的lib下的全部jar加入工程引用中,然后在web.xml,加入如下配置:

<context-param>

<param-name>org.restlet.application</param-name>

<param-value>org.lifeba.ws.app.RestSimpleApplication</param-value>

</context-param>

<servlet>

<servlet-name>RestletServlet</servlet-name>

<servlet-class>org.restlet.ext.servlet.ServerServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>RestletServlet</servlet-name>

<url-pattern>/*</url-pattern>

</servlet-mapping>

上面的配置和基于JAX-RS的配置一样的。

?

2、新建RestSimpleApplication对象。将应用程序和资源类绑定在一起,代码如下:

public class RestSimpleApplication extends org.restlet.Application{

@Override

public Restlet createInboundRoot() {

Router router = new Router(getContext());

router.attach(“/student/{studentId}”, StudentResource.class);

return router;

}

}

和JAX-RS不同主要有2个地方:

?

1)RestSimpleApplication直接扩展了Application对象,而不是JAX-RS中的JaxRsApplication对象。

2)重载了createInboundRoot通过attach方法绑定资源类,并且制定了访问路径。而JAX-RS中调用了this.add(new StudentApplication())来绑定资源类,并且不用指定访问路径,因为是在资源类中指定。

3、新建Student对象,代码如下:和JAX-RS的区别就是少了@XmlRootElement(name=”Student”)标注。

public class Student {

private int id;

private String name;

private int sex;

private int clsId;

private int age;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getSex() {

return sex;

}

public void setSex(int sex) {

this.sex = sex;

}

public int getClsId() {

return clsId;

}

public void setClsId(int clsId) {

this.clsId = clsId;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public String toString(){

return “Id:”+this.id+”\r\nName:”+this.name+”\r\nClass:”+

this.clsId+”\r\nSex:”+this.sex+”\r\nAge:”+this.age;

}

}

4、新建StudentResource类,该类扩展ServerResource类。代码如下:

public class StudentResource extends ServerResource{

private int id;

@Override

protected void doInit() throws ResourceException {

id = Integer.valueOf((String) getRequestAttributes().get(“studentId”));

}

@Get

public Representation get(Representation entity) {

Student student = ResourceHelper.findStudent(id);

return new StringRepresentation(student.toString());

}

}

上面的代码实现的功能和JAX-RS中的下面的代码的功能一样,都是根据ID来获取对应的student信息。

@GET

@Path(“{id}/xml”)

@Produces(“application/xml”)

public Student getStudentXml(@PathParam(“id”) int id) {

return ResourceHelper.findStudent(id);

}

非JAX-RS模式的,扩展了ServerResource类,并且重载了doInit()方法用来获取传递过来的studentId占位符的值。因为没有传递method方法,默认是调用@Get标注的无参方法,最后返回StringRepresentation对象(你也可以返回xml或json的Representation对象)。

JAX-RS的也是类似,不过他的方法是带参数,并且返回一个Student对象(会根据@Produces(“application/xml”)自动封装xml数据)。

?

5、完成了上面的主要类得创建和编写,你就可以在tomcat中运行了,启动tomcat后,访问

?

http://localhost:8085/RestApplication/student/1,你将看到下面界面:

?

RESTLET开发实例(2)使用Component、Application的REST服务 不错,谢谢

热点排行