最近在维护一个java项目时,接触到grails,这个框架很简洁高效,为了熟悉总体的过程,以常见的Membership为例把总体过程实战一遍。
安装
安装JDK
Grails.org下载包,按照readme的说明建立环境变量,grails –v验证是否正常
可参考 http://www.cnblogs.com/2018/archive/2011/04/17/2010877.html
建立Membership
在.net中有实现的框架可供使用,grails中也有类似的插件,本文使用的spring security core这个插件为例。
建立项目
$ grails create-app bookstore
$ cd bookstore
建立用户和角色:安装插件,执行插件的脚本建立管理内容
$ grails install-plugin spring-security-core
$ grails s2-quickstart com.testapp User Role
此时grails-app下domain views controllers建立了对应的MVC内容
建立测试的控制器
$ grails create-controller com.testapp.Secure
grails-app/controllers/com/testapp/SecureController.groovy
@Secured标注安全,可以对整个控制器和方法标注
grails-app/controllers/SecureController.groovy
import grails.plugins.springsecurity.Secured
@Secured(['ROLE_ADMIN'])
class SecureController {
def index = {
render 'Secure access only'
}
}
加入角色初始化和限制
grails-app/conf/BootStrap.groovy
import com.testapp.Role
import com.testapp.User
import com.testapp.UserRole
class BootStrap {
def springSecurityService
def init = { servletContext ->
def adminRole = new Role(authority: 'ROLE_ADMIN').save(flush: true)
def userRole = new Role(authority: 'ROLE_USER').save(flush: true)
String password = springSecurityService.encodePassword('password')
def testUser = new User(username: 'me', enabled: true, password: password)
testUser.save(flush: true)
UserRole.create testUser, adminRole, true
assert User.count() == 1
assert Role.count() == 2
assert UserRole.count() == 1
}
}
运行
grails run-app
http://localhost:8080/bookstore/secure 此时需要登录,输入me/password这个即可看到显示的内容
MemberShip管理
执行grails generate-all 可以生成User Role这些界面和控制器,下面使用一个插件spring security ui集成Membership的管理
spring security ui的安装: 先将依赖的插件安装好
grails install-plugin mail 0.9
grails install-plugin jquery
grails install-plugin jquery-ui
grails install-plugin famfamfam
grails install-plugin spring-security-ui
0.9表示安装某个版本
下面grails run-app运行后的截图:
主界面
用户管理搜索界面
用户编辑界面
以上配置完后grails项目的配置目录
集成搜索
Searchable插件安装
全文检索一般使用的是lucene,searchable这个插件更方便的集成了lucene
0.6-SNAPSHOT缺少包运行会出错,grails install-plugin searchable直接安装不行,执行如下的安装步骤
1、下载searchable https://svn.codehaus.org/grails-plugins/grails-searchable/branches/0_5_5_1/grails-searchable-0.5.5.1.zip
2、安装: grails install-plugin ../grails-searchable-0.5.5.1.zip
建立搜索的内容
grails create-domain-class book
package bookstore
class Book {
static searchable = true
String isbn
String title
String content
Date createdAt
static constraints = {
isbn blank: false, unique: true
title blank: false
}
}
生成页面和控制器
grails generate-all bookstore.Book
运行
Grails run-app
Book内容的建立
http://localhost:8080/bookstore/book/list
Book内容的搜索
修改主页
grails-app\conf\ UrlMappings.groovy
"/"(view:"/index") 映射的是views\ index.gsp这个文件,如果需要改变,把这个内容修改一下即可
打包
以上的执行都是使用基于内存中的数据库,实际部署环境一般使用的都是mysql等数据库,此时需要
Ø 在Conf\DataSource.groovy中配置数据库
Ø 将jdbc驱动放到lib目录下
执行Grails war 打包应用,将bookstore\target\bookstore-0.1.war部署到tomcat即可
运行的效果和上面类似
参考
官方参考
http://grails.org/plugins/ 插件的目录
Searchable 参考
http://grails.org/plugin/searchable
https://svn.codehaus.org/grails-plugins/grails-searchable/trunk/ http://grails.org/Searchable+Plugin+-+Quick+start
总结
grails基于约定的形式,简化了程序的结构和组织,加上动态语言的特性,大大的提高了效率和方便性,希望在Java世界中能够更好的发展。