Não iremos utilizar nenhuma IDE para seguir o tutorial então basta que você esteja com o prompt de comando aberto e com o bloco de notas. Em alguns momentos iremos utilizar o console do Groovy.
Para os exemplos iremos considerar que você esteja criando a aplicação na raiz da árvore de diretórios da unidade C.
Para iniciar é preciso fazer a instalação do Framework. Caso não tenha o Grails instalado em sua máquina, acesse http://www.grails.org/Installation e veja como fazer.
Criando a aplicação
Depois de instalado vamos criar uma aplicação chamada myapp. No prompt de comando digite
C:\>grails create-app myapp para criar a aplicação. Depois navegue pelo prompt até a pasta raiz da aplicação com o comando C:\>cd myapp.
Estrutura da Aplicação
Breve explicação sobre algumas pastas importantes criadas pelo Grails para a aplicação:Conf: Local onde ficam armazenados os arquivos de configuração da sua aplicação como datasources etc.
Controllers: Local onde ficam as classes controladoras da sua aplicação, ou seja, as classes que recebem e enviam as requisições do/para o browser.
Domain: Local onde ficam as classes do domínio da aplicação.
I18n: (Internacionalização) Local onde fimas recursos como message boundles etc.
Services: Armazena as classes de serviço como beans do spring etc.
Views: Local onde ficam as páginas da aplicação (.gsp)
Feito isso sua aplicação já estará pronta para ser utilizada pois o Grails já vem com um servidor embutido chamado jetty, então basta startar a aplicação com o comando C:\myapp>grails run-app.
Quando a aplicação for startada, no final do prompt irá aparecer a URL da sua aplicação. Deve ser algo parecido com http://localhost:8080/myapp.
Acesse a url indicada e se tudo estiver certo você verá a página inicial da sua aplicação Grails como mostrada abaixo.
Página Inicial da Aplicação

Criando Classes de Domínio
Vamos agora criar uma classe de domínio chamada Book. No prompt de comando na pasta raiz da aplicação digite o comando C:\myapp>grails create-domain-class Book.
Abra a classe Book.groovy com o bloco de notas ou outro editor de sua preferência. Ela está localizada na pasta domain.
Vamos adicionar dois atributos a classe são eles titulo (title) e autor (author).
Classe Book

Praticando Alguns Comandos no Groovy Console
Vamos agora criar uma classe de domínio chamada Book. No prompt de comando na pasta raiz da aplicação digite o comando C:\myapp>grails create-domain-class Book.
Abra a classe Book.groovy com o bloco de notas ou outro editor de sua preferência. Ela está localizada na pasta domain.
Vamos adicionar dois atributos a classe são eles titulo (title) e autor (author).
Classe Book

Praticando Alguns Comandos no Groovy Console
Digite no prompt o comando C:\myapp\grails console. Este comando irá abrir o console do Grails onde poderemos executar alguns scripts. Na verdade você pode criar classes etc.
Vamos instanciar a classe Book e persistir no Banco.
Digite o código abaixo no console e depois execute o script com o comando CTRL+R. A saída deve ser semelhante a figura abaixo.
book = new Book(title:"Lua Nova", author:"Stephenie Meyer")
book.save()

Digite CTRL+R mais algumas vezes para criar mais insâncias de Book no Banco.

