Grails

来自开放百科 - 灰狐
2008年6月19日 (四) 03:25Allen (讨论 | 贡献)的版本

跳转到: 导航, 搜索
Grails.jpg

Grails关注将"规约编程"(coding by convention)引入Groovy。它是一个开放源网络应用构架, 对Groovy语言起到杠杆作用,并且对Java网络开发起到补足作用。你可以用Grails 作为独立开发环境, 它隐藏了所有的配置细节,也可以将它同和入你的Java商务逻辑。

Grails关注与使开发最简化,而且Grails的解决方案来自于广泛的开发者,不只局限于Java社区。

Grails构建在开源技术如SpringHibernateSiteMesh之上,提供了一个类似于Rails 的平台可以与Java平台无缝集成. Groovy是一种“动态”或指令语言。动态语言一般用来加速和简化程序撰写。与Python或Ruby等其他指令语言不同的是,用Groovy撰写的程序,可与Java虚拟器结合。

目录

Install

wget http://download.huihoo.com/grails/grails-bin-1.0.1.zip
GRAILS_HOME= C:\grails-1.0.1 or /usr/local/grails-1.0.1 
Add the "%GRAILS_HOME%\bin" directory to your PATH environment variable
Add the "%GRAILS_HOME%\ant\bin directory to your PATH environment variable.

grails create-app
input project name: my-project
cd my-project
grails create-domain-class
input domain name: Book

my-project\grails-app\domain\Book.groovy

class Book {
   String title
   String author
}

my-project\grails-app\conf\BootStrap.groovy

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 = {
   }
}

my-project\grails-app\controllers\BookController.groovy

class BookController {
    def scaffold = Book
}
grails run-app
http://localhost:8080/my-project/
http://localhost:8080/my-project/book
运行成功 :)

To upgrade your existing Grails projects you must run:

grails clean
grails upgrade

NetBeans

http://wiki.netbeans.org/groovy

CRUD

Create

def p = new Person(name:"Jack", age:32, lastVisit:new Date())
p.save()

Read

def p = Person.get(1)
assert 1 == p.id

Update

def p = Person.get(1)
p.name = "Peter"
p.save()

Delete

def p = Person.get(1)
p.delete()

GORM

One-to-one

class Face {
    Nose nose
}
class Nose {	 
	static belongsTo = [face:Face]
}
new Face(nose:new Nose()).save() // ok 
def f = Face.get(1)
f.delete() // both Face and Nose deleted

One-to-many

class Author {
   static hasMany = [ books : Book ]
   String name 
} 
class Book { 
   static belongsTo = [author:Author] 
   String title 
}

Many-to-many

class Book {
  static belongsTo = Author
  static hasMany = [authors:Author]
  String title
}
class Author {
  static hasMany = [books:Book]
  String name
}

GPath: Groovy's ability to manipulate collections via GPath and methods like sort, findAll and so on combined with GORM results in a powerful combination.

def books = Book.list()
def books = Book.list(offset:10, max:20)
def books = Book.list(sort:"title", order:"asc")
def book = Book.get(23)
def books = Book.getAll(23, 93, 81)
def book = Book.findByTitle("The Stand")

Usage

grails help

  • grails bootstrap
  • grails bug-report
  • grails clean
  • grails compile
  • grails console
  • grails create-app
  • grails create-controller
  • grails create-domain-class
  • grails create-integration-test
  • grails create-plugin
  • grails create-script
  • grails create-service
  • grails create-tag-lib
  • grails create-unit-test
  • grails doc
  • grails generate-all
  • grails generate-controller
  • grails generate-views
  • grails help
  • grails init
  • grails install-plugin
  • grails install-templates
  • grails list-plugins
  • grails package
  • grails package-plugin
  • grails package-plugins
  • grails plugin-info
  • grails release-plugin
  • grails run-app
  • grails run-app-https
  • grails set-proxy
  • grails set-version
  • grails shell
  • grails stats
  • grails test-app
  • grails upgrade
  • grails war

Plugins

grails list-plugins

