- 浏览: 5166505 次
- 性别:
- 来自: 天津
博客专栏
-
实战 Groovy
浏览量:29349
文章分类
- 全部博客 (639)
- 代码之谜 (6)
- JavaScript quirks (5)
- 程序员 (92)
- Java (93)
- BT编程 (7)
- html/css (64)
- Groovy&Grails (42)
- Android (20)
- C/C++ (5)
- PHP/Perl/Python (46)
- 经典文章 (51)
- CodeIgniter (14)
- JQuery (10)
- 笑话 (4)
- 其他 (32)
- javascript (69)
- 云计算 (0)
- html5 (7)
- 面试 (8)
- google (3)
- nosql (2)
- nodejs (11)
- go (5)
- erlang (1)
- 小常识 (3)
- 冷知识 (5)
- database (4)
- web (12)
- 架构 (12)
- Exception (0)
最新评论
-
jqw1992:
https://www.chromefor.com/libra ...
[福利] 开发者必备的 Chrome 插件——ChromeSnifferPlus -
litjerk:
初步算了一下,目前最最精简的Win98版是5M,他5个小时多敲 ...
让人目瞪口呆的三位世界级电脑大师 -
379855529:
。。似乎重点没说NIO啊,前面基础只是铺垫的很好的,可是我要的 ...
Java NIO与IO的详细区别(通俗篇) -
springmvc_springjpa:
spring mvc demo教程源代码下载,地址:http: ...
一步步开发 Spring MVC 应用 -
匡建武:
Good
四个程序员的一天
Web服务
Web服务就是让你的web应用提供一套web API,通常用SOAP 或 REST来实现。 .
1 REST
REST就本身而言不是一种技术,而是一种架构模式。is not really a technology in itself, but more an architectural pattern. REST非常简单,以普通XML或JSON作为通信机制,结合可以表现底层系统状态的URL形式和 HTTP方法如 GET, PUT, POST和 DELETE.
每一个HTTP方法映射到一个action,如用GET方法获取数据,用PUT方法创建数据,用POST更新数据等等。在这个意义上 REST非常适合 CRUD.
URL形式
要用Grails实现REST,第一步就是提供REST形式的URL映射 URL映射:
static mappings = { "/product/$id?"(resource:"product") }
这就将URI /product
映射到
ProductController
.
在controller内部每个HTTP方法,GET,PUT,POST和DELETE都映射到一个action上,如下表所示:
GET |
show |
PUT |
update |
POST |
save |
DELETE |
delete |
可以通过URL映射机制修改HTTP方法和URL的映射关系:
"/product/$id"(controller:"product"){ action = [GET:"show", PUT:"update", DELETE:"delete", POST:"save"] }
但是在这个例子中,Grails并不像前面使用过的resource
参数那样自动提供XML或JSON序列化,除非提供在URL映射中提供parseRequest
参数:
"/product/$id"(controller:"product", parseRequest:true){ action = [GET:"show", PUT:"update", DELETE:"delete", POST:"save"] }
XML序列化 - 读取
controller可通过Grails提供的 XML序列化机制 来实现GET方法:
import grails.converters.* class ProductController { def show = { if(params.id && Product.exists(params.id)) { def p = Product.findByName(params.id) render p as XML } else { def all = Product.list() render all as XML } } .. }
这里,如果参数中指定id,通过id
搜索Product
如果指定id的Product存在,则返回该Product,否则返回所有Product. 这样,如果访问
/products
我们会得到所有的Product,如果访问/product/MacBook
,我们只获取到一个MacBook记录.
XML序列化 - 更新
为支持PUT
和 POST
你可以使用 params
对象。Grails中params对象具有读取XML数据包的能力。如下面的XML数据包:
<?xml version="1.0" encoding="ISO-8859-1"?> <product> <name>MacBook</name> <vendor id="12"> <name>Apple</name> </vender> </product>
你可以通过在 数据绑定章节描述过的同样的方法,通过 params 对象来读取XML数据:
def save = { def p = new Product(params['product'])if(p.save()) { render p as XML } else { render p.errors } }
在这个例子中,通过提取 params
对象中的
'product'
对应的值,我们可以通过Product
的构建器自动创建和绑定XML数据 。 注意这一行:
def p = new Product(params['product'])
这里我们不需要修改任何代码就可以以处理XML数据请求的方法处理表单提交。同样的方法也可以用来处理JSON请求.
如果需要对不同的客户端(REST,HTML等)提供不同的响应,你可以使用 content negotation
The Product
object is then saved and rendered as
XML, otherwise an error message is produced using Grails' validation capabilities in the
form:
<error> <message>The property 'title' of class 'Person' must be specified</message> </error>
2 SOAP
Grails通过 XFire
插件来支持SOAP。XFire插件使用流行的XFire SOAP协议栈,它允许你通过特定的expose
属性将Grails的 services
作为SOAP服务提供:
class BookService {static expose=['xfire']
Book[] getBooks(){ Book.list() as Book[] } }
WSDL文件可通过:
http://127.0.0.1:8080/your_grails_app/services/book?wsdl
获取
更多信息参考XFire插件的wiki 文档 。
3 RSS和Atom
Grails没有直接提供对RSS和Atom的支持. You could construct RSS or ATOM feeds with the render method's XML capability. 可以通过Grails Feeds插件来构建RSS和Atom。改插件使用流行的 ROME 库. 下面是简单使用这个插件的例子:
def feed = { render(feedType:"rss", feedVersion:"2.0") { title = "My test feed" link = "http://your.test.server/yourController/feed"Article.list().each() { entry(it.title) { link = "http://your.test.server/article/${it.id}" it.content // return the content } } } }
发表评论
-
实战 Groovy: 用 Groovy 打造服务器端
2010-07-10 11:07 2720Groovlet 和 GroovyServer P ... -
实战 Groovy: 用 Groovy 生成器作标记
2010-07-10 11:07 2060Groovy 生成器让您能够利用诸如 Swing 这样 ... -
实战 Groovy: for each 剖析
2010-07-10 11:07 18189在这一期的 实战 Groovy 中,Scott Davi ... -
实战 Groovy: 用 Groovy 进行 Ant 脚本编程
2010-07-10 11:07 2059Ant 和 Maven 两者在构建处理工具的世界中占统 ... -
实战 Groovy: 在 Java 应用程序中加一些 Groovy 进来
2010-07-10 11:06 4321您有没有想过在自己相对复杂的 Java 程序中嵌入 G ... -
实战 Groovy: Groovy 的腾飞
2010-07-10 11:06 2182随着 Groovy JSR-1(及其后续发行版本)的发 ... -
实战 Groovy: 用 curry 过的闭包进行函数式编程
2010-07-10 11:06 3250在 Groovy 中处处都是闭包,Groovy 闭包惟 ... -
实战 Groovy: 关于 MOP 和迷你语言
2010-07-10 11:06 2064将耳朵贴到地上仔细听 —— MOP 正在前进!了解一下 ... -
实战 Groovy: 用 Groovy 更迅速地对 Java 代码进行单元测试
2010-07-10 11:06 2301不久以前,developerWor ... -
实战 Groovy: 构建和解析 XML
2010-07-10 11:05 7116通过本文,您将了解 ... -
实战 Groovy: 用 Groovy 进行 JDBC 编程
2010-07-10 11:05 5183这个月,随着 Andrew G ... -
实战 Groovy: 美妙的操作符
2010-07-10 11:05 2283Java™ 取消了操作符重载,但是新兴的 Groovy ... -
实战 Groovy: 使用 Groovy 模板进行 MVC 编程
2010-07-10 11:04 2911视图是 MVC 编程的一个重要部分,而 MVC 编程本 ... -
实战 Groovy: 用 Groovy 减少代码冗余
2010-07-10 11:04 2055Groovy 简洁的语法将 ... -
实战 Groovy: Groovy:Java 程序员的 DSL
2010-07-10 11:04 3079Groovy 专家 Scott Davis 将重新开始 ... -
精通 Grails: 构建您的第一个 Grails 应用程序
2010-07-06 09:37 1646Java™ 程序员不需要 ... -
Grails 部署
2010-07-06 09:36 6071部署 Grails可以使用很多种方式来部署,每一种 ... -
Grails 脚手架
2010-07-05 08:20 4075脚手架 根据指定的领域类,脚手架为你自动生成 ... -
Grails Grails 与 Hibernate
2010-07-05 08:19 2699Grails 与 Hibernate 如果 GOR ... -
Grails Grails和 Spring
2010-07-05 08:19 7901Grails和 Spring 这一节适合于高级用户 ...
相关推荐
### Grails快速开发Web应用:知识点详解 #### Grails框架概览 Grails是一个基于Groovy语言构建的开源MVC(Model-View-Controller)Web开发框架,以其高效的开发速度和简洁的代码著称。其核心优势在于: 1. **快速...
### Grails 快速开发 Web 应用程序 #### 一、Grails 概述 Grails 是一种基于 Groovy 的开源应用框架,用于简化 Web 应用程序的开发过程。它采用约定优于配置的原则,这使得开发者可以更快地创建功能丰富的 Web ...
Grails企业web应用开发与部署 grails webmail grails 服务器环境 ...
自己买的书,然后用扫描机扫描的,整个文件太大了,不能一次性上传上来,所以拆成3个part。 我自己学grails很想看这本书,结果网上没有,就自己去买了,然后共享给需要的人。 如果有什么问题请联系我下架。
自己买的书,然后用扫描机扫描的,整个文件太大了,不能一次性上传上来,所以拆成3个part。...我自己学grails很想看这本书,结果网上没有,就自己去买了,然后共享给需要的人。 如果有什么问题请联系我下架。
8. **RESTful Web服务**:Grails支持构建RESTful API,这部分可能会讲述如何设计和实现符合REST原则的服务,以及如何使用JSON或XML进行数据交换。 9. **持续集成与部署**:19-20章可能涉及到如何配置持续集成服务器...
《使用 Grails 快速开发 Web 应用程序》 Grails,一个基于Groovy动态语言的开源MVC框架,为Web开发提供了高效且简洁的解决方案。自2007年发布以来,Grails以其快速开发能力,降低了Web应用的复杂性,吸引了众多...
Grails是一种基于Java平台的开源Web应用框架,它利用Groovy语言的强大特性和简洁语法,为开发者提供了一种高效、灵活的开发环境。本篇文章将深入探讨Grails开发的基础知识,帮助初学者快速掌握Grails的精髓。 1. **...
5. **RESTful Web服务**:改进了RESTful Web服务的支持,使得创建RESTful接口更加容易。 #### 三、Grails的架构与核心组件 - **域类(Domain Class)**:用于定义应用中的业务实体,与数据库表相对应。 - **控制器...
Grails 2.5.4的URL映射还包含对RESTful服务的支持。通过简单的配置,你可以创建处理HTTP CRUD操作的映射,这对于构建API尤其有用。例如: ```groovy "/api/users"(resources: 'user') ``` 这将自动生成处理用户...
《Grails技术精解与Web开发实践2-10章》是针对Grails框架的一份珍贵资源,适合初学者及有经验的开发者深入理解并掌握Grails技术。这本书的章节涵盖了从基础到进阶的多个方面,旨在帮助读者全面了解和运用Grails进行...
Grails 是一个基于 Java 平台的开源Web开发框架,它旨在简化Web应用程序的构建过程。Grails 采用了敏捷开发的思想,遵循“约定优于配置”(Convention Over Configuration)和“不要重复自己”(Don’t Repeat ...
### Grails快速开发Web应用程序知识点解析 #### 一、Grails框架概述 - **定义**:Grails是一个基于Groovy语言构建的开源Model-View-Controller (MVC) Web开发框架。它旨在简化Web应用程序的开发流程,提高开发效率...
Grails 是一个基于 Groovy 语言的开源Web应用程序框架,它构建在Java平台之上,旨在简化开发过程并提高生产力。Grails 的设计深受Ruby on Rails的影响,提供了MVC(模型-视图-控制器)架构模式,允许开发者快速构建...
- Grails的工作原理,包括其MVC结构、依赖注入、服务层、控制器层和视图层的实现方式。 - Grails的应用程序结构,介绍默认创建的应用项目包含的文件和文件夹结构。 - Grails的约定优于配置原则,讲解如何通过遵循...
7. **RESTful服务**:Grails支持创建RESTful API,这在当今的微服务架构中尤为重要。开发者可以轻松构建符合HTTP协议的API,实现前后端分离或者与其他系统集成。 8. **测试支持**:Grails提供了全面的测试工具,...
文档涵盖了从安装、配置、Web开发、服务层、测试、国际化、安全到插件使用等多个方面的详细介绍,是Grails新手学习的宝贵资料。通过这份文档,开发者可以系统地学习Grails框架,并在实际开发中快速应用所学知识。