- 浏览: 253693 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
fjdingsd:
目前基于REST的Java框架不包括Jersey吗
Hello REST!!! -
qq690388648:
不错,说的很好!
Restlet实战(十四)如何在Restlet得到Servlet request和Session -
zhuanbiandejijie:
唉... 你09年就接触Restlet了.15年我才开始看Re ...
Hello REST!!! -
zmjiao:
client.options( 这个是那个包下面的? rest ...
Restlet实战(十八)Restlet如何产生WADL -
shihezichen:
对于最近很多人都在讨论的, 使用REST时就不应该掺杂事务的看 ...
Restlet实战(二十六)事务 (Transaction)
先说明本篇文章要实现的功能,仍然做一些假设,当前系统是基于Restlet的企业信息管理系统,而关于企业员工的管理,已经有人力资源系统,那么需求是人资系统可以实时查看企业信息管理系统中的人员资料是否与自己系统中的资料,这就涉及到Get操作,而另外,如果人员资料在人资系统中改变或者新增加员工,则需要通知企业信息管理系统去做相应的维护。
下文将演示一个人资系统从企业信息管理系统取用户的操作,以及员工信息改变,而通知企业管理信息系统做相应变更的功能。实际变成过程中,基于上述描述,我们用HttpClient来模拟人资系统,通过get和put xml来实现我们想要的功能。
1. 从企业信息管理系统取员工信息,对应的resource是UserReource
public class UserResource extends Resource { UserDAO userDAO; String userId; public UserResource(Context context, Request request, Response response) { super(context, request, response); userId = (String) request.getAttributes().get("userId"); getVariants().add(new Variant(MediaType.TEXT_PLAIN)); } @Override public Representation represent(Variant variant) { // get user data from database through user id User user = userDAO.getUserById(userId); Representation representation = new StringRepresentation(getUserXml(user), MediaType.TEXT_PLAIN); return representation; } private String getUserXml(User user){ StringBuffer userXml = new StringBuffer(); userXml.append("<user id=\"1\">"); userXml.append("<name>ajax</name>"); userXml.append("<phone>13888888888</phone>"); userXml.append("<email>ajax@iteye.com</email>"); userXml.append("<address>Shanghai</address>"); userXml.append("</user>"); return userXml.toString(); } public void setUserDAO(UserDAO userDAO){ this.userDAO = userDAO; } }
代码中的getUserXml是模拟真实环境中从数据库取值,然后转换成xml的过程,这样硬编码只是想让读者有个更清楚的认识。
然后用Httpclient模拟人资系统进行测试:
String url = "http://localhost:8080/restlet/resources/users/1"; HttpClient httpclient = new HttpClient(); Credentials defaultcreds = new UsernamePasswordCredentials("admin", "admin"); httpclient.getState().setCredentials(AuthScope.ANY, defaultcreds); GetMethod httpget = new GetMethod(url); try { httpclient.getHttpConnectionManager().getParams() .setConnectionTimeout(1000 * 60); httpclient.executeMethod(httpget); System.out.println(new String(httpget.getResponseBody())); } catch (HttpException e) { System.out.println("Please check your provided http address!"); e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { httpget.releaseConnection(); }
注意上述代码中的System.out.println(new String(httpget.getResponseBody())); 如果没有错误的话,这行代码应该打印出整个从Server构建的XML:
<user id="1"> <name>ajax</name> <phone>13888888888</phone> <email>ajax@iteye.com</email> <address>Shanghai</address> </user>
如果在客户端(即模拟的人资系统)拿到上面的xml后,然后通过xml的工具分析,然后做相应的操作,这些都依赖于需求了。
2. 人资系统通知企业信息管理系统更新员工信息,对应的资源依然是UserResource,向UserResource加入一些代码:
@Override public boolean allowPut() { return true; } @Override public void storeRepresentation(Representation entity) throws ResourceException { try { if(entity.getMediaType().equals(MediaType.TEXT_XML)){ String userXml = entity.getText(); User user = getInfoFromXml(userXml); //update the user into db } } catch (IOException e) { e.printStackTrace(); } }
思路很简单,接收从客户端请求传来的xml,然后解析出需要的数据,根据这些数据,更新数据库。看看客户端代码:
String url = "http://localhost:8080/restlet/resources/users/1"; HttpClient httpclient = new HttpClient(); Credentials defaultcreds = new UsernamePasswordCredentials("admin", "admin"); httpclient.getState().setCredentials(AuthScope.ANY, defaultcreds); PutMethod put = new PutMethod(url); StringBuffer userXml = new StringBuffer(); userXml.append("<user id=\"2\">").append("<name>Wood</name>").append( "<phone>13555555555</phone>").append( "<email>wood@iteye.com</email>").append( "<address>Guangzhou</address>").append("</user>"); try { put .setRequestEntity(new StringRequestEntity(userXml.toString(), "text/xml", "utf-8")); httpclient.getHttpConnectionManager().getParams() .setConnectionTimeout(1000 * 60); int status = httpclient.executeMethod(put); System.out.println(status); } catch (HttpException e) { System.out.println("Please check your provided http address!"); e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { put .releaseConnection(); }
本篇文章把企业信息管理系统(Restlet)作为服务端,着重演示了服务端如何相应相应相应的请求。实际上作为客户端的人资系统,例如获取xml后,同样需要解析之,并需要做进一步的处理;另外,发送xml过去更新员工信息,如果没有更新成功,要不要重发?还是不在发,这都是需要考虑的,还是那句话,这个要根据你项目的具体需求来的。所以,本篇文章就没有铺开展示了。
发表评论
-
Restlet实战(三十)(完结篇)运行流程之源代码分析(续)
2009-08-24 14:25 4163前面一篇文章分析了servlet里init方法,包括init方 ... -
Restlet实战(二十九)(完结篇)运行流程之源代码分析
2009-08-20 17:32 5313终于到了完结篇,也体 ... -
Restlet实战(二十八)源代码分析之压缩 (Compression)
2009-08-10 15:36 3267上篇文章我给出了如何 ... -
Restlet实战(二十七)压缩 (Compression)
2009-08-05 12:09 7206在进入代码部分之前,还是贴出<<RESTful W ... -
Restlet实战(二十六)事务 (Transaction)
2009-08-02 23:29 5397<<Restful Web Service> ... -
Restlet实战(二十五)缓存 (Cache)
2009-07-31 22:18 3994说明:以下部分文字说明摘自<<Restful We ... -
Restlet实战(二十四)获取参数值(续)
2009-07-31 14:44 10427这个系列之前已经有一篇文章写如何获取参数值,看Restlet实 ... -
欢迎加入Restlet圈子
2009-07-28 22:28 2822如果你进来是因为想看Restlet相关的文章,那么欢迎你加入r ... -
Restlet实战(二十三)实现条件GET (Conditional Get)
2009-07-28 17:47 5048先普及一下什么是条件GET,以下摘自<<Restf ... -
Restlet实战(二十二)仿造PUT和DELETE
2009-07-28 13:17 7192在Restlet实战(七)-提交和处理Web Form 中提到 ... -
Restlet实战(二十一)如何保护确定的资源(续)
2009-07-16 16:18 4002在Restlet实战(十七)如何保护确定的资源 中我给出一个如 ... -
Restlet实战(二十)使用Restlet之SSL
2009-07-15 21:37 3342待写 -
Restlet实战(十八)Restlet如何产生WADL
2009-07-11 21:57 9840现在究竟REST是否需要WADL这种东西,有很多争论,有人说不 ... -
Restlet实战(十七)如何保护确定的资源
2009-07-11 21:55 3434在面向资源的架构中, ... -
Restlet实战(十六)结合源代码分析及使用Filter
2009-07-11 21:13 5740其实在Web应用中Filter对大家来说一点都不陌生,比如说在 ... -
Restlet实战(十五)如何与表示层交互
2009-07-10 13:51 5378首先还是设定一个应用场景,看看用restlet如何实现。 ... -
Restlet实战(十四)如何在Restlet得到Servlet request和Session
2009-07-09 16:39 11526如果你现在已经有一个web系统,而为了一些需求,你集成了res ... -
Restlet实战(十三)如何在Servlet中呼叫Restlet
2009-07-09 14:47 4525看到这个题目,或许你会问,你之前的很多文章不都是与servle ... -
Restlet实战(十二)获取参数值
2009-07-07 15:06 6952本篇文章将讲解三种不 ... -
Restlet实战(十一)结合源代码修改Restlet-Spring配置文件
2009-07-04 23:56 6170上篇文章结合了Restlet的源码分析了Restlet-spr ...
相关推荐
在《Restlet实战(二十六)事务 (Transaction)》这篇博文中,作者可能会详细讲解如何在Restlet框架中实现上述事务处理策略。Restlet是一个开源的Java框架,专门用于构建RESTful应用程序。它提供了丰富的API和工具,...
本文将深入探讨如何使用Restlet来实现一个最简单的RESTful Web服务。 首先,了解REST的基本概念是必要的。REST强调的是资源的概念,通过URI(Uniform Resource Identifier)来标识,使用HTTP协议中的方法(如GET、...
在Java开发领域,REST(Representational State Transfer)架构风格已经成为构建Web服务的主流选择,而org.restlet-2.3.0.jar则是实现RESTful API的重要库。此版本作为最新的迭代,具有卓越的兼容性和稳定性,旨在为...
在实际使用中,开发者可以通过以下步骤利用Restlet Client调试Web API: 1. 安装插件:访问Chrome Web Store,搜索“Restlet Client”,下载并安装插件。 2. 创建请求:在插件界面输入API的URL,选择合适的HTTP方法...
本系列的开发实例将带你深入理解并掌握Restlet框架的使用,从基础的JAX-RS实现到高级的Component和Application结构,再到与Spring框架的整合。 首先,我们来看看"RESTLET开发实例(一)基于JAX-RS的REST服务.doc"。...
标题 "camel-restlet-spring-web-app" 暗示了一个基于Apache Camel、Restlet和Spring Web的应用程序示例,该示例使用Jetty作为嵌入式服务器。这个项目结合了这些技术来创建一个RESTful API服务。让我们深入探讨每个...
在开发环境中新建一个名为`RestService`的Java Web项目。 2. **添加必要的库文件** 将`%RESTLET_HOME%\lib`目录下的所有JAR包复制到项目的`WebRoot\WEB-INF\lib`目录,并确保它们都被正确地添加到了项目的类路径...
RESTlet是一款开源框架,专为构建基于REST(Representational ...通过学习这些资料,开发者可以深入理解RESTlet的工作原理,掌握如何使用RESTlet构建RESTful服务和客户端应用,从而提升其在Web服务开发领域的专业技能。
Restlet是一个开源框架,专为构建RESTful(Representational State Transfer)Web服务而设计。REST是一种轻量级的架构风格,常用于构建可扩展、高性能的互联网应用程序。本项目是针对Restlet 2.1版本的学习笔记,...
Restlet是一个开源的Java框架,专门用于构建RESTful(Representational State Transfer)Web服务。REST是一种软件架构风格,它强调简单、无状态和基于标准的HTTP协议进行通信。Restlet框架是实现这一风格的重要工具...
Restlet是一个轻量级的Java Web服务开发框架,它提供了构建RESTful(Representational State Transfer)应用程序的工具和API。REST是一种架构风格,强调简洁、无状态和可缓存的网络交互,常用于构建高性能、高可用性...
此外,理解RESTful设计原则,如资源的URI定位、状态码的使用、无状态通信等,对于有效利用Restlet构建高质量的Web服务也是十分必要的。 总之,"Restlet所需要的所有jar包"的压缩包提供了开发RESTful服务的基础环境...
【Restlet in Action 中文】这本书是一本针对Java开发者介绍Restlet框架的实战指南,旨在帮助读者更好地理解和使用RESTful Web API。Restlet是一个开源的Web框架,它以面向对象的方式提供了一系列类和示例,使得...
总的来说,"restlet restful"项目是一个基于RESTlet框架的RESTful Web服务实现,提供了便捷的客户端和服务端通信方式,便于开发和测试。通过"RestApplication"类,我们可以创建和管理REST资源,实现对HTTP请求的处理...
### RESTLET框架学习知识点 #### 一、RESTLET框架概览 ...通过上述内容的学习和实践,开发者可以全面掌握RESTLET框架的使用方法,并能够运用其构建高效、稳定、易于维护的RESTful Web应用和服务。
而Restlet是一个专注于REST(Representational State Transfer)架构风格的Java库,它允许开发人员轻松地创建RESTful Web服务和客户端。将Spring与Restlet结合,可以利用Spring的强大功能来构建高效、可扩展的REST...
**RESTLET IN ACTION** 这本书是一部关于RESTlet框架的详细介绍,旨在帮助读者更好地理解和掌握REST架构,并使用RESTlet框架来构建高质量的Web应用程序和服务。本书分为三个部分,分别是:“开始启动(Getting ...
用户在安装了Restlet Client之后,直接点击插件图标即可开始使用,只需输入自己的网站并选择好对应的请求模式就能对网站发送Web请求并检查响应,同时使用者可以先将多个API请求组合成一个方案来创建一个针对网站的...
书中不仅介绍了Restlet框架的基本概念和技术细节,还通过丰富的示例代码展示了如何设计、实现和部署RESTful Web服务。 #### 二、Restlet框架简介 **Restlet** 是一个灵活且强大的Java框架,用于构建RESTful Web...
6. **自动化测试**: 虽然`Restlet Client`主要作为手动测试工具,但通过编写脚本,也可以实现一定程度的自动化测试。 7. **安全性**: 支持OAuth 2.0和其他身份验证机制,保障API测试的安全性。 ### 使用场景 - **...