Plug-ins available in the Grails repository are listed below:

  • acegi <no releases> -- No description available
  • aop <no releases> -- No description available
  • autorest <no releases> -- No description available
  • axis2 <0.1> -- Add Web Service support for Grails services using Apaxhe Axis2.
  • cache <no releases> -- No description available
  • cas-client <0.2> -- This plugin provides client integration for JA-SIG CAS
  • code-coverage <0.7> -- Generates Code Coverage reports
  • converters <0.3> -- Provides JSON and XML Conversion for common Objects (Domain Classes, Lists, Maps, POJO)
  • dbmapper <0.1.7> -- Database relation to domain object generator
  • dbmigrate <0.1.5> -- Database migration tasks
  • djangotemplates <no releases> -- No description available
  • dojo <0.4.3> -- Provides integration with the Dojo toolkit http://dojotoolkit.org, an Ajax framework.
  • dwr <0.1> -- This plugin adds DWR capabilies to the services in a Grails application.
  • eastwood-chart <0.1> -- This plugin wraps JFreeChart's Eastwood servlet for Grails app
  • echo2 <0.1> -- Echo2 capabilities to Grails applications
  • ext-ui <no releases> -- No description available
  • fck-editor <0.3> -- FCKeditor
  • feeds <1.0> -- Render RSS/Atom feeds with a simple builder
  • flex <0.1> -- Provides integration between Grails and Flex
  • google-chart <0.4.3> -- This plugin adds Google Chart API features to Grails applications.
  • gwt <0.2.4> -- The Google Web Toolkit for Grails.
  • i18n-templates <1.0.1> -- I18n Templates
  • ivy <0.1> -- The Ivy Dependency Manager for Grails.
  • jasper <0.5> --
  • jcaptcha <0.2> -- Grails JCaptcha Plugin
  • jcr <no releases> -- No description available
  • jms <0.3> -- This plugin adds MDB functionality to services.
  • jsecurity <0.1.1> -- Security support via the JSecurity framework.
  • jsf <no releases> -- No description available
  • laszlo <0.6> -- OpenLaszlo plugin for Grails
  • ldap <0.1> -- Adds easy to use LDAP connectivity
  • liquibase <1.5.2.0> -- LiquiBase Database Refactoring for Grails
  • modalbox <0.1> -- This plugin adds the ModalBox to your Grails applications.
  • mondrian <0.1> -- This plugin installs Pentaho Mondrian into your Grails application.
  • ofchart <0.5> --
  • portlets <no releases> -- No description available
  • quartz <0.2 (?)> -- This plugin adds Quartz job scheduling features to Grails application.
  • radeox <0.1> -- A plugin for the Radeox Wiki-render engine to allow easy markup and cross-linking.
  • remoting <0.3> -- Adds easy-to-use server-side and client-side RPC support.
  • richui <0.2> -- Provides a set of AJAX components
  • scaffold-tags <0.7> -- Adds tags to support fully-customizable & dynamic scaffolding
  • searchable <0.4-SNAPSHOT> -- Adds rich search functionality to Grails domain models.
  • staticresources <no releases> -- No description available
  • webtest <0.3> -- A plug-in that provides functional testing for Grails using Canoo Web Test
  • wicket <0.3> -- Provides integration between Grails and the Wicket framework
  • xfire <0.7.4> -- Add Web Service support for Grails services using XFire.
  • xmlrpc <0.1> -- This plugin adds XML RPC functionality to GRAILS
  • yui <2.5.0> -- Yahoo! User Interface Library (YUI)
  • yui-widgets <0.1> -- Yahoo! User Interface Library (YUI) Widgets

To find more info about plugin type 'grails plugin-info [NAME]'

To install type 'grails install-plugin [NAME] [VERSION]'

grails install-plugin yui 2.5.0

For further info visit http://grails.org/Plugins

Ext

Grails Ext Userinterface
grails install-plugin ext or grails install-plugin ext 2.0.2
Ext has installed under your project's /web-app/js/ext/2.0.2

More Detail: http://grails.org/Ext+Plugin

Using ExtJS Layouts with Grails Layouts

GWT

grails install-plugin gwt
grails create-gwt-module <module> 
grails compile-gwt-modules
grails create-gwt-page
grails events
grails run-gwt-client

More Detail: http://www.grails.org/GWT+Plugin

Tutorials

Build Your First Grails Project: A Grails-Powered Blog

相关项目

Samples

http://svn.codehaus.org/grails/trunk/grails-samples/

相关链接

Grails logo.jpg
分享您的观点
个人工具
名字空间

变换
操作
导航
工具箱