Teste os comandos abaixo no console:
Listando as instancias criadas
Book.list()
Book.list().getClass()
Book.list().title
Acessando os resultados por atributo
Book.findAllByTitle(“Lua%”)
Acessando os resultados por atributo com paginação
Book.findAllByTitle(“Lua%”, [ max:2])
Para maiores informações consulte http://www.grails.org/doc/1.0.x/
Banco de Dados
Você deve ter reparado que nós persistimos objetos da classe livro sem ter configurado nenhum Banco de Dados ou datasource. Isto foi possível por que Grails também já vem com um Banco de Dados embutido e pré configurado, o HSQL. A configuração inicial está definida para criar o Banco de Dados em memória e com a opção create-drop, o que faz com que sempre que você restarta a aplicação os dados persistidos sejam apagados.
Alterando o Arquivo de Configuração de Banco de Dados
Dentro da pasta conf existe uma classe chamada DataSource.groovy, é nesta classe que ficam as configurações de Banco. Abra esta classe no editor.
Na seção development, vamos alterar para que o banco de dados fique em um arquivo e para que os dados não se percam ao restartar a aplicação. Altere para que fique da seguine forma:
[mais código aqui...]
// environment specific settings
environments {
development {
dataSource {
dbCreate = "update"
url = "jdbc:hsqldb:file:devDb;shutdown=true"
// dbCreate = "create-drop" // one of 'create', 'create-drop','update'
// url = "jdbc:hsqldb:mem:devDB"
}
}
[mais código aqui...]
Voltando para a parte Web, vamos criar um controller para que os livros possam ser criados a partir do browser. Para isto digite no prompt o comando
C:\myapp>grails create-controller Book
Abaixo o controller que acabamos de criar.

Mais uma vez no prompt inicie a aplicação com o comando C:\myapp>grails run-app e você verá na home da aplicação que um link para o controller foi criado como na figura abaixo:

Ao clicar no link você irá receber um erro 404 como na tela abaixo:

Isto aconteceu por que por convenção, é necessário que exista uma view para cada action do controller. Repare que a página não encontrada foi a página /WEB-INF/grails-app/views/book/index.jsp e se você reparar no controller índex é o nome da action default criada no controller pelo comando create-controller.
Scaffolding
O recurso de scaffold permite a você gerar automaticamente uma aplicação inteira para uma determinada classe de domínio incluindo as views necessárias e as actions para as operações de CRUD do controller.
Então vamos alterar o BookController para que agora as views e actions de CRUD sejam geradas automaticamente. Altere o BookController para que ele fique igual a figura abaixo.

Depois de alterado salve o controller, reinicie a aplicação, e ao clicar novamente no link BookController você verá uma página com a listagem dos livros inseridos no Banco de Dados anteriormente como na figura abaixo.

Explore esta página, adicione, edite, exclua, liste novos livros etc.
Dê Stop na aplicação pelo prompt CTRL+C e digite o comando
C:\myapp>grails generate-all Book (digite y para permitir sobrescrever o arquivo BookController caso seja necessário).
Agora abra novamente o BookController e você verá o código das actions responsáveis pelo CRUD dos livros.
Plugins
Grails possui uma comunidade bastante ativa no que diz respeito a criação de plugins então vamos fazer uso de alguns deles. Para maiores informações sobre plugins acesse http://www.grails.org/plugin/category/all
Nossa aplicação necessita de segurança, então vamos utilizar o plugin acegi – Spring Security Plugin.
Obs: Precisa de Internet para baixar o plugin.
Acegi – Spring Security Plugin
No prompt de comando digite C:\myapp>grails install-plugin acegi
Depois de instalado o plugin na aplicação temos mais 3 comandos disponíveis. São eles:
- grails create-auth-domains (Cria uma página de autenticação)
- grails generate-manager (Cria uma página para o gerenciamento das informações e permissões dos usuários da aplicação)
- grails generate-registration (Cria uma página para realização de cadastro de usuários para a aplicação)
Digite no prompt C:\myapp>grails create-auth-domains, depois C:\myapp>grails generate- registration e por ultimo C:\myapp>grails generate- manager
Reinicie a aplicação com o comando C:\myapp>grails run-app e a home deve ter mais 7 controllers como na imagem abaixo:

Criando Roles
Clique no controller AuthorityController e em seguida clique em New Authority para adicionarmos papéis para os usuários da aplicação.
Vamos adicionar a Role ROLE_USER como na figura abaixo:

Clique em create.
Registrando Usuários
Clique no controller RegisterController e adicione um usuário para a aplicação como na tela abaixo:

Clique em Create.
Acessando a Aplicação
Clique no LogoutController e em seguida LoginController e você verá a tela de login da aplicação como abaixo:

Configurando padrões de Segurança para URLs
Clique em RequestmapController e em seguida clique em New Requestmap.
Configure para que somente os usuários associados a Role ROLE_USER possam acessar as páginas dos livros. Veja a figura abaixo:

Clique em Create.
Para testar clique em Home e clique em BookController, você verá a lista de livros criados. Clique em Home, em seguida em LogoutController e depois clique em BookController. Você será solicitado a logar na aplicação.
