`
huchunyong1987
  • 浏览: 20514 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Restlet与Spring 集成

阅读更多
   RestLet 作为一种对Restful的实现,基于JRS-RS实现规范,其思想有别于JRS-WS,它极大的方便了开发人员的效率,如果RestLet能和Spring集成在一起,则更能现示出RestLet在这方面的前劲势力,本篇文章主要以实例的形式对RestLet与Spring的集成进行解读:

下载所需jar包文件,其中包括:
JDK1.5、Tomcat6.x、 RestLet2.5、Spring2.5、eclipse3.4

下面我们就以一个简单的增加用户为例来完成本篇文章。

一、我们首先搭建一个 Web 环境authuser,然后创建一个Rest 的接口文件,作为客户端请求的入口。
package com.test;

public class UserRest{

public void addUser(String id,String userName,String pwd)/* 请求时值会被自动赋予 */{

//do actor operator

getResponse().setStatus(Status.SUCCESS_OK);  //正确返回的状态码
getResponse().setEntity(new StringRepresentation("actor json value")); //实现要返回的值
}
}

二、RestLet 配置文件与spring集成是的配置

restletContext.xml

******************************************
<bean id="component.context"
class="org.springframework.beans.factory.config.PropertyPathFactoryBean" />

<bean id="component" class="org.restlet.ext.spring.SpringComponent">
<property name="defaultTarget" ref="application" />
</bean>
<bean id="application" class="cn.ceopen.xframework.core.base.rest.BaseApplication">
<constructor-arg ref="component.context" />
<property name="root" ref="restRoute" />
</bean>
<bean id="restRoute" class="org.restlet.ext.spring.SpringRouter">
<property name="attachments">
<map>
/* 可以存放多个key-value对,key可以自已定义,value值引用上面user bean id值 */
<entry key="/user" value-ref="userRoute" />
</map>
</property>
</bean>
***************************************
userContext.xml

<bean id="userRoute" class="org.restlet.ext.spring.SpringRouter">
<property name="attachments"> 
<map> 
<entry key="/addUser"> 
<bean class="org.restlet.ext.spring.SpringFinder">
<lookup-method name="createResource" bean="userRest" />  /* userRest为spring实例化的Bean*/
</bean> 
</entry>                
</map> 
</property> 
</bean> 

<bean id="userRest" class="com.test.UserTest"  scope="prototype"></bean>  /* scope必须为prototype */

*******************************************

三、在web.xml中的配置

/*首先应该让Tomcat启动时可以读到上面两文件,所以应该加入:*/
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:yourPath/**/*.xml;
</param-value>
</context-param>

/* 其次加入filter,listener */

/* 启动Spring容器 */
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

/* 中文编码 */
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>   


<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/ws/*</url-pattern>
</filter-mapping>

/* restlet与spring集成servlet */
<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>/* 此名字应与上面restletContext.xml文件中id为component同名 */
</init-param> 
</servlet>
<servlet-mapping>
<servlet-name>restlet</servlet-name>
<url-pattern>/ws/*</url-pattern>
</servlet-mapping>

这样我们的配置工作就完成了,
四、下面我们可以测试一下我们所做的工作。
测试文件,即一个简单的html文件的AJAX调用即可:我们启名为home.html

<script type="text/javascript">

/* 增加用户信息 **/
function addAccount(){
var xmlHttp = ajaxObjHolder();

//注:此处参数要和addUser方法中的参数名一一对应,这样数值才能自动存入其中。

var params = "{\"id\" : \"001\",\"userName\" : \"zhw\",\"pwd" : \"123\"}";
xmlHttp.onreadystatechange=function(){
if(xmlHttp.readyState==4){
if(xmlHttp.status == 200){
alert("results: "+xmlHttp.responseText);
}
}
};

// 注意此URL的写法,
//  ws为 web.xml中配置的路径,
// user 为restletContext.xml文件中的attachments的key值,
// addUser为请求操作方法名
xmlHttp.open("POST","http://localhost:8080/authcenter/ws/user/addUser",true);
xmlHttp.setRequestHeader("Content-Type", "application/json");
xmlHttp.setRequestHeader("charset", "UTF-8");

xmlHttp.send(params);   
}

/** obtain ajax object */
function ajaxObjHolder(){
var xmlHttp;
try{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
//netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
}catch (e){
// Internet Explorer
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
return xmlHttp;
}

</script>

<input type="button" name="添加帐号" value="添加帐号" onclick="addAccount();"/>

运行测试,成功后,会在页面弹出一已持久化的Json形式表示的数据。如:

{"id":"001","userName":"zhw","pwd":"123"}

分享到:
评论

相关推荐

    camel-restlet-spring-web-app

    通过这个示例,开发者可以学习如何在Spring环境中集成Apache Camel和Restlet,构建可扩展的REST服务。这有助于理解服务之间的交互、HTTP请求的处理以及如何利用Camel的路由能力来构建复杂的企业级应用。对于想要学习...

    Restlet2 + Spring3 注解方式配置

    在本文中,我们将深入探讨如何在Spring 3框架中集成Restlet 2,利用注解方式进行配置。Restlet是一个轻量级的Java RESTful Web服务开发库,而Spring则是一个广泛使用的全面的企业级应用框架。结合两者,我们可以创建...

    restlet2.0+spring3.0+hibernate3.3.框架集成

    - **集成Spring**:Spring可以作为Restlet应用的容器,管理Restlet组件的生命周期。同时,Spring的AOP功能可以用于事务管理和安全控制。Spring MVC可以处理HTTP请求,与Restlet协同工作,提供更丰富的Web服务。 - *...

    基于Spring的Restlet实例

    4. **Spring与Restlet集成**:将Restlet集成到Spring应用中,我们通常需要配置Restlet的Servlet或Filter,以便处理HTTP请求。这涉及到Spring的上下文配置和Restlet的组件注册。 5. **创建REST资源**:使用Restlet,...

    Restlet开发实例

    最后,"RESTLET开发实例(三)基于spring的REST服务.doc"会介绍如何将Restlet与Spring框架集成。Spring是Java企业级应用开发的主流框架,提供了丰富的功能和优秀的依赖注入机制。结合Spring,Restlet服务可以利用...

    Restlet学习的三篇文章

    在REST服务中,Spring可以帮助管理bean的生命周期,提供事务控制,以及与其他Spring组件(如数据库访问、安全等)集成。整合Restlet和Spring,开发者可以利用Spring的优势来增强Restlet服务的复杂性和可维护性。这...

    org.restlet-1.1.7.jar.zip

    8. **与其他技术的集成**:Restlet可以轻松集成到Spring、Guice等其他Java框架中,也支持JAXB和JSON等多种数据格式的序列化和反序列化。 9. **测试工具**:Restlet提供了一套测试工具,帮助开发者对REST服务进行...

    52-restlet.rar_restlet

    8. **扩展与集成**:可能包含如何将Restlet与其他技术(如Spring框架、JAX-RS规范、Servlet容器等)集成,以实现更复杂的Web服务。 9. **实战示例**:提供具体的代码示例,演示如何创建一个完整的REST服务,包括...

    CAS 集成Restlet Integration相关 7个jar

    cas-server-integration-restlet-3.5.2.jar cglib-nodep-2.1_3.jar ...restlet.ext.spring-1.1.1.jar

    spring2.5 api

    这使得与Java EE容器的集成更加顺畅。 五、国际化支持(Internationalization, i18n) Spring 2.5 增强了对多语言环境的支持,可以通过 @MessageSource 注解和 MessageSource 接口来处理不同语言的文本资源。 六、...

    RESTlet自用2

    通过集成Spring框架,RESTlet 2_0允许开发者利用Spring的强大功能,如依赖注入、AOP(面向切面编程)以及丰富的社区支持,来增强REST服务的实现和管理。 "Rest框架及实践.ppt"可能是一个关于RESTful服务开发的演示...

    restful-webservice构建小例子(restlet)

    3. 可以集成到其他框架中:Restlet 框架可以与其他框架集成,例如 Spring、Struts 等,提供了一个更加灵活和可扩展的解决方案。 具体实现 1. 采用 Restlet 框架来支持 REST,封装 DBCP 数据库连接池来提供数据库...

    reslet2.0+spring3.0+hibernate3.3框架集成

    "reslet2.0+spring3.0+hibernate3.3框架集成" 这个标题表明这是一个关于Java开发中的技术整合项目。Reslet 2.0是一个轻量级的REST(Representational State Transfer)应用框架,用于构建Web服务和应用程序。Spring ...

    restlet1.0源码+doc

    4. **高级主题**:涵盖如安全、性能优化、与其他技术(如JPA、Spring)集成等高级话题,有助于开发者解决实际问题。 5. **案例研究**:文档可能包含了一些示例应用,展示如何在不同场景下使用Restlet,包括创建复杂...

    restful webservice构建小例子(restlet).pdf

    3. 与Spring等框架的完美集成:Restlet可以与其他框架,如Struts2、Spring等无缝配合,方便开发者使用。 构建过程包括以下几个步骤: 1. 创建Web工程:首先建立一个基于Tomcat的Web项目,用于调试和部署RESTful...

    <Reslet1>:Reslet+Spring,配置简单web访问

    《Reslet1:Reslet+Spring,构建简易Web...但只要掌握了基本的Reslet+Spring集成方式,就可以在此基础上进行扩展和优化。希望这篇文章能帮助你理解和实践Reslet与Spring的结合,为你的Web开发之旅增添新的工具和技能。

    reslet2.0+spring3.0+hibernate3.3集成

    这个花了一点时时间做出来的简单的集成RSH框架,喜欢restlet的朋友可以研究研究,大家一起讨论一下,最简单的一个流程,已经完成了,个人感觉比ssh框架开发简单,中间都没有对象new,都通过spring注入方式获取对象,...

    使用注解配置Spring多数据源

    Restlet是一个轻量级的Java RESTful Web服务库,可以与Spring集成。在处理HTTP请求时,根据请求参数或业务逻辑,选择合适的数据源进行操作。MySQL是常用的开源关系型数据库,与Spring的JdbcTemplate或MyBatis等ORM...

Global site tag (gtag.js) - Google Analytics