最近工作中接触到了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. .net 添加不同项目框架引用出现的问题

    问题描述: winform项目添加web项目时出现问题,winform项目添加web项目类时,老是报找不到这个类的命名空间 最后才知道两个项目所建的框架不一样,一个是.net framework 4, ...

  2. 练习PYTHON之GEVENT

    这个只是作了第一个样例,里面还有很多高级的技巧,希望以后用得着. 我觉得因为以前看过几本LINUX内核,关于异步非阻塞IO,信号,锁之类的,所以理解起来,还可以. import gevent def ...

  3. [codility]Equi-leader

    http://codility.com/demo/take-sample-test/equileader 一开始想到从左和右两边开始扫取众数,但求众数又要重新扫一遍,这样复杂度就是O(n^2)了.此题 ...

  4. [jobdu]树的子结构

    判断一棵树B是否是A的子树,对A做DFS,然后不断判断是否和B相同. 其实也可以不对A做DFS,直接遍历A中的每个节点和B做树的比较就行了. #include <iostream> #in ...

  5. Linux内核spin_lock与spin_lock_irq分析

    http://blog.csdn.net/zhanglei4214/article/details/6837697

  6. 解读分库分表中间件Sharding-JDBC

    [编者按]数据库分库分表从互联网时代开启至今,一直是热门话题.在NoSQL横行的今天,关系型数据库凭借其稳定.查询灵活.兼容等特性,仍被大多数公司作为首选数据库.因此,合理采用分库分表技术应对海量数据 ...

  7. 在Hadoop伪分布式模式下安装Hbase

    安装环境:Hadoop 1.2.0, Java 1.7.0_21 1.下载/解压 在hbase官网上选择自己要下的hbase版本,我选择的是hbase-0.94.8. 下载后解压到/usr/local ...

  8. 【HDOJ】1026 Ignatius and the Princess I

    这道题搞了很久啊.搜索非常好的一道题.昨天想了2小时,以为是深搜,但后来发现深搜怎么也没法输出正确路径.今天拿宽搜试了一下,问题就是普通的队列宽搜没法得到当前时间最小值.看了一下讨论区,发现优先级队列 ...

  9. BZOJ_1610_[Usaco2008_Feb]_Line连线游戏_(计算几何基础+暴力)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1610 给出n个点,问两两确定的直线中,斜率不同的共有多少条. 分析 暴力枚举直线,算出来斜率放 ...

  10. 【转】foxmail突然打不开了,双击没反应,怎么回事呀

    原文网址:http://tieba.baidu.com/p/3492526384 解决方法如下:1.进入foxmail安装目录(默认在D盘Program Files下层,右击foxmail这个文件夹, ...