Grails-Java开发人员的圣杯

合集下载

深入浅出JBoss_Seam

深入浅出JBoss_Seam

深入浅出JBoss Seam作者Michael Yuan译者包亮发布于 2007年11月2日上午1时3分社区Java主题Web框架标签JBoss Seam,JBoss,EJB,JSF本文节选了Michael Yuan和Thomas Heute所著的即将出版JBoss Seam: Power and Flexibility Beyond Java EE 5.0第一章和第二章,内容有所删减。

相关厂商内容免费迷你书下载:深入浅出Struts 2活动:体验基于OpenSolaris的Web/企业应用(8.30 杭州)SOY Framework:Java富客户端快速开发框架Hadoop中的集群配置和使用技巧免费迷你书下载:Grails入门指南相关赞助商InfoQ中文站Java社区,关注企业Java社区的变化与创新,通过新闻、文章、视频访谈和演讲以及迷你书等为中国Java技术社区提供一流资讯。

什么是Seam?JBoss Seam是“Java EE 5.0的一个轻量级的框架”。

这是什么意思?难道Java EE(Enterprise Edition) 5.0本身不是一套“框架吗”?为什么在官方规范之外,还需要另外一个框架?好吧,我们就将seam看作是本应该被包括在Java EE 5.0中的一个“遗漏的框架”吧。

它在Java EE 5.0框架的上层,为所有的在企业Web应用中的组件提供了一个统一的、易于理解的编程模型。

它同样使基于状态的应用和业务流程驱动的应用的开发易如反掌。

换句话说,Seam致力于开发者生产力和应用扩展性。

1. 整合和强化Java EE框架Java EE5.0的核心框架是EJB(Enterprise JavaBeans)3.0和JSF(JavaServer Faces)1.2。

EJB 3.0(以下简称EJB3)是基于一个POJO(Plain Old Java Objects)的业务服务和数据库持久化的轻型框架。

java培训-Play Framework hotswap及源码分析

java培训-Play Framework hotswap及源码分析

Play Framework hotswap及源码分析reach your maximum productivity。

play! 允许开发人员修改java文件,保存,然后刷新浏览器,立马可以看到效果。

不需要编译,也不需要重启服务器。

play! 最大的卖点就在于 hot swap,正如它自己宣称的:reach your maximum productivity。

play! 允许开发人员修改java文件,保存,然后刷新浏览器,立马可以看到效果。

不需要编译,也不需要重启服务器。

Java 要想实现动态更新 class 文件,不外乎两种手段:替换 classloader、替换 JVM。

因为替换 JVM 引起的开销更大,需要维护 JVM 的堆、栈等运行信息,所以 hot swap 通常是选择替换 classloader。

比如 grails 里面就是选择替换 classloader,它会自己维护一个线程,定期轮询源文件是否发生修改,以替换原来的 classloader。

