Grails下 Membership和全文搜索实战录

最近在维护一个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运行后的截图:

主界面

clip_image002

用户管理搜索界面

clip_image004

用户编辑界面

clip_image006

以上配置完后grails项目的配置目录

clip_image008

集成搜索

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

clip_image010

Book内容的搜索

clip_image012

修改主页

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即可

clip_image014

运行的效果和上面类似

参考

官方参考

http://grails.org/

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世界中能够更好的发展。

原文地址:https://www.cnblogs.com/2018/p/2020628.html