- 浏览: 93677 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (82)
- Groovy & Grails (13)
- 面向对象数据库db4o (2)
- CoreJava (17)
- AOP (3)
- Spring (3)
- Hibernate (1)
- JAVA安全认证 (0)
- DDD (1)
- 职场 (1)
- IT杂谈 (4)
- 技术实践日志 (7)
- SOA (5)
- js (2)
- Python (3)
- cluster (2)
- load balance (2)
- distributed architeture (2)
- English (1)
- Wicket Tapestry (1)
- architecture (1)
- concurrenct (1)
- color UML (1)
- disruptor (2)
- linux (3)
- REST (1)
- sql injection (1)
- UML (1)
- eclipse 实用插件 (1)
- data structure & algorithm (2)
- lisp python (2)
- lisp (4)
- compiler (2)
- interpreter (4)
最新评论
-
zhaohuaxishiwzw:
老贴留名!
Tapestry and Wicket compared -
flyqantas:
经典的好文章。
UML类图与类的关系详解 -
myemptyname:
好文章,不管你懂不懂,我是懂了
闭包,懂不懂由你,反正我是懂了 -
GuolinLee:
看进来可能对我有点儿用,但是格式太差,太难看了放弃
java.util.concurrent 多线程框架 -
lonelybug:
在JiveJdon3.0中,值对象ForumState是被聚合 ...
实战DDD(Domain-Driven Design领域驱动设计:Evans DDD)
实战 Groovy: 使用 Groovy 模板进行 MVC 编程使用 Groovy 模板引擎框架简化报表视图 |
级别: 初级 Andrew Glover (aglover@vanwardtechnologies.com), CTO, Vanward Technologies 2005 年 2 月 15 日 视图是 MVC 编程的一个重要部分,而 MVC 编程本身又是企业应用程序开发的一个重要组件。在这篇实战 Groovy 的文章中,Andrew Glover 向您介绍了 Groovy 的模板引擎框架是如何用来简化视图编程的,并如何使您的代码更加经久容易维护。<!----><!----><!----> 在最近的 实战 Groovy 系列中,我们已经介绍过 Groovy 是构建报表统计程序的一个非常好的工具。我们使用了一个校验和报表统计应用程序的例子向您介绍了 使用 Groovy 编写 Ant 脚本 和一个数据库报表统计来展示 使用 GroovySql 进行 JDBC 编程。这两个示例统计报表都是在 Groovy 脚本中生成的,而且都具有一个相关的“视图”。 在校验和统计报表的例子中,视图代码有些混乱。更糟糕的是,它可能会对维护造成一些困难:如果我曾经希望修改视图的某个特定方面,就必须修改脚本中的代码。因此在本月的文章中,我将向您展示如何使用 Groovy 模板引擎和上一篇文章中的统计报表应用程序来对统计报表进行简化。 模板引擎与 XSLT 很类似,可以产生模板定义的任何格式,包括 XML、HTML、SQL 和 Groovy 代码。与 JSP 类似,模板引擎会简化将视图关注的内容分隔成单独的实体,例如 JSP 或模板文件。例如,如果一个报表希望的输出是 XML,那么您就可以创建一个 XML 模板,它可以包含一些占位符,在运行时替换为实际的值。模板引擎然后可以通过读取该模板并在这些占位符和运行时的值之间建立映射来实现对模板的转换。这个过程的输出结果是一个 XML 格式的文档。
在开始介绍 Groovy 模板之前,我想首先来回顾一下 Groovy 中 不幸的是,Java™ 代码中的 Strings 非常有限,不过 Java 5.0 应用程序承诺将有一些引人注目的新特性。现在,Groovy 解决了两个最差的 Java 如果您在普通的 Java 代码中编写一个多行的 清单 1. Groovy 中的多行字符串
Groovy 还支持 here-docs 的概念,如清单 2 所示。here-doc 是创建格式化 清单 2. Groovy 中的 Here-docs
Groovy 使用
清单 3. Groovy 中的 GString
在清单 3 中,我们创建了一个名为 运行时替换实际上是动态语言的一个通用特性;与其他情况一样,Groovy 还会更进一步。Groovy 的 清单 4. GString 自动调用
清单 4 中的代码会打印出“I dig any language with 6 characters in its name!”在下一节中,我将向您展示如何使用 Groovy 的自动调用特性在您的模板中启用一些复杂的特性。
对模板的使用可以分解为两个主要的任务:首先,创建模板;其次,提供映射代码。使用 Groovy 模板框架创建模板与创建 JSP 非常类似,因为您可以重用 JSP 中见过的语法。创建这些模板的关键在于对那些运行时要替换的变量的定义。例如,在清单 5 中,我们为创建 清单 5. 一个创建 GroovyTestCase 的模板
清单 5 中的模板就类似于一个 JSP 文件,因为我们使用了 清单 6. GString 的使用
在清单 6 中,我创建了一个简单的模板,它表示一个定义 在 Groovy 中定义模板相当简单,其实应该就是这样简单才对。Groovy 模板并不是火箭科学,它们只不过是一种简化从模型中分离视图过程的手段。下一个步骤是编写运行时的映射代码。
既然已经定义了一个模板,我们就可以通过在已定义的变量和运行时值之间建立映射来使用这个模板了。与 Groovy 中常见的一样,有些看来似乎很复杂的东西实际上是非常简单的。我所需要的是一个 例如,如果一个简单的模板有一个名为 在清单 7 中,我们定义了这样一个简单的模板,在清单 8 中,我将向您展示对应的映射代码。 清单 7. 用来展示映射的简单代码
清单 8 显示了一个简单的类,它一共做了 5 件事,其中有 2 件是很重要的。您可以说出它们是什么吗? 清单 8. 为一个简单的模板映射值
在清单 8 中为这个简单的模板映射值简单得令人吃惊。 首先,我创建了一个 然后创建了一个 接下来,我创建了一个 清单 8 中的最后一个步骤是打印进程的输出信息。正如您可以看到的一样,创建一个
在清单 9 中,我已经创建了一个 清单 9. Groovy 中的 Person 类
在清单 10 中,您可以看到对上面定义的 清单 10. 在 Person 类与模板之间建立映射
上面的代码看起来很熟悉,不是吗?实际上,它与 清单 8 非常类似,不过增加了一行创建 在运行清单 10 中的代码时,输出结果是 XML 文件,用来定义 清单 11. Person 模板的输出结果
在 清单 5 中,我为 清单 12. 映射测试用例列表
查看一下 清单 5,它显示了模板期望一个名为“test_cases”的 现在应该十分清楚了,Groovy 模板非常容易使用。它还可以促进无所不在的 MVC 模式的使用;更重要的是,它们可以通过表示视图来支持转换为 MVC 代码。在下一节中,我将向您展示如何对上一篇文章中的一个例子应用本文中所学到的知识。
在使用 Groovy 编写 Ant 脚本的专栏中,我曾经编写了一个简单的工具,它对类文件产生校验和报告。如果您还记得,我当时笨拙地使用 清单 13. 糟糕的代码
为了帮您回顾一下有关这段内容的记忆,清单 13 中的代码使用了一些数据,并使用 将该脚本中的视图部分移动到模板中可以使维护更加方便,因为修改模板是任何人都会涉及的一个过程,因此我在此处也会这样做。 现在我将开始定义模板了 —— 它看起来更加类似于想要的输出结果,采用了一些逻辑来循环遍历一组类。 清单 14. 为原来的代码应用模板
清单 14 中定义的模板与为 定义好模板之后,下一个步骤是编写运行时的映射代码。我需要将原来的写入文件的逻辑替换为下面的代码:构建一个 这个模型然后就会变成清单 15 中定义的 清单 15. 在 Groovy 中定义的 CheckSumClass
Groovy 中类的定义非常简单,不是吗? 接下来,我需要重构刚才写入文件的那段代码 —— 这一次采用一定的逻辑使用 清单 16. 重构代码创建一个 ChecksumClass 的集合
清单 16 显示了使用类 Ruby 的语法将对象添加到 我需要做的最后一件事情是添加模板引擎特定的代码。这段代码将执行运行时映射,并将对应的格式化后的模板写入原始的文件中,如清单 17 所示。 清单 17. 使用模板映射重构原来的代码
现在,清单 17 中的代码对您来说太陈旧了。我利用了清单 16 中的 在将这些内容都放入清单 18 之前,您可能希望返回 清单 13 最后看一眼开始时使用的那段蹩脚的代码。下面是新的代码,您可以进行比较一下: 清单 18. 看,新的代码!
现在,虽然我没有声明要编写非常漂亮的代码,但是这些代码当然不会像原来的代码一样 糟糕 了。回顾一下,我所干的事情不过是将一些蹩脚的
在本月的教程中,我希望已经向您展示了 Groovy 的 视图。更明确地 说,当您需要快速开发一些需要视图的简单程序时,Groovy 的模板框架是普通 Java 编码的一种很好的替代品。模板是很好的一种抽象,如果使用正确,它可以极大地降低应用程序的维护成本。 下一个月,我将向您展示如何使用 Groovy 来构建使用 Groovlets 的 Web 应用程序。现在,享受使用 Groovy 的模板开发吧!
|
发表评论
-
Groovy用户指南(5)
2007-09-06 14:22 1040Groovy用户指南(5) 5、Groovy Math& ... -
Groovy用户指南(4)
2007-09-06 14:20 940Groovy用户指南(4) 4、与Java的不同< ... -
Groovy用户指南(3)
2007-09-06 14:20 1083Groovy用户指南(3) 3、集合<o:p> ... -
Grails + EJB领域模型教程
2007-09-06 14:15 1453Grails + EJB领域模型教程 作者 Jason Rud ... -
Java帝国的王储——Groovy !
2007-09-06 14:01 1049Java帝国的王储——Groovy ! 让我们来回顾一下主 ... -
Groovy用户指南(2)
2007-09-06 13:54 900Groovy用户指南(2) 2、闭包<o:p> ... -
Groovy用户指南(1)
2007-09-06 13:51 1068Groovy用户指南(1) 1、类<o:p> ... -
实战 Groovy: 用 Groovy 进行 JDBC 编程
2007-09-06 13:47 915... -
实战 Groovy: 用 Groovy 进行 Ant 脚本编程
2007-09-06 13:47 1208... -
Groovy和Grails简介
2007-09-06 13:46 1190Groovy和Grails简介 ... -
Groovy快速入门
2007-09-06 13:44 1028Groovy快速入门 1、 ... -
使用Groovy IDE插件 (Groovy & Grails )
2007-09-06 13:36 2366使用Groovy IDE插件 1、 配置Groovy ...
相关推荐
在一次代码拉取中,出现了以下问题:Could not download groovy-all.jar (org.codehaus.groovy:groovy-all:2.4.15) 详细的报错信息如下: // 报错信息如下 Could not resolve all files for configuration ':jcore-...
微服务-spring-boot-groovy 使用 Spring Boot 和 Groovy 构建微服务创建这些项目是为了在当地的达拉斯 Groovy Grails 用户组会议上展示微服务架构这些服务使用您需要安装才能开始使用的各种外部服务。 您将需要安装 ...
最近的groovy-all-2.4.12.jar包供使用,解决as编译时报错问题
赠送jar包:groovy-3.0.9.jar; 赠送原API文档:groovy-3.0.9-javadoc.jar; 赠送源代码:groovy-3.0.9-sources.jar; 赠送Maven依赖信息文件:groovy-3.0.9.pom; 包含翻译后的API文档:groovy-3.0.9-javadoc-API...
groovy:Apache Groovy:用于JVM平台的功能强大的多面编程语言
实战groovy.rar
src/main.groovy: 入口类 bin: 对应groovy安装包bin目录 conf: 对应groovy安装包conf目录, 和项目配置文件存放目录 src/core: 核心功能: HttpSrv 等等 src/ctr: mvc Controller层 src/static: 前端文件 使用说明 jdk...
赠送jar包:groovy-2.5.1.jar; 赠送原API文档:groovy-2.5.1-javadoc.jar; 赠送源代码:groovy-2.5.1-sources.jar; 赠送Maven依赖信息文件:groovy-2.5.1.pom; 包含翻译后的API文档:groovy-2.5.1-javadoc-API...
赠送jar包:groovy-3.0.9.jar; 赠送原API文档:groovy-3.0.9-javadoc.jar; 赠送源代码:groovy-3.0.9-sources.jar; 赠送Maven依赖信息文件:groovy-3.0.9.pom; 包含翻译后的API文档:groovy-3.0.9-javadoc-API...
org.gradle.api.resources.ResourceException: Could not get resource 'https://jcenter.bintray.com/org/codehaus/groovy/groovy-all/2.4.15/groovy-all-2.4.15.jar'. ...重启 Android Studio 及可使用。
赠送jar包:groovy-2.5.1.jar; 赠送原API文档:groovy-2.5.1-javadoc.jar; 赠送源代码:groovy-2.5.1-sources.jar; 赠送Maven依赖信息文件:groovy-2.5.1.pom; 包含翻译后的API文档:groovy-2.5.1-javadoc-API...
groovy-all-2.4.15.jar文件,MAC使用时需存放在/Users/用户名/.gradle/caches/jars-3/某一缓存目录下,找不到就都看一下,我遇到的问题是缓存目录中下载的是2.4.17版本,应该跟gradle版本升级有关
Maven坐标:org.codehaus.groovy:groovy-all:2.4.13; 标签:all、groovy、codehaus、jar包、java、API文档、中文版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化...
groovy
Maven坐标:org.codehaus.groovy:groovy-all:2.4.5; 标签:codehaus、groovy、all、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,...
最新版本的groovy3.0.3,对groovy及gradle使用有兴趣的可以下来试用,为大家提供优秀资源,自己也赚点积分。
groovy模板
使用Groovy保护Ratpack中的REST API这是Groovy中带有Ratpack的休息服务的基于令牌安全性的简单实现蒙哥用户和令牌由MongoDB支持。 在application.properties中设置您的MongoDB连接信息使用要运行此命令,只需使用...
是一个基于Java虚拟机的敏捷动态语言。 构建在强大的Java语言之上 并添加了从Python,Ruby和Smalltalk等语言中学到的诸多特征。...直接编译成Java字节码,这样可以在任何使用Java的地方 使用Groovy。
awesome-groovy:精妙的groovy库,框架和资源的精选列表