首先将相应的jar文件放到WEB-INF/lib下,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">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:applicationContext*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>restlet</servlet-name>
<servlet-class>com.noelios.restlet.ext.spring.SpringServerServlet</servlet-class>
<init-param>
<param-name>org.restlet.component</param-name>
<param-value>component</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>restlet</servlet-name>
<url-pattern>/resources/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
接下来对CustomerResource做一修改,值得注意的是与Spring集成,Resource类里面有一些规则,首先必须有一个无参的构造参数,一个init方法,这个方法包含那些原来定义在非默认构造函数的代码。
public class CustomerResource extends Resource {
String customerId = "";
private CustomerDAO customerDAO;
@Override
public void init(Context context, Request request, Response response) {
super.init(context, request, response);
customerId = (String) request.getAttributes().get("custId");
}
public CustomerResource(){
getVariants().add(new Variant(MediaType.TEXT_PLAIN));
}
public CustomerResource(Context context, Request request, Response response) {
super(context, request, response);
getVariants().add(new Variant(MediaType.TEXT_PLAIN));
}
@Override
public Representation getRepresentation(Variant variant) {
String userMsg = customerDAO.getCustomerById(customerId);
Representation representation = new StringRepresentation(userMsg,
MediaType.TEXT_PLAIN);
return representation;
}
public void setCustomerDAO(CustomerDAO customerDAO) {
this.customerDAO = customerDAO;
}
}
需要说明的是按照现在三层架构流行分法,我们姑且认为Resource就是我们常说的Service层,那么在resource里面我们需要调用数据层的类来完成对数据的处理。上面代码中,我创建了一个CustomerDAO作为数据处理层,相关类代码如下:
public interface CustomerDAO {
public String getCustomerById(String id);
}
public class CustomerDAOImpl implements CustomerDAO {
public String getCustomerById(String id) {
String name = "ajax";
String address = "Shanghai";
return "The customer name is " + name + " and he is from " + address;
}
}
Spring配置文件applicationContext-***.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans default-autowire="byName" xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="component" class="org.restlet.ext.spring.SpringComponent">
<property name="defaultTarget" ref="restRoute" />
</bean>
<bean id="restRoute" class="org.restlet.ext.spring.SpringRouter">
<property name="attachments">
<map>
<entry key="/customers/{custId}">
<bean class="org.restlet.ext.spring.SpringFinder">
<lookup-method name="createResource" bean="customerResource" />
</bean>
</entry>
</map>
</property>
</bean>
<bean id="customerResource" class="com.resource.CustomerResource" scope="prototype">
<property name="customerDAO" ref="customerDAO" />
</bean>
<bean id="customerDAO" class="com.dao.impl.CustomerDAOImpl"/>
</beans>
ok,所有配置以及代码完成,下面做一个简单的测试,打开浏览器输入:http://localhost:8080/restlet/resources/customers/1
页面结果是:
The customer name is ajax and he is from Shanghai
看上面的Spring配置,如果有多个URL,例如
/customers/{custId},
/customers/{custId}/orders,
/customers/{custId}/orders/{orderId}
那么/customers需要重复三次,有什么办法简化吗?看下面改造后的配置:
<bean id="restRoute" class="org.restlet.ext.spring.SpringRouter">
<property name="attachments">
<map>
<entry key="/customers" value-ref="customerRoute" />
</map>
</property>
</bean>
<bean id="customerRoute" class="org.restlet.ext.spring.SpringRouter">
<property name="attachments">
<map>
<entry key="/{customerId}">
<bean class="org.restlet.ext.spring.SpringFinder">
<lookup-method name="createResource" bean="customerResource" />
</bean>
</entry>
</map>
</property>
</bean>
这样,可以动态配置基于/customers/*的URL了,如果你仍旧不明白,看一下官方的restlet与Spring结合的例子。
原文地址:http://ajaxcn.javaeye.com/blog/416913
分享到:
相关推荐
Restlet与Spring集成是将Restlet框架与Spring框架结合,以增强RESTful服务的开发能力。Restlet是一个轻量级的Java框架,专门用于构建REST(Representational State Transfer)架构风格的应用程序。它遵循JAX-RS...
标题"基于Spring的Restlet实例"意味着我们将探讨如何在Spring环境中集成和使用Restlet库来开发REST服务。这通常涉及以下几个关键知识点: 1. **RESTful服务基础**:REST是一种软件架构风格,强调通过HTTP协议暴露...
在本文中,我们将深入探讨如何在Spring 3框架中集成Restlet 2,利用注解方式进行配置。Restlet是一个轻量级的Java RESTful Web服务开发库,而Spring则是一个广泛使用的全面的企业级应用框架。结合两者,我们可以创建...
- **集成Spring**:Spring可以作为Restlet应用的容器,管理Restlet组件的生命周期。同时,Spring的AOP功能可以用于事务管理和安全控制。Spring MVC可以处理HTTP请求,与Restlet协同工作,提供更丰富的Web服务。 - *...
通过这个示例,开发者可以学习如何在Spring环境中集成Apache Camel和Restlet,构建可扩展的REST服务。这有助于理解服务之间的交互、HTTP请求的处理以及如何利用Camel的路由能力来构建复杂的企业级应用。对于想要学习...
cas-server-integration-restlet-3.5.2.jar cglib-nodep-2.1_3.jar ...restlet.ext.spring-1.1.1.jar
最后,"RESTLET开发实例(三)基于spring的REST服务.doc"会介绍如何将Restlet与Spring框架集成。Spring是Java企业级应用开发的主流框架,提供了丰富的功能和优秀的依赖注入机制。结合Spring,Restlet服务可以利用...
8. **与其他技术的集成**:Restlet可以轻松集成到Spring、Guice等其他Java框架中,也支持JAXB和JSON等多种数据格式的序列化和反序列化。 9. **测试工具**:Restlet提供了一套测试工具,帮助开发者对REST服务进行...
在REST服务中,Spring可以帮助管理bean的生命周期,提供事务控制,以及与其他Spring组件(如数据库访问、安全等)集成。整合Restlet和Spring,开发者可以利用Spring的优势来增强Restlet服务的复杂性和可维护性。这...
8. **扩展与集成**:可能包含如何将Restlet与其他技术(如Spring框架、JAX-RS规范、Servlet容器等)集成,以实现更复杂的Web服务。 9. **实战示例**:提供具体的代码示例,演示如何创建一个完整的REST服务,包括...
通过集成Spring框架,RESTlet 2_0允许开发者利用Spring的强大功能,如依赖注入、AOP(面向切面编程)以及丰富的社区支持,来增强REST服务的实现和管理。 "Rest框架及实践.ppt"可能是一个关于RESTful服务开发的演示...
3. 可以集成到其他框架中:Restlet 框架可以与其他框架集成,例如 Spring、Struts 等,提供了一个更加灵活和可扩展的解决方案。 具体实现 1. 采用 Restlet 框架来支持 REST,封装 DBCP 数据库连接池来提供数据库...
Spring 2.5 还包含了对其他方面的改进,如对 Quartz 和 Commons Job Scheduling 的支持,以及对缓存框架如 EhCache 的集成等。 总之,Spring 2.5 API 提供了一系列创新特性和改进,极大地提高了开发效率和代码的可...
"reslet2.0+spring3.0+hibernate3.3框架集成" 这个标题表明这是一个关于Java开发中的技术整合项目。Reslet 2.0是一个轻量级的REST(Representational State Transfer)应用框架,用于构建Web服务和应用程序。Spring ...
4. **高级主题**:涵盖如安全、性能优化、与其他技术(如JPA、Spring)集成等高级话题,有助于开发者解决实际问题。 5. **案例研究**:文档可能包含了一些示例应用,展示如何在不同场景下使用Restlet,包括创建复杂...
3. 与Spring等框架的完美集成:Restlet可以与其他框架,如Struts2、Spring等无缝配合,方便开发者使用。 构建过程包括以下几个步骤: 1. 创建Web工程:首先建立一个基于Tomcat的Web项目,用于调试和部署RESTful...
Restlet是一个轻量级的Java RESTful Web服务库,可以与Spring集成。在处理HTTP请求时,根据请求参数或业务逻辑,选择合适的数据源进行操作。MySQL是常用的开源关系型数据库,与Spring的JdbcTemplate或MyBatis等ORM...
《Reslet1:Reslet+Spring,构建简易Web...但只要掌握了基本的Reslet+Spring集成方式,就可以在此基础上进行扩展和优化。希望这篇文章能帮助你理解和实践Reslet与Spring的结合,为你的Web开发之旅增添新的工具和技能。
这个花了一点时时间做出来的简单的集成RSH框架,喜欢restlet的朋友可以研究研究,大家一起讨论一下,最简单的一个流程,已经完成了,个人感觉比ssh框架开发简单,中间都没有对象new,都通过spring注入方式获取对象,...
4. **Spring 框架集成**:掌握如何在 Spring 应用程序中集成 Camel,利用 Spring 的依赖注入和生命周期管理特性。 5. **Web 应用开发**:熟悉 Web 应用的基本架构,包括 Servlet、过滤器和监听器的使用,以及如何...