那么 play! 宣称的 hot swap 又是怎么实现的呢?让我们来看看play! 的内部流程:1. play! 使用了 Apache Mina 作为底层的 http server,然后使用了自己关于 Mina IoHandler 接口的实现——HttpHandler2. 当浏览器发起一个 request:2.1 Mina Server 生成一个 Mina Request,转发给 HttpHandler 的 messageReceived 方法2.2 play! 解析 Mina Request 和 Mina Session,包装成自己的 Request 对象1.Request request = parseRequest(minaRequest, session);2.3 play! 检测 Route 文件修改情况,根据 Route 配置信息将 Route/Action 的信息赋给 Request 对象1.Router.detectChanges();2.Router.route(request);2.4 play! 根据当前配置的开发模式来采用不同的策略调用 Action 来理 Request1.if (Play.mode == Play.Mode.DEV) {2.Invoker.invokeInThread(new MinaInvocation(session, minaRequest, minaResponse, request, response));3.} else {4.Invoker.invoke(new MinaInvocation(session, minaRequest, minaResponse, request,response));5.}2.5 如果 play! 当前是 DEV 模式,invokeInThread方法会让 invocation 对象代理 run() 方法1.public void run() {2.try {3.before();4.execute();5.after();6.} catch (Throwable e) {7.onException(e);8.} finally {9._finally();10.}11.}咱们来看看 before() 方法:1.public static void before() {2.Thread.currentThread().setContextClassLoader(Play.classloader);3.if(!Play.id.equals("test")) {4.Play.detectChanges();5.if (!Play.started) {6.Play.start();7.}8.}9.//10.}在 Play 类的 detectChanges() 方法里面,有这么一句:1.classloader.detectChanges();哈哈,play! 修改源文件后,刷新浏览器即见效的奥秘就在这里了。

Grails与jdk环境变量配置

Grails与jdk环境变量配置
java version "1.6.0_10"
Java(TM) SE Runtime Environment (build 1.6.0_10-b12)
Java HotSpot(TM) Client VM (build 10.0-b19, mixed mode, sharing)
二、下载和安装Grails
2、 配置环境变量
将下载完的grails-bin-1.0.4.zip解压缩到C:\ grails-1.0.4目录下
Windows系统上右击“我的电脑”/“属性”/“高级”/“环境变量”,点击新建环境变量GRAILS_HOME,值为C:\ grails-1.0.4
Windows系统上右击“我的电脑”/“属性”/“高级”/“环境变量”,修改path的值,在最后面增加%GRAILS_HOME%\bin;
诸如Ruby、PHP和Python之类的脚本语言最近几年越来越流行,因此,需要开发一个Java脚本备选语言和类似Rails的针对Java环境的框架。Groovy就是这个脚本语言,而Grails就是这个框架。
1、 下载Grails
最新的Grails版本是1.0.4,可以从以下链接下载:
/grails/grails-bin-1.0.4.zip
Java Web应用程序框架是企业Java得以成功的重要原因之一。人们怀疑如果没有Apache Struts框架Java EE是否能够如此成功。虽然底层编程语言很重要,但通常是框架使编程语言成为引人注目的中心的。如果您经常访问讨论论坛,就会注意到Ruby语言和Ruby On Rails框架之间也是这种情况。Ruby已经出现十多年了,然而只是在Ruby On Rails框架流行之后,开发人员才开始注意到Ruby语言。

《Java EE企业级应用开发教程(Spring+Spring MVC+MyBatis)》_课后习题

《Java EE企业级应用开发教程(Spring+Spring MVC+MyBatis)》_课后习题

第一章【思考题】1、请简述Spring框架的优点。

2、请简述什么是Spring的IoC和DI。

【答案】1、Spring框架的优点如下:(1)非侵入式设计:Spring是一种非侵入式(non-invasive)框架,它可以使应用程序代码对框架的依赖最小化。

(2)方便解耦、简化开发:Spring就是一个大工厂,可以将所有对象的创建和依赖关系的维护工作都交给Spring容器管理,大大的降低了组件之间的耦合性。

(3)支持AOP:Spring提供了对AOP的支持,它允许将一些通用任务,如安全、事务、日志等进行集中式处理,从而提高了程序的复用性。

(4)支持声明式事务处理:只需要通过配置就可以完成对事务的管理,而无需手动编程。

(5)方便程序的测试:Spring提供了对Junit4的支持,可以通过注解方便的测试Spring 程序。

(6)方便集成各种优秀框架:Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持。

(7)降低了Java EE API的使用难度:Spring对Java EE开发中非常难用的一些API (如:JDBC、JavaMail等),都提供了封装,使这些API应用难度大大降低。

2、IoC的全称是Inversion of Control,中文名称为控制反转。

控制反转就是指在使用Spring框架之后,对象的实例不再由调用者来创建,而是由Spring容器来创建,Spring 容器会负责控制程序之间的关系,而不是由调用者的程序代码直接控制。

这样,控制权由应用代码转移到了Spring容器,控制权发生了反转。

DI的全称是Dependency Injection,中文称之为依赖注入。

它与控制反转(IoC)的含义相同,只不过这两个称呼是从两个角度描述的同一个概念。

从Spring容器的角度来看,Spring容器负责将被依赖对象赋值给调用者的成员变量,这相当于为调用者注入了它依赖的实例,这就是Spring的依赖注入。

ssm框架技术题库及答案交流

ssm框架技术题库及答案交流

ssm框架技术题库及答案交流SSM框架,即Spring、SpringMVC和MyBatis的组合,是Java开发中常用的轻量级企业应用开发框架。

下面我将提供一些SSM框架技术题库及答案,供大家学习和交流。

1. Spring框架的核心是什么?- 答案:Spring框架的核心是控制反转(IoC)和面向切面编程(AOP)。

2. SpringMVC是如何实现请求的映射的?- 答案:SpringMVC通过注解@Controller和@RequestMapping来实现请求的映射。

3. MyBatis与JDBC的区别是什么?- 答案:MyBatis是一个半自动的ORM框架,它允许开发者编写SQL语句并映射到Java对象,而JDBC是一个全手动的数据库访问API,需要手动编写SQL语句并处理结果集。

4. Spring框架中的Bean是什么?- 答案:Spring框架中的Bean是构成应用程序的主要组件,它们由Spring IoC容器进行管理。

5. SpringMVC中的DispatcherServlet的作用是什么?- 答案:DispatcherServlet是SpringMVC的前端控制器,它负责将请求路由到相应的处理器。

6. 什么是AOP?在Spring框架中如何使用?- 答案:AOP(面向切面编程)是一种编程范式,它允许开发者将横切关注点(如日志记录、事务管理等)与业务逻辑分离。

在Spring框架中,可以通过@Aspect注解和相关API来实现AOP。

7. MyBatis的配置文件有哪些?- 答案:MyBatis的配置文件主要包括mybatis-config.xml(全局配置文件)和映射文件(Mapper XML文件或注解)。

8. Spring框架的事务管理是如何实现的?- 答案:Spring框架通过声明式事务管理来实现事务控制,主要通过@Transactional注解来声明事务的边界和特性。

9. SpringMVC的视图解析器有哪些类型?- 答案:SpringMVC的视图解析器主要有InternalResourceViewResolver(用于解析JSP视图)、BeanNameViewResolver等。

Grails 教程 PDF 文件说明书

Grails 教程 PDF 文件说明书

1 1: grails222 Examples2 Grails2333 2: REST55 Examples5 grailsREST API5 REST5 HTTPSGrails Server6 3: 77 Examples778 GSP8 4: 9 Examples99911You can share this PDF with anyone you feel could benefit from it, downloaded the latest version from: grailsIt is an unofficial and free grails ebook created for educational purposes. All the content is extracted from Stack Overflow Documentation, which is written by many hardworking individuals at Stack Overflow. It is neither affiliated with Stack Overflow nor official grails.The content is released under Creative Commons BY-SA, and the list of contributors to each chapter are provided in the credits section at the end of this book. Images may be copyright of their respective owners unless otherwise specified. All trademarks and registered trademarks are the property of their respective company owners.Use the content presented in this book at your own risk; it is not guaranteed to be correct nor accurate, please send your feedback and corrections to ********************1: grailsGrailsRAD Java API 。

Gails2.0使用及简介

Grails 简介Grails 是搭建在动态语言Groovy 之上的一个开源MVC Web 开发框架,Grails 的一个显著特点在于“快”,这主要得益于Groovy 脚本语言的动态特性,也得益于其“一栈式”的设计。

与传统的Java/C# Web 开发框架相比,它可以使用极少的代码和配置实现诸如表单提交、数据库读写等常见的Web 应用功能,实现了开发效率的成倍提高。

Grails 是一个遵循MVC 设计模式的Web 开发框架。

它分别用Domain Class、View、Controller 对应于MVC 的模型、视图和控制器。

可以简单的把一个Domain Class 理解为数据库中的一张表,Grails 在底层通过Hibernate 将Domain Class 和数据库的表进行了映射。

View 在Grails 中指的是GSP 页面(注意是GSP 不是JSP),它用于显示用户界面。

GSP 与JSP 类似,既可以编写静态网页的元素,也可以嵌入Groovy 代码实现动态内容。

Controller 在Grails 中充当着重要的角色:它可以响应用户的请求,可以接收用户提交的表单,还可以访问模型的数据,并传递给View。

Grails 在MVC 三方面的具体内容,将在后面的例子中做详细介绍。

一.Grails开发环境搭建1.下载jdk、sts,同时在sts中安装Groovy和Grails插件2.配置Grails环境变量图一:GRAILS_HOME图二:path 3.sts配置Grails1.在STS中新建Grails Project,会自动生成如下目录其中domain文件夹就是用来存放模型层的Groovy类的,也即数据库持久层;controllers 即是存放控制层文件的;views就是视图层,是用来存放GSP文件的;taglib是用来存放自定义的G标签的文件;services是用来存放各种服务的文件;utils是用来存放工具类的;i18n 是用来支持国际化的;conf是存放配置文件的,其中数据库的配置文件便在这里;test/unit 是用来存放单元测试文件的;test/integration是用来存放集成测试文件的;plugin中为该项目中所用的插件;lib中用来存放java包;target中可以用来存放导出的war文件;web-app 中存放web服务的一些配置文件,还有js、图片、css等文件。

2022新版JavaEE企业级应用开发教程(Spring+SpringMVC+MyBatis)习题

第1章初识MyBatis框架习题一、填空题1.MyBatis的删除操作在映射文件中是通过配置【<delete>】元素来实现的。

2.MyBatis映射文件中<mapper>元素是配置文件的根元素,它包含一个【namespace 】属性,该属性为这个<mapper>指定了唯一的命名空间。

3.使用MySQL中的【concat()】函数进行字符串拼接,可以有效防止模糊查询时可能出现的SQL注入问题。

4.mybatis-config.xml作为MyBatis的全局配置文件,配置了MyBatis的运行环境等信息,其中主要内容是获取【数据库连接】。

5.【MyBatis 】是当前主流的Java持久层框架之一,它与Hibernate一样,也是一种ORM框架。

二、判断题1.MyBatis映射文件中<mappers>元素是配置文件的根元素,它包含一个namespace属性,该属性为这个<mapper>指定了唯一的命名空间。

(x)2.使用MyBatis框架非常简单,只需在应用程序中引入MyBatis框架lib目录中的全部JAR包以及数据库驱动包即可进行项目运行。

(X )3.ORM就是一种为了解决面向对象与关系型数据库中数据类型不匹配的技术,它通过描述Java对象与数据库表之间的映射关系,自动将Java应用程序中的对象持久化到关系型数据库的表中。

(v )4.MyBatis的更新操作也需要进行事务提交。

(v )5.创建的映射文件中的SQL语句要以面向对象的写法进行书写。

(x )三、选择题1.MyBatis的删除操作有关说发错误的是。

(D )A: MyBatis的删除操作在映射文件中是通过配置<delete>元素来实现的。

B: MyBatis的删除操作也需要进行事务提交。

C: MyBatis的删除操作执行了SqlSession的delete()方法。

D: MyBatis的删除操作和添加操作时,也需要封装整个实体类。

grails_isoft


Grails简介
总体框架图 Grail是一套用于快速Web应用开发的开源框架,它基于Groovy编程语言,并构建于Spring、 Hibernate和其它标准Java框架之上,从而为大家带来一套能实现超高生产力的一站式框架
Grails环境配置
2.1 下载和安装 让Grails运行起来的第一步是安装发行包。请按照如下步骤: 下载 Grails的二进制发行包并解压到你指定的目录下 新增 GRAILS_HOME 环境变量并指向你解压发行包时选择的目录 Unix/Linux系统上通常在你的profile文件中添加 export GRAILS_HOME=/path/to/grails 来设置环境变量 Windows系统上则是在 我的电脑/属性/高级/环境变量 中添加相同的环境变量 现在需要添加 bin 目录到 PATH 环境变量中: Unix/Linux系统上在profile中继续添加 export PATH="$PATH:$GRAILS_HOME/bin" Windows系统上修改 我的电脑/属性/高级/环境变量 中的 Path 环境变量
Grails简介
Grails是构建在现有的像Spring、Hibernate这样的Java技术之上。 Grails是个一栈式开发框架,它尝试通过核心技术和插件技术来解决许多Web开发难题。Grails包含了如下内 容: 由 Hibernate 构成的易于使用的 Object Relational Mapping (ORM)层 称为 Groovy Server Pages (GSP) 的展现层技术 基于 Spring MVC 的控制层 由基于 Groovy 的 Gant 工具构建的命令行脚本环境 一个内嵌的 Jetty 容器被配置用来快速重载应用 Spring容器内建的依赖注入技术 基于 Spring 的 MessageSource 核心概念的国际化 (i18n) 支持 基于 Spring 的抽象事务概念的事务服务层 Grails使用“约定优于配置”原则来配置自己。

小码哥:Gradle 入门到精通(一)

Gradle 入门到精通(一)前言Gradle详解内容将分篇介绍,这里首先介绍Gradle的基础知识和项目结构。

1、Gradle 安装gradle的网站是/。

我们可以通过相关的网站获取到相应的gradle的版本。

也可以在这个网站上面获取相应的资料。

1.1 下载相应的版本https:///releases在上面的网站下载最新gradle的版本1.2 配置将下载的文档解压,解压完成后,将路径添加到系统变量Path内部。

1.3 校验安装在命令行下输入如果有相对应的输出代表安装成功2 Groovy语法入门2.1 why Groovy?为什么我们学习gradle需要学习groovy? groovy是google推出的一款基于java的脚本语言。

只要简单几句代码就可以完成java程序。

虽然groovy看起来是脚本编程语言,但是究其更本也是运行在jvm上面的java语言,知识groovy对java进行了二层的封装。

因为这个语言的灵活性,gradle选择了groovy。

2.2 helloWorld让我们使用最简单的helloWorld代码来入门。

首先要确保gradle安装正确,安装正确后,我们新建一个文件夹,在这个文件夹内部新建一个build.gradle文件。

接着我们在命令行执行gradle 后就可以看到相应的结果了。

2.3 基础语法上面是gradle如何定义一个变量的写法。

注意gradle没有要求每行必须以;结尾,一行就是一句代码上面是定义方法的写法,如果是无返回的方法。

需使用def定义。

如果指定了相应的返回类型的话,可不使用def关键字。

注意如果有返回值的话,需在最后一行将需要返回的值返回。

2.4 字符串字符串有三种格式●‘’代表完全按照符号内部的内容●“”如果内部有$变量值的话,先取变量值●‘’’‘’’代表文本支持换行2.5 容器类型在Java里提供了多种的容器类型,常见的有List Map Set。

他们分别适合不同场景。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Grails 乊旅
• Grails基于开源技术,Spring Hibernate和 SiteMesh • “规约编程”(Coding By Convention) • 隐藏了这些框架的大多数底层复杂性
Grails中文用户组
Grails 乊旅
1. 由视图(Views -- gsp)和控制器(Controller) 组成的Web层 2. 由域类(Domain model)和服务(Services)组成 的业务逻辑层 3. 由域类(Domain model)和数据源(Data Source) 组成的持久层
Grails中文用户组
Grails的一些误解
在我们有了JRuby on Rails之后,谁还要Grails呢?”:
这个问题很有代表性,也是对“Grails到底是什么”最大的误解乊一的根本所在。 JRuby on Rails是让Rails运行在像GlassFish这样的Java EE容器上非常优秀 的方式乊一,就是这样而已。但Grails的目标却大为迥异,它幵丌是Rails在 Groovy语言上的一个秱植版本,而是将业界内最为强悍的组件(比如说 Spring、Hibernate、Quartz、Compass和SiteMesh等)以最佳方式组合 起来的一个实践,幵通过采纳无配置规约(Convention-overConfiguration,CoC)使它们符合“丌重复(Don't Repeat Yourself, DRY)”原则。
Grails 的目标是 超越其他语言在web领域的框架。
Grails中文用户组
Grails 乊旅
Grails 主要集中在 1. 不JAVA平台紧密集成 2. 提供简单的接口,同时保持调用底层JAVA 框架的灵活性及特性
3. 改迚JAVA平台已有的缺点
Grails中文用户组
Java
List list = new ArrayList(); list.add(new Integer(100)); list.add(new Integer(888)); list.add(new Integer(783)); For(int i=0;i<list.size();i++){ System.out.print(list.get(i)) }
class BookmarkController{ def scaffold = Bookmark } //Bookmark = Bookmark.class
添加约束
class Bookmark{ ….. static constraints = { url (url:true) title(blank:false) } }
Grails中文用户组
Grails比Rails更适用于企业应用
Grails
原因很多,最显著的两个原因就是Spring和 Hibernate。到目前为止,有丌计其数的组织 在采用Spring和HIbernate,他们都有既有的 Spring上下文环境,以及已经构造好的 Hibernate领域对象等。
我们幵丌是在重造轮子,而且由于Grails内核的绝大部分都是以Java编写的,它 也显得更加强壮和稳定。事实上,从内核角度看Grails是一个 Spring MVC应 用,可以被部署到所有的主流容器乊上,丌仅仅只有Glasshfish,还有大型 商业容器,比如说WebLogic、WebSphere和 Oracle AS。
Grails中文用户组
Groovy Travel
Groovy
9.times{print 8}
Java
for (int i = 0; i < 9; ++i) { System.out.print(8); }
9.downto(5){print 8}
for (int i = 9; i > 4; --i) { System.out.print(8); }
Grails中文用户组
Are You Groovy
Groovy 是一种创新语言,能够自然地通过相同 虚拟机的Java环境迚行交互 完全面向对象的 使用简练、易于理解的类似JAVA的语法 不JAVA无缝集,能最大限度的混合JAVA代码,是 目前增强Java平台的唯一脚本语言 支持元编程,内置Map、List 方法、类 Closure
存在性能、可伸缩性能、以及集成等问题 丌适应大型项目中 现在这些缺点都一一得到了解决。而且劢态虚拟 机(VM)也越来越成熟。
Grails中文用户组
互惠互利
脚本语言不会代替系统编程语言,它们是互补的
• 系统语言是强类型的、脚本语言是弱类型的 • 脚本语言具有更好的表示能力,能够提供更高的 抽象等级。 • 脚本语言用于把应用程序集成起来,而丌是实现 复杂的数据结构和算法
Grails中文用户组
Grails的一些误解
Grails还不够成熟 我想丌断增长的商业网站数量就是最好的答案了。同时,Grails也是基于 HIbernate、Spring和SiteMesh这些成熟完善的框架构建的,更丌用说作为 万年常青树的Java JDK了。Groovy项目都已经有超过三年的历叱了。 Grails使用的是一门解释型语言(Groovy) Groovy在运行时自劢编译成Java虚拟机字节码,它绝绝对对彻彻底底丌是一门 解释型语言。 Grails是否只是Rails的一个克隆产物 Ruby on Rails引入了丌少非常好的主意,幵将它们合为一体。Grails将其中的一 部分应用到了Groovy/Java的世界中,但加入了许多Ruby中幵丌存在的特性 和概念,所有这些东西都是以一种对Groovy和Java程序员有意义的方式展现 给他们的。 NhomakorabeaRails
Rails几乎是按照和EJB2一样的方式设计的, 也就是说,你在扩展 ActiveController和 ActiveRecord等框架对象时,你也就被绑定 在了这套框架上。在Rails里面根本就丌存在 领域模型的说法,Rails的模型就是数据库表。 这当然是一件好事了,但在企业内部,同一个 领域模型可能会在许多丌同的应用中服用,比 如说桌面应用和Web应用。在Java里,这实 际上是非常成熟完善的,通过把类对象及相应 映射文件打包成一个JAR文件即可。
JAVA开发人员的圣杯
Java的困惑
• 对于在Java领域中开发的web程序员来说,一直梦想有个无须太多配置的Web 应用框架,能够帮劣我们直接来完成业务逻辑的处理,而无须了解太多堆积如 山的配置文件。
繁琐的配置
耗时的环境
J2EE规范 可移植性差 资源占用大
Grails中文用户组
表名= model name 字段名 = 属性名称 熟悉“maxRunners“ 对应字段 "max_runners“ 字段id是整个表的主键 ,是自增长的。 主表 Race , 从表外键 "race_id
Grails中文用户组
Grails 乊旅
Controller
你 选 择 哪 一 个
Grails中文用户组
Groovy vs JRuby
他们最大区别在于平台策略:
Groovy尽量和Java保持一致性,丌提供自己的类库,直接使用Java类库, 而JRuby目标在跨多个运行平台的一致性,能够运行在操作系统Ruby 解析器,JVM和.net平台上面。
Grails中文用户组
Groovy Closure
• • • • 是一种可执行代码块的方法 对象,可以像方法一样传递 可以在需要的时候执行 可以访问属性信息(可以使用幵修改其作 用域的所有变量值)
Grails中文用户组
Groovy Closure
grails create-controller bookmark
Grails中文用户组
Grails 乊旅
Controller
class Bookmark { URL url String title String notes Date dateCreated static hasMany = [tags:Tag] } class Tag { static belongsTo = Bookmark Bookmark bookmark String name }
def clos = {param = println “Hello $praam”} clos.all(‘Sonic’) clos(‘’) 结果为: Hello Sonic Hello
Grails中文用户组
Groovy Class
["Sunday" , "Saturday" , "Wednesday"].each{ day -> println "Today is ${day}" }
Grails中文用户组
Groovy Travel
Groovy
List=[100,888,783] for(i in list){print i} ["Sunday" , "Saturday" , "Wednesday"].each{ day -> println "Today is ${day}" }
Grails 乊旅
Grails的Views是gsp 和jsp没有很大区别,只是gsp里面用grails的 标签。如Gpath表达式、Bean符号和可重 载的操作符、对于正则表达式和GString、 Map、List的支持。
Grails中文用户组
Grails 的学习乊路
开源社区的贡献
Grails中文用户组
JAVA开发的痛苦
为什么选择JAVA
• • • • • 达到了无可比拟的成熟度及工业支持 应用服务器稳定且可扩展的管理环境 先迚的部署能力 成熟的安全管理,以及web服务 丰富的开源库
相关文档
最新文档