最近工作中接触到了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教程之--我的理解的更多相关文章

  1. 智能合约语言 Solidity 教程系列10 - 完全理解函数修改器

    这是Solidity教程系列文章第10篇,带大家完全理解Solidity的函数修改器. Solidity系列完整的文章列表请查看分类-Solidity. 写在前面 Solidity 是以太坊智能合约编 ...

  2. Grails教程

    1简介- Reference DocumentationVersion:null Table of Contents 1.1Grails 2.0有那些新特性?1.1.1面向开发的特性1.1.2核心特性 ...

  3. CSS3教程:box-sizing属性的理解

    说到 IE 的 bug,一个臭名昭著的例子是它对于“盒模型”的错误解释:在 IE5.x 以及 Quirks 模式的 IE6/7 中,将 border 与 padding 都包含在 width 之内.这 ...

  4. CSS3教程:box-sizing属性的理解border、padding与容器宽度的关系

    说到 IE 的 bug,一个臭名昭著的例子是它对于“盒模型”的错误解释:在 IE5.x 以及 Quirks 模式的 IE6/7 中,将 border 与 padding 都包含在 width 之内.这 ...

  5. 易于理解的 python 深度学习摘要算法教程

    序 "我不想要一份完整的报告,只要给我一份结果摘要就好".我经常发现自己处于这种状况 -- 无论是在大学里还是在我的职业生涯中.我们准备一份全面的报告,但老师/主管却只有时间阅读摘 ...

  6. Docker入门教程(一)介绍

    http://dockone.io/article/101 Docker入门教程(一)介绍 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第一篇,介绍了 ...

  7. node-webkit教程(11)Platform Service之shell

    node-webkit教程(11)Platform Service之shell 文/玄魂 目录 node-webkit教程(10)Platform Service之shell 前言 11.1  She ...

  8. Spring Data JPA教程,第一部分: Configuration(翻译)

    Spring Data JPA项目旨在简化基于仓库的JPA的创建并减少与数据库交互的所需的代码量.本人在自己的工作和个人爱好项目中已经使用一段时间,它却是是事情如此简单和清洗,现在是时候与你分享我的知 ...

  9. Python基础入门教程,Python学习路线图

    给大家整理的这套python学习路线图,按照此教程一步步的学习来,肯定会对python有更深刻的认识.或许可以喜欢上python这个易学,精简,开源的语言.此套教程,不但有视频教程,还有源码分享,让大 ...

随机推荐

  1. js pix

    window.onload = function () { var img = new Image(); img.src = '1.gif'; var ctx = document.querySele ...

  2. ios短信和电话--参考

    调用打电话功能 [[UIApplicationsharedApplication] openURL:[NSURL URLWithString:@"tel://10086"]]; 调 ...

  3. MacBookPro 蓝牙重置

    我的MBP经常休眠唤醒后蓝牙死机,怎么办? 大部分情况下,关机重启就可以了,但是如果还不行的话,试一下如下方法,也能解决问题: 重置一下电源管理和总线给你个方法 您的电脑首先是在关机的状态重置电源管理 ...

  4. linux nginx安装

    操作系统centOS7安装nginx: 1.如果centOS7中未安装编译器,先安装gcc编译模块 yum install gcc gcc-c++ ncurses-devel perl 2.安装ngi ...

  5. mysql查询结果中文显示成了问号

    在mysql的配置文件my.ini中的[mysqld]项中加这两句 character-set-server = utf8 collation-server = utf8_general_ci 在任务 ...

  6. 递归解析XML

    package com.app.test; import java.io.InputStream; import java.util.List; import org.dom4j.Attribute; ...

  7. php多线程thread开发与应用的例子

    Php多线程的使用,首先需要PHP5.3以上版本,并安装pthreads PHP扩展,可以使PHP真正的支持多线程,扩展如何安装请自行百度 PHP扩展下载:https://github.com/kra ...

  8. SPRING IN ACTION 第4版笔记-第八章Advanced Spring MVC-003-Pizza例子的基本流程

    一. 1. 2.pizza-flow.xml <?xml version="1.0" encoding="UTF-8"?> <flow xml ...

  9. Android Studio 快捷键 for Mac OS X 10.5+

    Action Mac OSX Win/Linux 注释代码(//) Cmd + / Ctrl + / 注释代码(/**/) Cmd + Option + / Ctrl + Alt + / 格式化代码 ...

  10. x+2y+3z=n的非负整数解数

    题目:给一个正整数n,范围是[1,10^6],对于方程:x+2y+3z = n,其中x,y,z为非负整数,求有多少个这样的三元组 (x,y,z)满足此等式. 分析:先看x+2y=m,很明显这个等式的非 ...