- 浏览: 96205 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (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 1064Groovy用户指南(5) 5、Groovy Math& ... -
Groovy用户指南(4)
2007-09-06 14:20 964Groovy用户指南(4) 4、与Java的不同< ... -
Groovy用户指南(3)
2007-09-06 14:20 1108Groovy用户指南(3) 3、集合<o:p> ... -
Grails + EJB领域模型教程
2007-09-06 14:15 1484Grails + EJB领域模型教程 作者 Jason Rud ... -
Java帝国的王储——Groovy !
2007-09-06 14:01 1076Java帝国的王储——Groovy ! 让我们来回顾一下主 ... -
Groovy用户指南(2)
2007-09-06 13:54 932Groovy用户指南(2) 2、闭包<o:p> ... -
Groovy用户指南(1)
2007-09-06 13:51 1103Groovy用户指南(1) 1、类<o:p> ... -
实战 Groovy: 用 Groovy 进行 JDBC 编程
2007-09-06 13:47 947... -
实战 Groovy: 用 Groovy 进行 Ant 脚本编程
2007-09-06 13:47 1246... -
Groovy和Grails简介
2007-09-06 13:46 1227Groovy和Grails简介 ... -
Groovy快速入门
2007-09-06 13:44 1061Groovy快速入门 1、 ... -
使用Groovy IDE插件 (Groovy & Grails )
2007-09-06 13:36 2416使用Groovy IDE插件 1、 配置Groovy ...
相关推荐
4. **MVC编程**: Groovy可以用于实现MVC架构的应用程序,通过Groovy模板引擎来处理视图层逻辑。 5. **服务器端开发**: Groovy还可以用于开发服务器端应用,利用其动态特性和丰富的库支持。 6. **标记生成**: Groovy...
- **视图**:使用GSP(Groovy Server Pages)或FreeMarker等模板引擎来渲染页面。 - **服务层**:封装业务逻辑,提高代码重用性。 **5. Grails插件机制** - **插件开发**:Grails支持通过插件扩展框架功能,...
Groovy是一种基于Java平台的动态、灵活的编程语言,它扩展了Java的语法,使得代码更加简洁、易读。Grails则是一个构建于Groovy之上的开源Web应用框架,它借鉴了Ruby on Rails的设计模式,提供了快速开发的能力,强调...
- 元编程:通过在运行时修改或扩展类的能力来增强程序灵活性。 #### 二、Groovy基础知识 - **对象导向性**:Groovy是一种完全面向对象的语言,所有数据类型都是对象。 - **闭包**:Groovy中的闭包是类似于函数的...
《Groovy杂志 2008年11月》是一本专注于Groovy编程语言和Grails框架的专业出版物。这本杂志由Groovy和Grails社区的顶级专家撰写,为读者提供了深入的技术洞察和实践经验,旨在帮助开发者提升对这两项技术的理解和...
1. Groovy配置:Groovy配置让开发者可以使用更加自然的语言风格进行配置,减少了XML的繁琐,提高了开发效率。 2. @Profile注解:该注解允许开发者根据运行环境(如开发、测试、生产)动态地选择加载哪些配置,增强...
4.6.1 使用get方法和exists方法进行基本查询 4.6.2 列举(listing),70排序(sorting)以及合计(counting) 4.6.3 用动态查找器(finder)查询 4.6.4 使用hql进行查询 4.6.5 按样本...
【标题】"使用Gradle构建Struts2、Springframework和Hibernate框架的Java EE项目模板"提供了构建企业级Java应用程序的详细指南。这个项目模板利用了现代构建工具Gradle,以及三个核心的Java EE框架——Struts2、...
3. **Groovy配置支持**:除了Java配置,3.0.5版本还支持使用Groovy进行配置,提供了更灵活的选择。 4. **WebSocket支持**:引入了对WebSocket协议的支持,适应了实时通信的需求。 5. **改进的MVC**:包括更好的...
JFinal采用MVC(Model-View-Controller)架构模式,通过AOP(面向切面编程)实现拦截器,以及Ioc(控制反转)容器来管理Bean,提供了路由、模板引擎、插件等功能,让开发者能够高效地编写代码。 1. **JFinal的两个...
1. **Web 开发**:Spring Boot 可以轻松创建 RESTful API,结合 Spring MVC 和 Thymeleaf 等模板引擎进行前端页面渲染。 2. **数据库接入**:Spring Data JPA 和 MyBatis 等库的集成使得数据库操作变得简单,提供了...