Grails Quick Start

2023-12-05 23:18
文章标签 start quick grails

本文主要是介绍Grails Quick Start,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 http://www.grails.org/Quick+Start上的文章,是Grails最简单的入门文档,今天忽然看了一下,发现有的东西真的给忽略了,有些没有按规范做法做,遂翻译了一下,希望能对各位有所帮助~~~~

 

 

 

Grails Quick Start

以下是开始简单的grails 工程。也有一个按如下步骤创建一个小的appscreencast

  • 快速入门
    • 创建一个 Grails project
    • 配置数据源(可选)
    • 创建领域类- Domain Class
    • 创建控制器- controller
    • 启动 Grails
  • 接下来要做的事

创建一个 Grails project

如果你已经安装了Grails ,你可以使用内置的命令(built-in target )来创建新工程:

grails create-app

该命令会提示你输入工程名字,创建的工程目录结构如下:

%PROJECT_HOME%

    + grails-app

       + conf                 ---> location of configuration artifacts

           + hibernate              ---> optional hibernate config

           + spring                 ---> optional spring config

       + controllers          ---> location of controller artifacts

       + domain               ---> location of domain classes

       + i18n                 ---> location of message bundles for i18n

       + services             ---> location of services

       + taglib               ---> location of tag libraries

       + util                 ---> location of special utility classes

       + views                ---> location of views

           + layouts              ---> location of layouts

   + lib

   + scripts                  ---> scripts

   + src

       + groovy               ---> optional; location for Groovy source files

                                   (of types other than those in grails-app/*)

       + java                 ---> optional; location for Java source files

   + test                     ---> generated test classes

   + web-app

       + WEB-INF

配置数据源(可选)

"create-app" 命令已经给你为每1 种标准环境:Development, TestData, and Production 创建了一个使用闭包的数据源组件,位于"<..>/grails-app/conf" 目录下,名称为DataSource.groovy

下面操作的所有例子都是在开发环境下。详见配置# 环境

默认的,每个数据源都配置了一个HSQLDB 的内存模式的数据库(易于测试,但可能对你的实际开发没那么有用)所以这步是可选的:

dataSource {

  pooled = false

  driverClassName = "org.hsqldb.jdbcDriver"

  username = "sa"

  password = ""

}

// environment specific settings

environments {

  development {

    dataSource {

      dbCreate = "create-drop" // one of 'create', 'create-drop','update'

      url = "jdbc:hsqldb:mem:devDB"

    }

  }

  test {

    dataSource {

      dbCreate = "update"

      url = "jdbc:hsqldb:mem:testDb"

    }

  }

  production {

    dataSource {

      dbCreate = "update"

      url = "jdbc:hsqldb:file:prodDb;shutdown=true"

    }

  }

}

配置数据源只需要改成想要使用的数据库,驱动,把驱动的jar 包放在<..>/lib 下。dataSource 处定义的属性集为子结点继承。

创建领域类

确保此时(cmd 或终端下)在你工程的根目录下,键入

cd my-project

grails create-domain-class


该命令提示你输入领域类的名字。输入"book" 后会在你工程grails-app/domain 下创建Book.groovy 。你可以使用你最喜欢的文本编辑器或IDE 来编辑。


提示: 当你命名领域类的时候,名字不能和数据库中的关键字一样(例如在mysql"Group" 是关键字;这时你可以这样命名如"UserGroup" )。

 

提示: Grails doesn't seem to like names like MYCar or MYtruck (more than one capital letter at the beginning of the name). Names like MyCar or MyTruck, however, seem to work fine. Classes with names that have more than one capital letter in the beginning give 404 pages even if views for the class exist or scaffolding is set. If you are having problems with views not showing up and your names have more than one capital letter in the beginning of the name, try changing your names to the "Grails-friendly" format and try again.

领域类是持久化组件,所有的属性默认被持久化到数据库( 欲知详情,请看 GORM (Grails Object Relational Mapping) 部分):

class Book {

    String title

    String author

}

此时你可能想创建一些测试数据。一个简单的方法是在"<..>/grails-app/conf/BootStrap.groovy"

( 提示: 0.5.6, 或其他版本, 可能被改为ApplicationBootStrap.groovy) Grails application bootstrap class "init" 闭包中构建和保存领域对象:

class BootStrap {

    def init = { servletContext ->

        // Create some test data

        new Book(author:"Stephen King",title:"The Shining").save()

        new Book(author:"James Patterson",title:"Along Came a Spider").save()

    }

    def destroy = {

    }

}

( 提示:你可以和在控制器或Grails applications 其他部分一样来构建和保存领域对象; 详见 Grails Object Relational Mapping (GORM) )

创建控制器

控制器   是Grails applications 的核心,负责处理web 请求和把请求的URLs 映射到控制器类或该类中的一个闭包。

运行"grails create-controller " 命令,输入控制器名字。在本例中我们输入"Book" ,会 生成一个名为{{grails-app/controllers/BookController.groovy }} 的控制器。

  打开该控制器,使用动态的脚手架 ,它会在运行的时候动态生成你的应用程序。修改如下:

class BookController {

     def scaffold = Book

}

确保你输入的"Book" 是首字母大写的B

 

提示: 为了使脚手架有效,你需要在生成的文件移除或注释掉"def index = { } "

备选方案,你也可以运行"grails generate-all" 命令,它会为你生成所有的脚手架,且让生成的控制器独立,而不是用默认的脚手架来替换它。很值得学习。

 

启动Grails

为了启动Grails app 需运行如下命令

grails run-app

 

这会启动Jetty servlet engine 的运行在端口8080 的一个实例。为了在不同地端口启动如9090 可以使用{{grails -Dserver.port=9090 run-app }}.

为访问book 列表,打开浏览器,输入:

http://localhost:8080/my-project/book/list

 

因为英文"list"BookController 默认的action ,也可以输入:

http://localhost:8080/my-project/book

 

在开发模式下, Grails 好像很慢,页面加载可能超过1 秒。如果这样的话,你可以尝试通过设定{{JAVA_OPTS}} 环境变量来增加堆大小的最大值,如: '-Xmx512m'- 当你运行Grails 的时候,这会设定堆大小的最大值为512Mb ,这样就可以感觉到响应速度的提升。

接下来要做的事

  • 详见 Checking Projects into SVN 如何check 你的新建的 grails app 到源码控制。
  • IDE 中设置 grails app
  • 浏览众多的 grails 插件 , 如安装webtest 通过canoo webtest 来创建功能测试。

 

 

 

这篇关于Grails Quick Start的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/459511

相关文章

GNSS CTS GNSS Start and Location Flow of Android15

目录 1. 本文概述2.CTS 测试3.Gnss Flow3.1 Gnss Start Flow3.2 Gnss Location Output Flow 1. 本文概述 本来是为了做Android 14 Gnss CTS 的相关环境的搭建和测试,然后在测试中遇到了一些问题,去寻找CTS源码(/cts/tests/tests/location/src/android/locat

Oracle Start With关键字

Oracle Start With关键字 前言 旨在记录一些Oracle使用中遇到的各种各样的问题. 同时希望能帮到和我遇到同样问题的人. Start With (树查询) 问题描述: 在数据库中, 有一种比较常见得 设计模式, 层级结构 设计模式, 具体到 Oracle table中, 字段特点如下: ID, DSC, PID; 三个字段, 分别表示 当前标识的 ID(主键), DSC 当

笔记整理—内核!启动!—kernel部分(2)从汇编阶段到start_kernel

kernel起始与ENTRY(stext),和uboot一样,都是从汇编阶段开始的,因为对于kernel而言,还没进行栈的维护,所以无法使用c语言。_HEAD定义了后面代码属于段名为.head .text的段。         内核起始部分代码被解压代码调用,前面关于uboot的文章中有提到过(eg:zImage)。uboot启动是无条件的,只要代码的位置对,上电就工作,kern

Oracle start with connect BY 死循环

解决办法 检查start with前有没有where条件, 如果有的话,套一层select,再 Oracle start with connect BY

MemSQL Start[c]UP 2.0 - Round 1A(构造)

题目链接:http://codeforces.com/problemset/problem/452/A 解题思路: 打个表暴力查找匹配。 完整代码: #include <algorithm>#include <iostream>#include <cstring>#include <complex>#include <cstdio>#include <strin

QT教程:start()和startTimer()的区别

start() - QTimer 类的成员函数         start() 是 QTimer 类的成员函数,用于启动一个基于 QTimer 对象的定时器。QTimer 是 Qt 中常用的定时器类,它会在设定的时间间隔后发出 timeout() 信号。 用法 QTimer timer;timer.start(1000); // 每隔 1000 毫秒触发一次 timeout() 信号

【Android studio】 unable to start the daemon process

这几天在做一个安卓桌面项目时,突然发现android studio 不能用了。 提示: 网上的一些方法,要不就是: 1、删除C:\Users\<username>\.gradle 文件夹 2、File Menu - > Invalidate Caches/ Restart->Invalidate and Restart 3、C:\Users\<us

Find Kth题目类型总结 (quick Select 类型总结)

首先quick select算法的模板要倒背如流,这个是通过quick sort里面提炼得到的算法;两个while一个if,condition相同;后面再递归 Kth Largest Element in an Array (是找从大到小的第k大;注意左边是大的,右边是小的,quick select的模板要熟记) class Solution {public int findKthLarges

Sorting (Merge Sort, Rainball Sort, quick select) 总结

Merge k Sorted Lists (这题是用PQ,或者merge sort都可以做,关于第K大的问题,参考: Find Kth 题目类型总结) Sort an Array (重点掌握merge sort和quick sort,因为两者可以演变为,divide conquer, quick select, 参考: Find Kth 题目类型总结) Sort Colors 思路:三指针,i

springBoot重写start run方法

Spring Boot允许开发者自定义应用程序启动过程,如果想要重写start方法,通常是在实现了CommandLineRunner, ApplicationRunner, 或者ApplicationListener<ContextRefreshedEvent>接口的类中。这些接口的目的是在Spring应用上下文初始化完成后执行一些定制的操作。 例如,如果你创建了一个类并实现了Applicati