<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    JAVA—咖啡館

    ——?dú)g迎訪問(wèn)rogerfan的博客,常來(lái)《JAVA——咖啡館》坐坐,喝杯濃香的咖啡,彼此探討一下JAVA技術(shù),交流工作經(jīng)驗(yàn),分享JAVA帶來(lái)的快樂(lè)!本網(wǎng)站部分轉(zhuǎn)載文章,如果有版權(quán)問(wèn)題請(qǐng)與我聯(lián)系。

    BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
      447 Posts :: 145 Stories :: 368 Comments :: 0 Trackbacks

    在學(xué)習(xí)任何東西之前,最重要的是培養(yǎng)興趣,Groovy世界最耀眼的技術(shù)之一--Grails相信大家早已耳聞,我將通過(guò)Grails實(shí)戰(zhàn)系列文章向您展現(xiàn)Grails的迷人風(fēng)采,使您感受到Grails的魅力,以至瘋狂地愛(ài)上Grails,并墜入Groovy的愛(ài)河。學(xué)Groovy,Grails與學(xué)Java一樣,在實(shí)戰(zhàn)之前需要搭建開發(fā)環(huán)境,您可以在 Groovy輕松入門--搭建Groovy開發(fā)環(huán)境 學(xué)習(xí)到如何搭建Groovy環(huán)境,之后我會(huì)講一下如何搭建Grails環(huán)境,然后手把手地寫個(gè)Demo程序告終,我還會(huì)抽空寫篇“Groovy輕松入門--Grails實(shí)戰(zhàn)之進(jìn)階篇”

    一,搭建Grails環(huán)境

     

    0,下載Grails( http://dist.codehaus.org/grails/grails-bin-0.4.2.zip ,請(qǐng)留意朝花夕拾——Groovy & Grails中的“最新版本”提示)并解壓到自己指定位置(我的位置是D:DMY_DEVgrails)

    1,設(shè)置環(huán)境變量GRAILS_HOME(注意大寫),過(guò)程與“設(shè)置環(huán)境變量GROOVY_HOME”相似。

    2,將%GRAILS_HOME%bin添加到環(huán)境變量path中,過(guò)程與“將GROOVY_HOME目錄下的bin追加到環(huán)境變量path中”相似。

    (如果只想進(jìn)行Grails開發(fā),可以不設(shè)GROOVY_HOME)

    二,創(chuàng)建Grails Demo程序

    0,打開“命令行”,選擇當(dāng)前目錄(我的為D:Tempgrails_apps),在黑底白字的窗口中輸入“grails create-app demo”,不包括雙引號(hào)“”,在您的屏幕中可以看到類似下面的輸出結(jié)果:

    D:Tempgrails_apps>grails create-app demo
                Welcome to Grails 0.4.2 - http://grails.org/
                Licensed under Apache Standard License 2.0
                Grails home is set to: D:DMY_DEVgrails
                Base Directory: D:Tempgrails_apps
                Environment set to production
                Note: No plugin scripts found
                Running script D:DMY_DEVgrailsscriptsCreateApp.groovy
                [mkdir] Created dir: D:Tempgrails_appsdemosrc
                [mkdir] Created dir: D:Tempgrails_appsdemosrcjava
                [mkdir] Created dir: D:Tempgrails_appsdemosrcgroovy
                [mkdir] Created dir: D:Tempgrails_appsdemosrctest
                [mkdir] Created dir: D:Tempgrails_appsdemograils-app
                [mkdir] Created dir: D:Tempgrails_appsdemograils-appcontrollers
                [mkdir] Created dir: D:Tempgrails_appsdemograils-appservices
                [mkdir] Created dir: D:Tempgrails_appsdemograils-appdomain
                [mkdir] Created dir: D:Tempgrails_appsdemograils-apptaglib
                [mkdir] Created dir: D:Tempgrails_appsdemograils-apputils
                [mkdir] Created dir: D:Tempgrails_appsdemograils-appviews
                [mkdir] Created dir: D:Tempgrails_appsdemograils-appviewslayouts
                [mkdir] Created dir: D:Tempgrails_appsdemograils-appi18n
                [mkdir] Created dir: D:Tempgrails_appsdemograils-appconf
                [mkdir] Created dir: D:Tempgrails_appsdemograils-tests
                [mkdir] Created dir: D:Tempgrails_appsdemoscripts
                [mkdir] Created dir: D:Tempgrails_appsdemoweb-app
                [mkdir] Created dir: D:Tempgrails_appsdemoweb-appjs
                [mkdir] Created dir: D:Tempgrails_appsdemoweb-appcss
                [mkdir] Created dir: D:Tempgrails_appsdemoweb-appimages
                [mkdir] Created dir: D:Tempgrails_appsdemoweb-appWEB-INFclasses
                [mkdir] Created dir: D:Tempgrails_appsdemoweb-appMETA-INF
                [mkdir] Created dir: D:Tempgrails_appsdemolib
                [mkdir] Created dir: D:Tempgrails_appsdemospring
                [mkdir] Created dir: D:Tempgrails_appsdemohibernate
                [copy] Copying 2 files to D:Tempgrails_appsdemo
                [copy] Copying 2 files to D:Tempgrails_appsdemoweb-appWEB-INF
                [copy] Copying 1 file to D:Tempgrails_appsdemoweb-appWEB-INF
                [copy] Copying 1 file to D:Tempgrails_appsdemoweb-appWEB-INF
                [copy] Copying 5 files to D:Tempgrails_appsdemoweb-appWEB-INFtld
                [copy] Copying 119 files to D:Tempgrails_appsdemoweb-app
                [copy] Copying 1 file to D:Tempgrails_appsdemograils-appconf
                [copy] Copying 1 file to D:Tempgrails_appsdemograils-appconf
                [copy] Copying 1 file to D:Tempgrails_appsdemograils-appconf
                [copy] Copying 7 files to D:Tempgrails_appsdemograils-app
                [mkdir] Created dir: D:Tempgrails_appsdemopluginscoregrails-apptaglib
                [mkdir] Created dir: D:Tempgrails_appsdemopluginscoregrails-apputils
                [copy] Copying 7 files to D:Tempgrails_appsdemopluginscoregrails-app
                taglib
                [copy] Copying 3 files to D:Tempgrails_appsdemopluginscoregrails-app
                utils
                [copy] Copying 1 file to D:Tempgrails_appsdemospring
                [copy] Copying 1 file to D:Tempgrails_appsdemo
                [copy] Copying 1 file to D:Tempgrails_appsdemo
                [copy] Copying 1 file to D:Tempgrails_appsdemo
                Created Grails Application at D:Tempgrails_apps/demo
                D:Tempgrails_apps>
                


     

    通過(guò)“grails create-app”這個(gè)命令,Grails自動(dòng)幫我們創(chuàng)建了開發(fā)所需的工程環(huán)境。其實(shí)您現(xiàn)在就已經(jīng)擁有了一個(gè)可運(yùn)行的Web應(yīng)用程序,然后進(jìn)入demo目錄(“cd demo”),輸入“grails run-app”,回車,啟動(dòng)這個(gè)‘五臟俱全’的程序雛形,打開瀏覽器,輸入 http://localhost:8080/demo ,回車,看到了吧 :) 讓我們繼續(xù)吧,請(qǐng)停止這個(gè)程序(Ctrl + C)

    1,進(jìn)入demo目錄,在“命令行”中輸入“cd demo”,回車,然后再輸入“grails create-domain-class User”創(chuàng)建domain class即類似于pojo的pogo,它對(duì)應(yīng)MVC中的Model,不過(guò)由Grails自動(dòng)創(chuàng)建的pogo是空的,需要自己添加屬性,約束(constraints)等。輸出結(jié)果如下所示:

    D:Tempgrails_appsdemo>grails create-domain-class User
                Welcome to Grails 0.4.2 - http://grails.org/
                Licensed under Apache Standard License 2.0
                Grails home is set to: D:DMY_DEVgrails
                Base Directory: D:Tempgrails_appsdemo
                Environment set to production
                Running script D:DMY_DEVgrailsscriptsCreateDomainClass.groovy
                [copy] Copying 1 file to D:Tempgrails_appsdemograils-appdomain
                Created  at D:Tempgrails_appsdemo/grails-app/domain/User.groovy
                [copy] Copying 1 file to D:Tempgrails_appsdemograils-tests
                Created Tests at D:Tempgrails_appsdemo/grails-tests/UserTests.groovy
                D:Tempgrails_appsdemo>
                

    2,進(jìn)入D:Tempgrails_appsdemograils-appdomain(這個(gè)目錄中存放著所有的domain class),打開User.groovy,修改為如下內(nèi)容:

    class   User {
                String name
                String password
                String toString() {
                " $name : $password "
                }
                static  constraints  =  {
                name(blank:  false )
                password(blank:  false , size:  6 .. 16 )
                }
                
    contraints這個(gè)類變量是定義一些約束的,比如name不能為空白,password不能為空白而且長(zhǎng)度在6到16之間(包括6和16)
    3,在“命令行”中輸入“grails generate-all User”,為User產(chǎn)生所有CRUD操作需要的代碼(如控制器UserController.groovy)和頁(yè)面(如list.gsp),輸出結(jié)果如下所示:
    D:Tempgrails_appsdemo>grails generate-all User
                Welcome to Grails 0.4.2 - http://grails.org/
                Licensed under Apache Standard License 2.0
                Grails home is set to: D:DMY_DEVgrails
                Base Directory: D:Tempgrails_appsdemo
                Environment set to production
                Running script D:DMY_DEVgrailsscriptsGenerateAll.groovy
                Compiling sources
                [delete] Deleting directory D:Tempgrails_appsdemoweb-appWEB-INFgrails-a
                pp
                [mkdir] Created dir: D:Tempgrails_appsdemoweb-appWEB-INFgrails-appvie
                ws
                [mkdir] Created dir: D:Tempgrails_appsdemoweb-appWEB-INFgrails-appi18
                n
                [copy] Copying 2 files to D:Tempgrails_appsdemoweb-appWEB-INFgrails-a
                ppviews
                [copy] Copied 2 empty directories to 1 empty directory under D:Tempgrails
                _appsdemoweb-appWEB-INFgrails-appviews
                [native2ascii] Converting 1 file from D:Tempgrails_appsdemograils-appi18n t
                o D:Tempgrails_appsdemoweb-appWEB-INFgrails-appi18n
                Attempting to load [13] core plugins
                Grails plug-in [i18n] with version [0.4.2] loaded successfully
                Grails plug-in [quartz] with version [0.4.2] loaded successfully
                Grails plug-in [core] with version [0.4.2] loaded successfully
                Grails plug-in [domainClass] with version [0.4.2] loaded successfully
                Grails plug-in [controllers] with version [0.4.2] loaded successfully
                Attempting to load [0] user defined plugins
                Grails plug-in [dataSource] with version [0.4.2] loaded successfully
                Grails plug-in [codecs] with version [0.4.2] loaded successfully
                Grails plug-in [hibernate] with version [0.4.2] loaded successfully
                Grails plug-in [services] with version [0.4.2] loaded successfully
                Grails plug-in [scaffolding] with version [0.4.2] loaded successfully
                Generating views for domain class [User]
                Generating list view for domain class [User]
                list view generated at D:Tempgrails_appsdemo.grails-appviewsuserlist.gsp
                Generating show view for domain class [User]
                Show view generated at D:Tempgrails_appsdemo.grails-appviewsusershow.gsp
                Generating edit view for domain class [User]
                Edit view generated at D:Tempgrails_appsdemo.grails-appviewsuseredit.gsp
                Generating create view for domain class [User]
                Create view generated at D:Tempgrails_appsdemo.grails-appviewsusercreate
                .gsp
                Generating controller for domain class [User]
                Controller generated at .grails-appcontrollersUserController.groovy
                D:Tempgrails_appsdemo>
                

    4,在“命令行”中,輸入“grails create-controller Login”,創(chuàng)建登陸(login)的控制器LoginController,它對(duì)應(yīng)MVC中的Controller,讓它負(fù)責(zé)登陸相關(guān)業(yè)務(wù),輸出如下:

    D:Tempgrails_appsdemo>grails create-controller Login
                Welcome to Grails 0.4.2 - http://grails.org/
                Licensed under Apache Standard License 2.0
                Grails home is set to: D:DMY_DEVgrails
                Base Directory: D:Tempgrails_appsdemo
                Environment set to production
                Running script D:DMY_DEVgrailsscriptsCreateController.groovy
                [mkdir] Created dir: D:Tempgrails_appsdemograils-appviewslogin
                [copy] Copying 1 file to D:Tempgrails_appsdemograils-appcontrollers
                Created Controller at D:Tempgrails_appsdemo/grails-app/controllers/LoginContr
                oller.groovy
                [copy] Copying 1 file to D:Tempgrails_appsdemograils-tests
                Created ControllerTests at D:Tempgrails_appsdemo/grails-tests/LoginController
                Tests.groovy
                D:Tempgrails_appsdemo>
                

    5,修改demograils-appcontrollersLoginController.groovy的內(nèi)容為:

    class LoginController {
                def loginService
                def index = { }
                def login = {
                User u = new User()
                u.properties = params
                if (params.name && params.password) {
                def user = loginService.check(u)
                if (user) {
                flash.message = "Welcome $"
                render(view: "ok", model: [user: user])
                } else {
                flash.error = "Invalid $ with $"
                render(view: "login", model: [user: u])
                }
                } else {
                render(view: "login", model: [user: u])
                }
                }
                }
                

    大家或許也看到了LoginService這個(gè)類,我將在后面演示創(chuàng)建它,這個(gè)LoginService類封裝了所有登陸相關(guān)的業(yè)務(wù)邏輯,Grails自動(dòng)將其注入到LoginController中。

    6,在“命令行”中,輸入“grails create-service Login”,創(chuàng)建LoginService.groovy,輸出:

    D:Tempgrails_appsdemo>grails create-service Login
                Welcome to Grails 0.4.2 - http://grails.org/
                Licensed under Apache Standard License 2.0
                Grails home is set to: D:DMY_DEVgrails
                Base Directory: D:Tempgrails_appsdemo
                Environment set to production
                Running script D:DMY_DEVgrailsscriptsCreateService.groovy
                [copy] Copying 1 file to D:Tempgrails_appsdemograils-appservices
                Created Service at D:Tempgrails_appsdemo/grails-app/services/LoginService.gro
                ovy
                [copy] Copying 1 file to D:Tempgrails_appsdemograils-tests
                Created ServiceTests at D:Tempgrails_appsdemo/grails-tests/LoginServiceTests.
                groovy
                D:Tempgrails_appsdemo>
                

    7,修改demograils-appservicesLoginService.groovy的內(nèi)容為:

    class LoginService {
                boolean transactional = true
                def check(User u) {
                def user = User.findWhere(name: u.name, password: u.password)
                return user
                }
                def serviceMethod() {
                // TODO
                }
                }
                

    ok.gsp:

    9,修改demograils-appconfApplicationBootStrap.groovy,將一個(gè)User實(shí)例保存到數(shù)據(jù)庫(kù)(grails自帶hsqldb和jetty)中,內(nèi)容如下:

    class ApplicationBootStrap {
                def init = { servletContext ->
                new User(name: "demo", password: "123456").save()
                }
                def destroy = {
                }
                }
                

     

    10,在“命令行”中,輸入“grails run-app”,運(yùn)行我們的Web應(yīng)用,輸出如下:

    D:Tempgrails_appsdemo>grails run-app
                Welcome to Grails 0.4.2 - http://grails.org/
                Licensed under Apache Standard License 2.0
                Grails home is set to: D:DMY_DEVgrails
                Base Directory: D:Tempgrails_appsdemo
                Environment set to development
                Running script D:DMY_DEVgrailsscriptsRunApp.groovy
                Compiling sources
                [delete] Deleting directory D:Tempgrails_appsdemoweb-appWEB-INFgrails-a
                pp
                [mkdir] Created dir: D:Tempgrails_appsdemoweb-appWEB-INFgrails-appvie
                ws
                [mkdir] Created dir: D:Tempgrails_appsdemoweb-appWEB-INFgrails-appi18
                n
                [copy] Copying 8 files to D:Tempgrails_appsdemoweb-appWEB-INFgrails-a
                ppviews
                [native2ascii] Converting 1 file from D:Tempgrails_appsdemograils-appi18n t
                o D:Tempgrails_appsdemoweb-appWEB-INFgrails-appi18n
                Attempting to load [13] core plugins
                Grails plug-in [i18n] with version [0.4.2] loaded successfully
                Grails plug-in [quartz] with version [0.4.2] loaded successfully
                Grails plug-in [core] with version [0.4.2] loaded successfully
                Grails plug-in [domainClass] with version [0.4.2] loaded successfully
                Grails plug-in [controllers] with version [0.4.2] loaded successfully
                Attempting to load [0] user defined plugins
                Grails plug-in [dataSource] with version [0.4.2] loaded successfully
                Grails plug-in [codecs] with version [0.4.2] loaded successfully
                Grails plug-in [hibernate] with version [0.4.2] loaded successfully
                Grails plug-in [services] with version [0.4.2] loaded successfully
                Grails plug-in [scaffolding] with version [0.4.2] loaded successfully
                [RuntimeConfiguration] Configuring for environment: Development
                Building new Hibernate SessionFactory
                Neither 'urlMap' nor 'mappings' set on SimpleUrlHandlerMapping
                64 beans defined in application context [org.codehaus.groovy.grails.commons.spri
                ng.GrailsWebApplicationContext;hashCode=6971605]
                Using MessageSource [org.springframework.context.support.ReloadableResourceBundl
                eMessageSource: basenames=[WEB-INF/grails-app/i18n/messages]]
                Unable to locate ApplicationEventMulticaster with name 'applicationEventMulticas
                ter': using default [org.springframework.context.event.SimpleApplicationEventMul
                ticaster@181d405]
                [copy] Copying 8 files to D:Tempgrails_appsdemoweb-appWEB-INFgrails-a
                ppviews
                [GrailsContextLoader] Grails application loaded.
                Initializing filter 'grailsWebRequest'
                Filter 'grailsWebRequest' configured successfully
                Initializing filter 'reloadFilter'
                Filter 'reloadFilter' configured successfully
                Initializing servlet 'grails'
                FrameworkServlet 'grails': initialization started
                Using context class [org.codehaus.groovy.grails.commons.spring.GrailsWebApplicat
                ionContext] for servlet 'grails'
                Using MultipartResolver [org.springframework.web.multipart.commons.CommonsMultip
                artResolver@1945696]
                Using LocaleResolver [org.springframework.web.servlet.i18n.CookieLocaleResolver@
                1c0bec5]
                Unable to locate ThemeResolver with name 'themeResolver': using default [org.spr
                ingframework.web.servlet.theme.FixedThemeResolver@1984161]
                No HandlerAdapters found in servlet 'grails': using default
                Unable to locate RequestToViewNameTranslator with name 'viewNameTranslator': usi
                ng default [org.springframework.web.servlet.view.DefaultRequestToViewNameTransla
                tor@688d6f]
                FrameworkServlet 'grails': initialization completed in 187 ms
                Servlet 'grails' configured successfully
                

     

    11,打開瀏覽器,輸入:http://localhost:8080/demo/login/login ,在Name處輸入demo,Password處輸入123456,點(diǎn)擊‘Login’,跳轉(zhuǎn)到成功頁(yè)面:

     

    Welcome demo
                demo : 123456
                

    查看本文來(lái)源

    posted on 2008-12-04 10:25 rogerfan 閱讀(291) 評(píng)論(0)  編輯  收藏 所屬分類: 【Groovy學(xué)習(xí)】
    主站蜘蛛池模板: 亚洲国产精品自在自线观看| 亚洲视频在线一区二区三区| 亚洲成a人无码亚洲成av无码| 久久国产免费福利永久| 亚洲网址在线观看| 免费无遮挡无码永久视频| 亚洲Av综合色区无码专区桃色| 成人无码区免费A∨直播| 中文字幕在线亚洲精品 | 国内自产拍自a免费毛片| 亚洲国产精品综合久久20| 免费毛片在线看片免费丝瓜视频 | 亚洲综合色丁香麻豆| 性短视频在线观看免费不卡流畅| 78成人精品电影在线播放日韩精品电影一区亚洲 | 国产福利免费在线观看| 亚洲AV无码成人精品区狼人影院| 日韩免费高清一级毛片在线| 亚洲AV无码专区亚洲AV桃| 五月婷婷亚洲综合| 99视频免费在线观看| 亚洲AV无码一区二区乱孑伦AS| 免费h视频在线观看| 亚洲avav天堂av在线不卡| 国产成人免费在线| 亚洲精品国产首次亮相| 成人亚洲综合天堂| 毛片免费在线观看| 性xxxx黑人与亚洲| 亚洲日韩在线观看免费视频| a级毛片视频免费观看| 91精品国产亚洲爽啪在线观看| 成人片黄网站A毛片免费| 免费人成在线观看播放a| 国产亚洲人成网站观看| 国产又黄又爽又猛免费app| 美女视频黄频a免费观看| 亚洲av鲁丝一区二区三区| 最近中文字幕mv免费高清视频7| 黄色一级毛片免费| 亚洲美女色在线欧洲美女|