- 浏览: 498729 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
hypercube:
markin'
配置D语言编程环境 -
qiezi:
qiezi 写道yangyang_08 写道1 ...
我的编程语言学习经历 -
qiezi:
yangyang_08 写道1、现在如果做并发服务器,楼主选用 ...
我的编程语言学习经历 -
yangyang_08:
1、现在如果做并发服务器,楼主选用什么样的语言架构?2、lua ...
我的编程语言学习经历 -
dearplain:
我也是语言爱好者,不过我一直坚持使用c。
我的编程语言学习经历
简单测试了一下,语法比ruby稍罗嗦一点,不过也算是很简洁了。
在WINDOWS下执行,遇到个小BUG,grails.bat第4行:if "%GRAILS_HOME"=="" goto grailsHomeNotSet是错误的,改成if "%GRAILS_HOME%"=="" goto grailsHomeNotSet就可以了。后面也有点小问题,干脆在LINUX下测试。
照着Quick Start做了一下,还算顺利,不过例子怎么只给了个list呢?怎么也得把create/update/delete给完成嘛。
猜着写了个create:
怎么存进去的不是我那个字符串,而是[Ljava.lang.String;@18b5a73呢。。
又看了下文档,在controller里面是这么用的:
其它都很相似:
语法上比RoR稍麻烦点。
接着测试一下查询:
list.gsp里面添加:
groovy写代码挺烦的,局部变量也要def来定义?不定义就提示该变量不是对象的字段,跟很多脚本语言都不一样。如果从java上转过来,会觉得还是挺简洁的。
借助spring、hibernate,Grails所做的就是整合,groovy这个语言好像并没有特别出众的地方,大部分东西在其它脚本语言里面都能看到。我觉得ruby更容易扩充,更自由。Grails要想成功,除非在效率上大幅度领先,就测试来看,并没有觉得很快,它也没提供个评测工具。据说ruby2.0也要重写虚拟机,如果ruby只是稍慢一些,自然还是选RoR比较好。
在WINDOWS下执行,遇到个小BUG,grails.bat第4行:if "%GRAILS_HOME"=="" goto grailsHomeNotSet是错误的,改成if "%GRAILS_HOME%"=="" goto grailsHomeNotSet就可以了。后面也有点小问题,干脆在LINUX下测试。
照着Quick Start做了一下,还算顺利,不过例子怎么只给了个list呢?怎么也得把create/update/delete给完成嘛。
猜着写了个create:
<!----> @Property create = {
[ post : new Post() ]
}
@Property save = {
new Post(params).save()
redirect(action:list)
}
[ post : new Post() ]
}
@Property save = {
new Post(params).save()
redirect(action:list)
}
怎么存进去的不是我那个字符串,而是[Ljava.lang.String;@18b5a73呢。。
又看了下文档,在controller里面是这么用的:
<!----> @Property save = {
def post = new Post()
post.properties = params
post.save()
redirect(action:list)
}
def post = new Post()
post.properties = params
post.save()
redirect(action:list)
}
其它都很相似:
<!---->class PostController {
@Property index = { redirect(action:list) }
@Property list = {
[ postList : Post.list() ]
}
@Property create = {
[ post : new Post() ]
}
@Property save = {
def post = new Post()
post.properties = params
post.save()
redirect(action:list)
}
@Property show = {
[ post : Post.get(params['id']) ]
}
@Property delete = {
Post.get(params['id']).delete()
redirect(action:list)
}
@Property edit = {
[ post : Post.get(params['id']) ]
}
@Property update = {
def post = Post.get(params['id'])
post.properties = params
post.save()
redirect(action:list)
}
}
@Property index = { redirect(action:list) }
@Property list = {
[ postList : Post.list() ]
}
@Property create = {
[ post : new Post() ]
}
@Property save = {
def post = new Post()
post.properties = params
post.save()
redirect(action:list)
}
@Property show = {
[ post : Post.get(params['id']) ]
}
@Property delete = {
Post.get(params['id']).delete()
redirect(action:list)
}
@Property edit = {
[ post : Post.get(params['id']) ]
}
@Property update = {
def post = Post.get(params['id'])
post.properties = params
post.save()
redirect(action:list)
}
}
语法上比RoR稍麻烦点。
接着测试一下查询:
<!----> @Property list = {
def title = params['title']
def body = params['body']
def postList
def c = Post.createCriteria()
//if (title != null && title != "" && body != null && body != "")
if (title && body)
postList = c{
like("title", "%" + title + "%")
like("body", "%" + body + "%")
}
else if (title)
postList = c{
like("title", "%" + + title + "%")
}
else if (body)
postList = c{
like("body", "%" + body + "%")
}
else
postList = Post.list()
[ postList : postList, post : new Post() ]
}
def title = params['title']
def body = params['body']
def postList
def c = Post.createCriteria()
//if (title != null && title != "" && body != null && body != "")
if (title && body)
postList = c{
like("title", "%" + title + "%")
like("body", "%" + body + "%")
}
else if (title)
postList = c{
like("title", "%" + + title + "%")
}
else if (body)
postList = c{
like("body", "%" + body + "%")
}
else
postList = Post.list()
[ postList : postList, post : new Post() ]
}
list.gsp里面添加:
<!----> <g:form action="list" method="post">
<div class="dialog">
<table>
<tr class='prop'>
<td valign='top' style='text-align:left;' width='20%'>
<label for='title'>Title:</label>
</td>
<td valign='top' style='text-align:left;' width='80%'
class='${hasErrors(bean:post,field:'title','errors')}'>
<input type='text' name='title' value='${post?.title}' />
</td>
</tr>
<tr class='prop'>
<td valign='top' style='text-align:left;' width='20%'>
<label for='body'>Body:</label>
</td>
<td valign='top' style='text-align:left;' width='80%'
class='${hasErrors(bean:post,field:'body','errors')}'>
<input type='text' name='body' value='${post?.body}' />
</td>
</tr>
</table>
</div>
<div class="buttons">
<span class="formButton">
<input type="submit" value="Search"></input>
</span>
</div>
</g:form>
<div class="dialog">
<table>
<tr class='prop'>
<td valign='top' style='text-align:left;' width='20%'>
<label for='title'>Title:</label>
</td>
<td valign='top' style='text-align:left;' width='80%'
class='${hasErrors(bean:post,field:'title','errors')}'>
<input type='text' name='title' value='${post?.title}' />
</td>
</tr>
<tr class='prop'>
<td valign='top' style='text-align:left;' width='20%'>
<label for='body'>Body:</label>
</td>
<td valign='top' style='text-align:left;' width='80%'
class='${hasErrors(bean:post,field:'body','errors')}'>
<input type='text' name='body' value='${post?.body}' />
</td>
</tr>
</table>
</div>
<div class="buttons">
<span class="formButton">
<input type="submit" value="Search"></input>
</span>
</div>
</g:form>
groovy写代码挺烦的,局部变量也要def来定义?不定义就提示该变量不是对象的字段,跟很多脚本语言都不一样。如果从java上转过来,会觉得还是挺简洁的。
借助spring、hibernate,Grails所做的就是整合,groovy这个语言好像并没有特别出众的地方,大部分东西在其它脚本语言里面都能看到。我觉得ruby更容易扩充,更自由。Grails要想成功,除非在效率上大幅度领先,就测试来看,并没有觉得很快,它也没提供个评测工具。据说ruby2.0也要重写虚拟机,如果ruby只是稍慢一些,自然还是选RoR比较好。
发表评论
-
我们必须思考一切吗?有关同步、异步
2009-12-13 17:01 0最近在项目中使用了一个协程库,不过也过去半年了,在Erloun ... -
XL Programming Language
2009-07-24 08:21 2117在wikipedia上瞎逛,看一些Coroutine相关资料, ... -
平台架构
2008-08-27 08:56 2358上次构思了并行/分布式平台的架构,后来觉得还是有些小问题,没有 ... -
并行/分布式集群的一点想法
2008-08-13 21:35 1991最近在构思一个并行/分布式集群的平台架构,用来解决目前很多服务 ... -
夜不能寐
2008-08-08 08:34 1688前几天睡不着时写的, ... -
标准库的效率--适时选择自己实现
2008-04-27 22:31 2619最近在测试简单的轻量级线程调度器。从fiber转换到gener ... -
使用C#的Generator编写并发程序
2008-04-18 23:17 4542前面说地Generator编写并发程序的优势,当然它本身没有这 ... -
云计算的架构
2008-04-12 11:41 4077一直没搞清云计算和网格计算的差别,为什么就提出个新词了呢? ... -
并发编程模型:Thread, Coroutine, Callback ...
2008-04-07 00:41 10386先总结一下。 线程是最容易编写的并发方式,操作系统也提供了最 ... -
结合Coroutine和Callback
2008-03-31 12:00 4415Coroutine切换成本相对还 ... -
Coroutine依然很重
2008-03-29 22:25 16Coroutine比Thread轻许多,但C的实现依然是开销很 ... -
C和Erlang轻量级线程性能
2008-03-13 23:42 4553简单比较了一下ucontext和Erlang的进程切换效率,在 ... -
C++组件对象模型方案思考
2007-07-20 14:47 82最近公司项目比较多,都是小而零散的,由于项目组人手少,成立时间 ... -
网络服务器架构模式
2007-04-20 20:01 4047前段时间做了个简单的d ... -
Mac OS X 10.5(Leopard)
2007-01-24 14:46 3286跑去听了苹果Leopard技术 ... -
突发奇想
2006-12-11 21:31 2513看到D语言的opAssign即赋值操作符,突然想是不是能实现下 ... -
动静结合的语言?
2006-12-06 09:47 2387静态类型和动态类型各有长短,为何不让这2者兼得呢? 比如一段 ... -
Google Picasa Linux版
2006-12-01 11:21 2532看样子是运行在wine上,不过竟然和windows上一样流畅。 ... -
网页界面的一点心得
2006-11-14 11:07 2070这几天在折腾网页界面,其中有些要求位置、大小控制得比较精细,而 ... -
IE/FireFox/Opera/Safari中border/outline/background的差异
2006-11-13 14:09 6332做了一个图片编辑窗口,用来做裁剪、旋转、镜像操作。 原来是 ...
相关推荐
使用 Groovy on Rails (Grails) 构建的 Web 应用程序。 它使用Bootstrap为网页赋予样式,从而管理学生和课程的数据库,并以HTML呈现内容。 用户可以看到数据库中所有课程/用户的列表; 还有课程和用户的详细视图。...
"Groovy need not rails"指的是Groovy并不需要像Ruby on Rails那样的全栈框架,因为Groovy自身就提供了强大的工具和库来构建Web应用程序。Webx是一个基于Groovy的框架,它旨在简化Web应用开发,提供类似于Rails的...
Groovy 和 Grails 与 Ruby on Rails 一样,都追求开发效率和简洁性,但它们建立在不同的语言基础之上。Ruby on Rails 是基于 Ruby 语言,而 Grails 则是基于 Groovy。虽然 Grails 受到 Rails 的启发,但它采用了 ...
- **领域模型**:代表数据库表的实体类,使用GORM(Groovy on Rails ORM)进行管理。 - **控制器**:处理HTTP请求并将数据传递给视图层。 - **视图**:使用GSP(Groovy Server Pages)或FreeMarker等模板引擎来...
apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本,希望大家多多下载,apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本,希望大家多多下载,apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本,希望...
Jruby支持Rails框架,使得Java开发者可以利用Ruby on Rails进行快速Web应用开发。 2. **Jython** 是Python语言的Java版本,它提供Python的简洁和强大的功能,并且能够调用Java库。Jython适合那些喜欢Python语法但又...
1. 引入Groovy库:在Java项目中添加Groovy的相关依赖,通常是`groovy-all`,确保Java能够访问Groovy运行时环境。 2. 创建GroovyClassLoader:使用这个类加载器可以动态加载和执行Groovy脚本。它继承自Java的...
它是基于Groovy构建的,提供了一种快速开发Web应用的方式,借鉴了Ruby on Rails的许多理念。通过GORM(Grails Object-Relational Mapping)和Grails Command Line Interface(CLI),开发者可以高效地创建数据库驱动...
Groovy 2.3.6是该语言的一个稳定版本,发布于2014年,它提供了许多改进和新特性。对于开发者来说,选择特定版本可能是因为它满足了项目需求或与已有的系统兼容。Groovy 2.3系列引入了类型推断,使得代码更加可读和...
and provides,, # Tips and Tricks, # Unit Testing and Build Support, # Groovy on Windows, An additional bonus is a chapter dedicated to Grails, the Groovy Web Application Framework.
版本号“2.4.7”表明这是Groovy 2.4系列的一个稳定版本,发布于2016年,该版本可能包含了自2.4.0以来的一系列改进和修复。 描述中的省略号可能是由于信息不完整,但在实际的Groovy-all-2.4.7.jar文件中,我们可以...
- Grails是基于Groovy的全栈Web应用框架,提供了快速开发功能,类似于Ruby on Rails。 通过学习Groovy,开发者可以利用其灵活性和生产力优势,提升开发效率,尤其是在Spring框架和Gradle构建工具的使用上。这篇...
Groovy是一种动态、灵活的编程语言,它是Java平台上的一个扩展,可以无缝集成到Java项目中。Groovy的语法简洁,支持面向对象编程、函数式编程,并提供了许多现代语言特性,如闭包和动态类型。这使得Groovy成为快速...
### Groovy Script 入门知识点详解 #### 一、Groovy脚本简介 Groovy是一种灵活的面向对象的编程语言,它运行在Java平台上。由于其语法简洁且与Java高度兼容,因此对于Java开发者来说非常容易上手。Groovy不仅支持...
Groovy 入门教程 Groovy 是一种基于 Java 语言的脚本语言,运行在 JVM 中,语法与 Java 相似,但抛弃了 Java 的一些烦琐的语法规则,提供了更加简洁和灵活的编程体验。 Groovy 的特点 1. 简洁的语法:Groovy 语法...
标题中的“发布Groovy文档CHM(截至20110408)”表明这是一个关于Groovy编程语言的文档合集,截止日期为2011年4月8日。CHM是Microsoft编写的帮助文件格式,通常用于提供离线参考材料。这可能包含了Groovy语言的语法...
标题中的“Groovy和Java相互调用1”指的是在编程时如何在Groovy语言环境中调用Java类,以及反之,如何在Java程序中调用Groovy类。这是一种跨语言交互的方式,特别是在混合使用Groovy和Java的项目中非常常见。 ...
本文将深入探讨如何基于Groovy实现Java脚本的动态编译、部署和发布,并且介绍如何通过Groovy脚本直接调用Dubbo接口,从而提高开发效率和灵活性。 Groovy是一种基于Java平台的强大的动态编程语言,它具有简洁的语法...
Groovy SDK 4.0.3 是一个针对Groovy编程语言的软件开发工具包,它包含了Groovy语言的运行环境和开发所需的各种组件。Groovy是一种动态、灵活的面向对象编程语言,它与Java语法兼容,但提供了更简洁的语法和更强的...