zoukankan      html  css  js  c++  java
  • 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世界中能够更好的发展。

  • 相关阅读:
    python操作csv,对比两个csv文件某列值
    监控端口和僵尸进程脚本
    openldap创建只读账号
    shell 判断文件内容是否改变
    golang调用shell命令标准输出阻塞管道
    fexpect 源码
    python pexpect 免交互自动恢复gitlab数据
    consul client agent 本地读取key value
    pip 安装三方库报超时
    微信小程序滚动tab的实现
  • 原文地址:https://www.cnblogs.com/2018/p/2020628.html
Copyright © 2011-2022 走看看