Grails教程之--我的理解
最近工作中接触到了Grails,对于这门技术,网上的资料不算太多,有的基本也是大同小异。我打算边学边写一些东西,毕竟是一个学习的过程,写的东西如果有错误或者理解不正确的地方,还希望大家能指出来。帮助我提高,也避免我误人子弟,混淆视听。废话不说了,现在开始。
学习网站及资料:
首先推荐大家一个网站:http://www.kuqin.com/grails-doc-1.0/
这里是Grails1.0的中文手册,当然现已经是Grails2.x了,但是我们通过这个手册了解一些基本的概念还是很好的。
环境搭建和开发工具:
我使用的是GGTS3.0版本,好像就是Eclipse装了个插件的感觉。。。,好像也可以通过Eclipse直接安装一个Grails的插件。
言归正传,现在我来大致说一下我对于Grails的理解。首先Grails在我看来就是继承了以及Spring和Hibernate的框架,语法适用了Groovy的形式,当然也可以在Grails中直接使用Java的语法。Grails对于java以及其Spring,Hibernate的封装进行的很深入,基本重写了两大框架大量的接口。这样的好处就是我们使用起来非常简单易用,不好的地方就是有的时候出现一些很诡异的问题时,不好发现原因。
下面说一些需要注意的事项。我们用IDE工具创建一个Grails后,他就会自动为我们生成一些目录,每个目录(文件夹)都有自己特定的名字,不要手欠去改这些名字。其中说几个重要的文件夹:domain、views、controllers。对应我们平时使用的MVC分层。domain里面一般是POJO类,views顾名思义就是写我们的页面gsp文件(不是jsp,我没有写错,是gsp),controllers里面就是我们请求转发的action,当然在Grails中我们都叫XxxController。对于复杂的业务,我们还可以在Services文件夹里面写上一些业务逻辑。
对于Grails的缺点,我觉得在Controllers里面会出现一些重复的代码。对于这一点,我觉得还是因人而异,我习惯把类分细一点,所以对应的domain和controller比较多,相对应这些controller处理业务时,多少会有一些重复的代码。但是controller间的调用是很垃圾的做法(就如同Action间的互相调用),如果把所有的逻辑都写到Services中去的话,Services就会很多,在项目移交的时候,往往比较耽误时间。适用Grails主要还是为了快速的开发,所以我觉得多一点冗余代码,也是可以理解的吧。
时间不多,晚些时候再写上一篇,下一篇主要介绍一下Grails各个层之间的调用以及命名规则。
Grails教程之--我的理解的更多相关文章
- 智能合约语言 Solidity 教程系列10 - 完全理解函数修改器
这是Solidity教程系列文章第10篇,带大家完全理解Solidity的函数修改器. Solidity系列完整的文章列表请查看分类-Solidity. 写在前面 Solidity 是以太坊智能合约编 ...
- Grails教程
1简介- Reference DocumentationVersion:null Table of Contents 1.1Grails 2.0有那些新特性?1.1.1面向开发的特性1.1.2核心特性 ...
- CSS3教程:box-sizing属性的理解
说到 IE 的 bug,一个臭名昭著的例子是它对于“盒模型”的错误解释:在 IE5.x 以及 Quirks 模式的 IE6/7 中,将 border 与 padding 都包含在 width 之内.这 ...
- CSS3教程:box-sizing属性的理解border、padding与容器宽度的关系
说到 IE 的 bug,一个臭名昭著的例子是它对于“盒模型”的错误解释:在 IE5.x 以及 Quirks 模式的 IE6/7 中,将 border 与 padding 都包含在 width 之内.这 ...
- 易于理解的 python 深度学习摘要算法教程
序 "我不想要一份完整的报告,只要给我一份结果摘要就好".我经常发现自己处于这种状况 -- 无论是在大学里还是在我的职业生涯中.我们准备一份全面的报告,但老师/主管却只有时间阅读摘 ...
- Docker入门教程(一)介绍
http://dockone.io/article/101 Docker入门教程(一)介绍 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第一篇,介绍了 ...
- node-webkit教程(11)Platform Service之shell
node-webkit教程(11)Platform Service之shell 文/玄魂 目录 node-webkit教程(10)Platform Service之shell 前言 11.1 She ...
- Spring Data JPA教程,第一部分: Configuration(翻译)
Spring Data JPA项目旨在简化基于仓库的JPA的创建并减少与数据库交互的所需的代码量.本人在自己的工作和个人爱好项目中已经使用一段时间,它却是是事情如此简单和清洗,现在是时候与你分享我的知 ...
- Python基础入门教程,Python学习路线图
给大家整理的这套python学习路线图,按照此教程一步步的学习来,肯定会对python有更深刻的认识.或许可以喜欢上python这个易学,精简,开源的语言.此套教程,不但有视频教程,还有源码分享,让大 ...
随机推荐
- css 多行显示省略号....
CSS属性如下: white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
- Linux 串行终端,虚拟终端,伪终端,控制终端,控制台终端的理解
转自Linux 串行终端,虚拟终端,伪终端,控制终端,控制台终端的理解 终端:输入和输出设备(键盘 + 显示器). 串行终端:与机器的串口对应,每一个串口对应一个串行终端,串口对应的是物理终端. 虚拟 ...
- IDEA 使用 SVN的一个注意点
IDEA是调用SVN.EXE来实现相关版本管理功能的,所以必须要安装visualSVN,然后再使用相关功能!
- Ubuntu下APACHE HTTPS安装和配置
http://blog.csdn.net/newjueqi/article/details/9789659
- TYPEC 接口芯片CC逻辑原理与必要性
USB Type-C凭借其自身强大的功能,在Apple,Intel,Google等厂商的强势推动下,必将迅速引发一场USB接口的革命,并将积极影响我们日常生活的方方面面.为了能够使自己的设备兼容这些接 ...
- 延时过程中要加上app.processEvents(),进度条里也要加上这句
如何让程序等待一段时间QTime t;t.start();while(t.elapsed()<1000);这种死循环也是一种常见错误用法.但改成正确的还是比较简单的: QTime t;t.sta ...
- 一个灵巧的Delphi多播实事件现方案
一个灵巧的Delphi多播实现方案.必须是支持泛型的Delphi版本.也就是Delphi2009以后.强烈建议用DelphiXE. 用法就是例如写一个Class指定一个Event,触发的时候会通知多个 ...
- Android java.net.SocketException四大异常解决方案
java.net.SocketException如何才能更好的使用呢?这个就需要我们先要了解有关这个语言的相关问题.希望大家有所帮助.那么我们就来看看有关java.net.SocketExceptio ...
- bzoj2716
感人肺腑pascal过不去系列(可能是自己弱,因为有pascal过去了毕竟)那个这种平面点还有一种处理方法是kd tree,太弱了不会有时间学一下我还是用了cdq分治,首先肯定要把绝对值这个不和谐的东 ...
- apache开源项目--lucence
Lucene 是apache软件基金会一个开放源代码的全文检索引擎工具包,是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎.Lucene的目的是为软件开发人员提供一个简单易用 ...