Tuesday April 22, 2008
TOTD #30: CRUD Application using Grails - Hosted on Jetty and HSQLDB
After a simple
Grails application, let's create a CRUD
application. Such an application allows to perform basic database
operations to read table rows from the database, create new rows, and
edit and delete existing rows. This blog shows how such an application
can be created using Grails, hosted on built-in Jetty servlet engine
and use in-memory HSQLDB
database for persistence.
A follow-up entry will show how this application can be deployed in
production mode on GlassFish
and using MySQL database.
| ~/testbed/grails-1.0.2/samples
>grails create-app
crud Welcome to Grails 1.0.2 - http://grails.org/ Licensed under Apache Standard License 2.0 Grails home is set to: /Users/arungupta/testbed/grails-1.0.2 Base Directory: /Users/arungupta/testbed/grails-1.0.2/samples Note: No plugin scripts found Running script /Users/arungupta/testbed/grails-1.0.2/scripts/CreateApp.groovy Environment set to development [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/src [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/src/java [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/src/groovy [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/grails-app [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/grails-app/controllers [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/grails-app/services [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/grails-app/domain [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/grails-app/taglib [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/grails-app/utils [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/grails-app/views [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/grails-app/views/layouts [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/grails-app/i18n [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/grails-app/conf [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/test [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/test/unit [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/test/integration [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/scripts [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/web-app [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/web-app/js [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/web-app/css [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/web-app/images [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/web-app/META-INF [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/lib [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/grails-app/conf/spring [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/grails-app/conf/hibernate [propertyfile] Creating new property file: /Users/arungupta/testbed/grails-1.0.2/samples/crud/application.properties [copy] Copying 2 files to /Users/arungupta/testbed/grails-1.0.2/samples/crud [copy] Copying 2 files to /Users/arungupta/testbed/grails-1.0.2/samples/crud/web-app/WEB-INF [copy] Copying 5 files to /Users/arungupta/testbed/grails-1.0.2/samples/crud/web-app/WEB-INF/tld [copy] Copying 87 files to /Users/arungupta/testbed/grails-1.0.2/samples/crud/web-app [copy] Copying 17 files to /Users/arungupta/testbed/grails-1.0.2/samples/crud/grails-app [copy] Copying 1 file to /Users/arungupta/testbed/grails-1.0.2/samples/crud [copy] Copying 1 file to /Users/arungupta/testbed/grails-1.0.2/samples/crud [copy] Copying 1 file to /Users/arungupta/testbed/grails-1.0.2/samples/crud [propertyfile] Updating property file: /Users/arungupta/testbed/grails-1.0.2/samples/crud/application.properties Created Grails Application at /Users/arungupta/testbed/grails-1.0.2/samples/crud |
| ~/testbed/grails-1.0.2/samples/crud
>grails
create-domain-class state Welcome to Grails 1.0.2 - http://grails.org/ Licensed under Apache Standard License 2.0 Grails home is set to: /Users/arungupta/testbed/grails-1.0.2 Base Directory: /Users/arungupta/testbed/grails-1.0.2/samples/crud Note: No plugin scripts found Running script /Users/arungupta/testbed/grails-1.0.2/scripts/CreateDomainClass.groovy Environment set to development [copy] Copying 1 file to /Users/arungupta/testbed/grails-1.0.2/samples/crud/grails-app/domain Created for State [copy] Copying 1 file to /Users/arungupta/testbed/grails-1.0.2/samples/crud/test/integration Created Tests for State |
| class
State { } |
| class
State { String name String abbrev } |
| class
BootStrap { def init = { servletContext -> new State(name:"California", abbrev:"CA").save() new State(name:"New York", abbrev:"NY").save() new State(name:"Texas", abbrev:"TX").save() new State(name:"Wisconsin", abbrev:"WI").save() } def destroy = { } } |
| ~/testbed/grails-1.0.2/samples/crud
>grails
create-controller state Welcome to Grails 1.0.2 - http://grails.org/ Licensed under Apache Standard License 2.0 Grails home is set to: /Users/arungupta/testbed/grails-1.0.2 Base Directory: /Users/arungupta/testbed/grails-1.0.2/samples/crud Note: No plugin scripts found Running script /Users/arungupta/testbed/grails-1.0.2/scripts/CreateController.groovy Environment set to development [copy] Copying 1 file to /Users/arungupta/testbed/grails-1.0.2/samples/crud/grails-app/controllers Created Controller for State [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/grails-app/views/state [copy] Copying 1 file to /Users/arungupta/testbed/grails-1.0.2/samples/crud/test/integration Created ControllerTests for State |
| class
StateController { def index = { } } |
| class
StateController { def scaffold = State } |
| ~/testbed/grails-1.0.2/samples/crud
>grails run-app Welcome to Grails 1.0.2 - http://grails.org/ Licensed under Apache Standard License 2.0 Grails home is set to: /Users/arungupta/testbed/grails-1.0.2 Base Directory: /Users/arungupta/testbed/grails-1.0.2/samples/crud Note: No plugin scripts found Running script /Users/arungupta/testbed/grails-1.0.2/scripts/RunApp.groovy Environment set to development Running Grails application.. 2008-04-18 17:26:29.962::INFO: Logging to STDERR via org.mortbay.log.StdErrLog 2008-04-18 17:26:29.075::INFO: jetty-6.1.4 2008-04-18 17:26:29.155::INFO: No Transaction manager found - if your webapp requires one, please configure one. 2008-04-18 17:26:30.886:/crud:INFO: Set web app root system property: 'crud' = [/Users/arungupta/testbed/grails-1.0.2/samples/crud/web-app/] 2008-04-18 17:26:30.886:/crud:INFO: Initializing Log4J from [file:/Users/arungupta/.grails/1.0.2/projects/crud/resources/log4j.properties] 2008-04-18 17:26:30.945:/crud:INFO: Initializing Spring root WebApplicationContext [0] spring.GrailsWebApplicationContext Refreshing org.codehaus.groovy.grails.commons.spring.GrailsWebApplicationContext@848dfb: display name [org.codehaus.groovy.grails.commons.spring.GrailsWebApplicationContext@848dfb]; startup date [Fri Apr 18 17:26:32 PDT 2008]; parent: org.springframework.web.context.support.XmlWebApplicationContext@cddcc3 [1] spring.GrailsWebApplicationContext Bean factory for application context [org.codehaus.groovy.grails.commons.spring.GrailsWebApplicationContext@848dfb]: org.springframework.beans.factory.support.DefaultListableBeanFactory@11f136 2008-04-18 17:26:34.655:/crud:INFO: Initializing Spring FrameworkServlet 'grails' 2008-04-18 17:26:35.716::INFO: Started SelectChannelConnector@0.0.0.0:8080 Server running. Browse to http://localhost:8080/crud |





Please leave suggestions on other TOTD that you'd like to see. A complete archive is available here.
Technorati: groovy grails glassfish jetty hsqldb scripting crudPosted by Arun Gupta in web2.0 | Comments[6]
|
|
|
|
|
Today's Page Hits: 3133
Total # blog entries: 994