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"}
分享到:
相关推荐
Restlet2 + Spring3 注解方式配置
简单做了一个rsh框架的集成,知道这个而且需要欢迎下载,大家有需要的下载了给点宝贵意见。
cas-server-integration-restlet-3.5.2.jar cglib-nodep-2.1_3.jar ...restlet.ext.spring-1.1.1.jar
这个花了一点时时间做出来的简单的集成RSH框架,喜欢restlet的朋友可以研究研究,大家一起讨论一下,最简单的一个流程,已经完成了,个人感觉比ssh框架开发简单,中间都没有对象new,都通过spring注入方式获取对象,...
通过java开源框架restlet来做了一个集成,比起以前的ssh框架,稍微做起来简单,而且速度也快,有什么不足的大家下载后,请给出宝贵的意见。
服务集成中件间模块通过REST和SPRING开源架构完成应用集成平台上不同系统间的消息传输。页面集成模块通过ApacheWeb服务器提供的功能以及一套页面集成的开发规则构成,可以方便地将平台上其它系统的功能页面片段集成到...
org.restlet.ext.spring_2.5.jar org.restlet.jar n 下载 CGlib http://sourceforge.net/projects/cglib/files/ 拷贝到 D:\server\apache-tomcat-6.0.18\webapps\cas\WEB-INF\lib 。 n 下载 ASM/OW2 ...
当前用于 CAS 3.5.x 系列的基于 Restlet 的 REST 模块已经完全打破了 Restlet 和其他 Spring 模块(如cglib和asm具有运行时依赖冲突地狱的一些覆盖构建。 而不是“对抗”这些将这个重量级的 Restlet 库压缩到现有的...
使用的技术:Java,Hibernate,Spring框架和用于认证的Spring Security,Restlet(REST风格的Web开发),用于HTML模板的FreeMarker,Subversion,Jenkins和Sonar用于代码质量度量 大量的测试工作(750多个测试用例)...