`

Restlet实战(七)-提交和处理Web Form

    博客分类:
  • REST
 
阅读更多

本节演示如何使用Restlet通过提交Web Form来创建一个Customer。

 

首先创建一个customer.jsp作为测试form提交文件

Java代码  收藏代码
  1. <html>  
  2. <head>  
  3.   
  4. <script>  
  5.     function doSubmit(){  
  6.         document.forms[0].submit();  
  7.     }  
  8. </script>  
  9.   
  10. </head>  
  11.   
  12. <body>  
  13.   
  14. <form name="form1" action="<%=request.getContextPath()%>/resources/customers" method="post">  
  15.     Name:<input type="text" name="name"/><br>  
  16.     Address:<input type="text" name="address"/><br>  
  17.     <input type="button" value="Submit" onclick="doSubmit()"/>  
  18. </form>  
  19. </body>  
  20. </html>  

 

上篇文章提到,如果要创建一个Customer,URL应该是:/customers,对应的资源是CustomersResources。

 

CustomersResources已经有处理接收Form提交的代码,故不需要做任何修改,见上篇文章。

 

下面就测试这个功能,启动Web server,运行customer.jsp,在显示的页面上填写上Name和Address两栏,然后提交当前的form,一个错误的页面出现了,错误信息如下:




 
 这个错误出现是显而易见的,因为form的定义里面我们指定method="post",所以,CustomersResource里面的对应Post的方法应该被调用,而我们的程序里面没有这个方法,那么是否应该指定method="put"呢?因为put对应的是修改,post对应的创建的概念。但显然是不行的,因为form里面的method只支持"get"和"post"两种形式,所以,如果是从Form提交的请求,无论是修改还是创建,都只会访问Post对应的acceptRepresentation方法。。

 

如果form的定义本身不支持,那么我们只能在CustomersResource里面定义与Post对应的方法来充当创建的方法,加入的代码如下:

 

 

Java代码  收藏代码
  1. @Override  
  2. public boolean allowPost() {  
  3.     return true;  
  4. }  
  5.   
  6. @Override  
  7.    public void acceptRepresentation(Representation entity) throws ResourceException {  
  8.     Form form = new Form(entity);  
  9.     Customer customer = new Customer();  
  10.     customer.setName(form.getFirstValue("name"));  
  11.     customer.setAddress(form.getFirstValue("address"));  
  12.     customer.setRemarks("This is an example which receives request with put method and save data");  
  13.       
  14.     customerDAO.saveCustomer(customer);  
  15. }  

 

再次测试,yes, It is ok.

 

 

BTW:说到Form只支持get和post两种方法,对于支持Rest的另外的一个framework-Cetia4来说,由于采用自定义的form标签cetia:form,所以,除了get和post参数外,还可以指定具体的方法名,如:

 

Java代码  收藏代码
  1. <cetia:form method="insertCustomer" action="tasks">  

 

 如果是这种情况,当Cetia4解析tag以后,会认为当前提交的form的method是post,只不过类里面具体的方法是insertCustomer。

  • 大小: 5.1 KB
分享到:
评论

相关推荐

    camel-restlet-spring-web-app

    标题 "camel-restlet-spring-web-app" 暗示了一个基于Apache Camel、Restlet和Spring Web的应用程序示例,该示例使用Jetty作为嵌入式服务器。这个项目结合了这些技术来创建一个RESTful API服务。让我们深入探讨每个...

    restlet_jax-rs列子(客户端+服务端)

    RESTlet和JAX-RS是两个在Web服务开发中至关重要的技术。RESTlet是一个开源框架,专门用于构建RESTful(Representational State Transfer)应用程序,而JAX-RS(Java API for RESTful Web Services)则是Java平台上的...

    RESTlet-jee-2.0.9自用.rar

    例如,通过注解如`@Path`,`@GET`,`@POST`等,开发者可以定义资源路径和处理方法。 "RESTLET开发实例(一)基于JAX-RS的REST服务"可能是包含的一个教程或指南,它向读者展示了如何使用RESTlet和JAX-RS来构建REST...

    chromecj.com-Restlet-Client-REST-API-Testing_v2.8.0.1.rar

    在“chromecj.com-Restlet-Client-REST-API-Testing_v2.8.0.1.rar”压缩包中,包含的是Restlet Client的扩展文件“chromecj.com-Restlet-Client-REST-API-Testing_v2.8.0.1.crx”。 Restful API是现代Web服务的...

    restlet-jee-2.0.3

    Restlet是一个开源框架,专为构建RESTful Web服务和应用程序设计。REST(Representational State Transfer)是一种轻量级的架构风格,广泛应用于Web服务和API的设计,强调资源的表示和状态转移。Restlet JEE 2.0.3是...

    restlet-client-rest-api-t.crx

    restlet-client 谷歌插件 接口调试 最新

    Web Api调试工具 Chrome插件Restlet-Client-REST-API-Testing

    Chrome插件Restlet Client - REST API Testing是一款非常实用的工具,专为Web API的调试和测试设计。这款插件支持多种HTTP方法(如GET、POST、PUT、DELETE等),并提供了丰富的功能,使得API测试过程更加高效和便捷...

    nexus-restlet1x-plugin-2.6.1-01.zip

    Restlet 是一个 Java 开发 RESTful Web 服务的框架,此插件可能是用于扩展 Nexus 的 REST API 功能。 描述中提到 "hamcrest-date.zip",这是一个与 Java 相关的库,专为 Hamcrest 设计的日期匹配器。Hamcrest 是一...

    restlet-jse-2.1.1.zip

    Restlet包括Restlet API和Noelios Restlet Engine(NRE)两部分,NRE是对Restlet API的一种参考实现。这种划分,使得不同实现可以具有同样的API。NRE包括若干HTTP服务器连接器(HTTP server connector),它们都是...

    Restlet-Client-REST-API-Testing_v2.8.0.1

    Restlet Client是一款强大的REST API测试工具,尤其在与Chrome浏览器结合使用时,它能为开发者提供便捷的API接口测试和调试功能。此版本为v2.8.0.1,表明这是一个更新到一定稳定性的软件,可能包含了之前版本的改进...

    chromecj.com-Restlet-Client-REST-API-Testing_v2.8.0.1.zip

    Restlet Client 是一个强大的工具,它使得开发者和测试人员能够轻松地进行 RESTful Web 服务的接口测试和调试。在 v2.8.0.1 版本中,它可能包含了性能改进、新功能或修复了已知问题,以提供更好的用户体验。 这个...

    restlet-j2ee-2.0.15.rar

    标题中的"restlet-j2ee-2.0.15.rar"指的是Restlet框架的一个特定版本,即2.0.15,适用于Java EE平台。这个压缩包可能包含了该版本的源代码、JAR文件、文档、示例以及相关的配置文件,供开发者在J2EE环境下集成和使用...

    restlet-jee-2.2.2

    Restlet是一个开源框架,专为构建RESTful Web服务和客户端应用程序设计。...通过理解和掌握这些知识点,开发者能够充分利用Restlet-jee-2.2.2在Java EE环境中构建高效、灵活且易于维护的RESTful服务。

    restlet-jee-2.0.6.zip_Restlet 2..0_Restlet framework2.0_org.rest

    在"压缩包子文件的文件名称列表"中,只列出了"restlet-jee-2.0.6",这通常意味着压缩包内包含了Restlet 2.0.6版本的全部JAR文件,包括核心库、扩展和其他必要的组件,开发者可以直接将其添加到Java EE项目中引用。...

    restlet-jse-2.2.1.zip

    1. **库文件**:包括JAR文件,如`restlet-api.jar`、`restlet-engine.jar`等,这些是Restlet框架的核心组件,提供了处理HTTP请求、响应、资源和组件的基本类和接口。 2. **文档**:可能包含API文档(如Javadoc),...

    restlet-jse-2.1.2

    总的来说,"restlet-jse-2.1.2"是一个强大的工具,可以帮助Java开发者轻松构建符合REST原则的Web服务。通过深入理解和熟练使用Restlet,你可以创建高效、可维护的RESTful应用程序,与各种客户端进行无缝交互。

    Atlas2.3.0依赖: org.restlet/sqoop-1.4.6.2.3.99.0-195

    这个依赖包含了三个关键的JAR文件:`sqoop-1.4.6.2.3.99.0-195.jar`,`org.restlet-2.4.3.jar`以及`org.restlet.ext.servlet-2.4.3.jar`。下面我们将详细探讨这三个组件及其在IT领域的应用。 首先,让我们来看一下`...

    restlet-jee-2.1.1.zip

    Restlet包括Restlet API和Noelios Restlet Engine(NRE)两部分,NRE是对Restlet API的一种参考实现。这种划分,使得不同实现可以具有同样的API。NRE包括若干HTTP服务器连接器(HTTP server connector),它们都是...

    Restlet Client - REST API Testing(DHC)

    1. **安装DHC**: 通过访问链接&lt;https://chrome.google.com/webstore/detail/restlet-client-dhc-rest-api/aejoelaoggembcahagimdiliamlcdmfm&gt;,将DHC添加到Chrome或Firefox浏览器。 2. **创建请求**: 在DHC界面中...

    restlet-jse

    在博文中(https://thinktothings.iteye.com/blog/1153014),作者可能详细讨论了如何使用Restlet-JSE来创建、读取、更新和删除(CRUD)Web资源,以及如何处理HTTP请求方法如GET、POST、PUT和DELETE。他们可能还分享...

Global site tag (gtag.js) - Google Analytics