`
ajax
  • 浏览: 253717 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Restlet实战(十二)获取参数值

    博客分类:
  • REST
阅读更多

本篇文章将讲解三种不同值的获取方法。

 

1.从Web Form中获取值

 

    如果看过此系列文章中的Restlet实战(七)-提交和处理Web Form 对此应该有一定的印象,简单把代码贴过来加深印象:

 

@Override  
public boolean allowPost() {   
    return true;   
}   
  
@Override  
   public void acceptRepresentation(Representation entity) throws ResourceException {   
    Form form = new Form(entity);   
    Customer customer = new Customer();   
    customer.setName(form.getFirstValue("name"));   
    customer.setAddress(form.getFirstValue("address"));   
    customer.setRemarks("This is an example which receives request with put method and save data");   
       
    customerDAO.saveCustomer(customer);   
}

 除了上面这样的方式获取Web Form外,实际上Web Form是POST 请求送到服务器的实体,所以也可以从Request中获得,我们对上述类做一修改。

 

@Override
public void init(Context context, Request request, Response response) {
	super.init(context, request, response);
	
	Form form = request.getEntityAsForm();
	Customer customer = new Customer();
	customer.setName(form.getFirstValue("name"));
	customer.setAddress(form.getFirstValue("address"));
}

 从方法调用顺序上讲,init方法调用在前,acceptRepresentation方法调用在后,有意思的是,如果这两个方法里面都有拦截取Form的代码,那么Restlet将抛出一个异常,内容如下:

 

java.lang.IllegalStateException: 
The Web form cannot be parsed as no fresh content is available. 
If this entity has been already read once, caching of the entity is required

 

意思是Form已经被分析过一次,如果想再次用,建议cache这个form,呵呵,有意思。

 

 2. 从查询中获取值

 

 对Restlet实战(七)-提交和处理Web Form 中的index.jsp做一个简单的修改:

 

<form name="form1" action="<%=request.getContextPath()%>/resources/customers?query=test" method="post">
	Name:<input type="text" name="name"/><br>
	Address:<input type="text" name="address"/><br>
	<input type="button" value="Submit" onclick="doSubmit()"/>
</form>

 在/resources/customers后面加了?query=test,修改CustomersResource的init方法来获取查询值:

 

@Override
public void init(Context context, Request request, Response response) {
	super.init(context, request, response);
	
	Form form = request.getResourceRef().getQueryAsForm();
	for (Parameter parameter : form) {
		System.out.print("parameter " + parameter.getName());
		System.out.println("/" + parameter.getValue());
	}
}

 方法我们不作过多的处理,只是验证是否能获取到值。

 

3. 从Cookie中获取值

cookie能直接从request中获得,返回的是一个cookie的对象集合,同上,在init方法里面添加如下代码:

 

for (Cookie cookie : request.getCookies()) {
    System.out.println("name = " + cookie.getName());
    System.out.println("value = " + cookie.getValue());
    System.out.println("domain = " + cookie.getDomain());
    System.out.println("path = " + cookie.getPath());
    System.out.println("version = " + cookie.getVersion());
}

 

分享到:
评论

相关推荐

    Restlet实战(二十六)事务 (Transaction)

    本文将深入探讨RESTful服务中的事务处理,并以《Restlet实战(二十六)事务 (Transaction)》为例进行解析。 首先,我们要理解RESTful服务中的核心原则之一是无状态(Stateless)。这意味着每个客户端请求都包含处理...

    Java Restlet获取请求头实例

    Restlet 实现ServerResource类 列子有: 返回简单JSON类型 获取请求头,返回请求头 接收简单Json类型数据 将复杂对象使用Json格式返回

    RestletClient接口调试

    RestletClient是一款强大的接口调试工具,它为开发者提供了一个便捷的平台来测试、调试和分析RESTful Web服务。在Web应用程序开发过程中,接口调试是非常重要的一环,它可以帮助开发者验证API的功能,确保数据的正确...

    restlet

    RESTlet是一款开源框架,专为构建基于REST(Representational State Transfer)原则的Web服务和应用程序设计。REST是一种轻量级的架构风格,广泛应用于互联网应用的开发,它强调通过简单的HTTP方法(如GET、POST、...

    Restlet Client 插件安装包

    1. **获取插件**: 你已经拥有了名为"Restlet Client - REST API Testing.crx"的安装包,这是`.crx`格式的Chrome扩展程序文件。 2. **安装方法**: 将该文件直接拖拽到打开的Google Chrome浏览器窗口中,浏览器会自动...

    org.restlet.jar

    org.restlet.jar

    restlet2.1学习笔记项目代码

    Restlet是一个开源框架,专为构建RESTful(Representational State Transfer)Web服务而设计。REST是一种轻量级的架构风格,常用于构建可扩展、高性能的互联网应用程序。本项目是针对Restlet 2.1版本的学习笔记,...

    Restlet与Spring 集成

    这个方法接收请求参数,并通过`getResponse().setStatus()`设置状态码,通过`getResponse().setEntity()`设置返回的JSON值。 3. **配置Restlet与Spring**: - **restletContext.xml**:这是Restlet的配置文件,...

    Restlet开发的Basic认证

    Restlet是一个轻量级的Java Web服务开发框架,它提供了构建RESTful(Representational State Transfer)应用程序的工具和API。REST是一种架构风格,强调简洁、无状态和可缓存的网络交互,常用于构建高性能、高可用性...

    Restlet所需要的所有jar包

    Restlet是一款开源的Java框架,专门用于构建RESTful(Representational State Transfer)Web服务。REST是一种轻量级的架构风格,常用于构建高效、可扩展的网络应用程序。本压缩包包含Restlet框架运行所需的全部jar...

    restlet项目

    Restlet项目是一个开源框架,专门用于构建RESTful(Representational State Transfer)Web服务。REST是一种软件架构风格,它强调简洁、可扩展性和无状态性,是Web服务设计的主流方式。Restlet框架提供了全面的工具集...

    org.restlet-2.3.0.jar 最新版本

    《深入理解org.restlet-2.3.0.jar:Java RESTful开发的得力助手》 在Java开发领域,REST(Representational State Transfer)架构风格已经成为构建Web服务的主流选择,而org.restlet-2.3.0.jar则是实现RESTful API...

    RESTLET开发

    ### RESTLET开发实例详解 #### 一、RESTLET框架简介 **RESTLET**是一个轻量级且全面的框架,旨在实现REST(Representational State Transfer)原则与Java类之间的映射。该框架支持广泛的REST式系统构建,不仅仅...

    restlet实现最简单的restful webservice

    Restlet是一款开源框架,专为构建RESTful Web服务和客户端应用程序设计。REST(Representational State Transfer)是一种轻量级的架构风格,广泛用于构建互联网应用,因为它提供了高效、分布式的系统设计原则。本文...

    Restlet开发实例

    Restlet是一款强大的开源框架,专为构建RESTful(Representational State Transfer)Web服务而设计。REST是一种轻量级的架构风格,广泛应用于Web应用程序的开发,以提高性能、可伸缩性和可维护性。本系列的开发实例...

    RESTLET框架学习书籍

    ### RESTLET框架学习知识点 #### 一、RESTLET框架概览 - **RESTLET框架简介**:RESTLET是一个面向对象的Java开源框架,用于构建RESTful应用和服务。它旨在简化Web应用开发,允许开发者充分利用REST架构的优势。...

    Restlet in action 中文

    【Restlet in Action 中文】这本书是一本针对Java开发者介绍Restlet框架的实战指南,旨在帮助读者更好地理解和使用RESTful Web API。Restlet是一个开源的Web框架,它以面向对象的方式提供了一系列类和示例,使得...

    Restlet Client-2.13.2

    Restlet Client插件是一款运行在chrome内核浏览器上的Web服务测试插件,该插件主要用于测试各种Web服务,能查看网站基本信息、浏览网页代码并能发送HTTP请求来测试网站Web服务,同时支持自动化API场景。用户在安装了...

Global site tag (gtag.js) - Google Analytics