日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Day 6:在 Java 虚拟机上使用 Grails 进行快速 Web 开发

發(fā)布時間:2025/3/21 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Day 6:在 Java 虚拟机上使用 Grails 进行快速 Web 开发 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在“30天學(xué)習(xí)30種新技術(shù)”的第六天,我決定去學(xué)習(xí)一個 web 開發(fā)框架 : Grails。

Grails 是一個基于 Groovy 和 Java 的開源 Web 框架。它是 Java 虛擬機(JVM)上順應(yīng) Rails、Django 等流行 Web 框架而生的,伴隨著標(biāo)準(zhǔn)的 Jetty/Tomcat 服務(wù)器,Grails 能幫助開發(fā)者進(jìn)行快速的應(yīng)用開發(fā)。在這篇文章中,我們會描述如何用 Grails 的 Eclipse 插件開發(fā)一個簡單的 Web 應(yīng)用。

為什么我們選擇 Grails?
這是考慮到兩個原因:
1. 快速的 Web 開發(fā):它在 Java 虛擬機和掌握的 Java 知識下,也能達(dá)到像 Rails 或 Django 那樣的快速開發(fā)的目標(biāo)。
2. 成熟的技術(shù):Grails 是基于 Spring 和 Hibernate 打造的。它可以看作是在這些技術(shù)上加了語法糖(Syntactic Sugar)。

前期準(zhǔn)備

  • 一些基本的 Java 知識是需要的。
    2.在你的操作系統(tǒng)上安裝最新版本的 JDK,你可以安裝 OpenJDK 或者 Oracle JDK 7。OpenShift 支持 OpenJDK 6 和 7.
  • 從 Eclipse 官網(wǎng)下載和你操作系統(tǒng)對應(yīng)的最新版 Eclipse 安裝包。在這篇文章寫的時候,最新版的 Eclipse 包叫 Kepler.
  • 安裝 Eclipse 非常容易。只需要解壓你下載的安裝包就可以了。在 linux 或者 Mac 系統(tǒng)上,打開終端,然后輸入:

    $ tar -xzvf eclipse-jee-kepler-R-*.tar.gz

    在 Wdinows 系統(tǒng)上,你可以用 winzip 或者 7-zip 或者其它解壓軟件來解壓。解壓之后,在文件夾里面應(yīng)該能能看到一個名為 eclipse 的文件夾。你可以按自己意愿為運行程序文件創(chuàng)建一個快捷方式。

    安裝 Grails:
    請參閱 Grails 的開始使用指引.

    現(xiàn)在這篇文章使用的 Grails 版本為 2.3.1。 在命令行下運行 grails -version 能查看你當(dāng)前的 Grails 版本:

    $ grails -version
    Grails version: 2.3.1

    當(dāng)我第一次運行查看版本的命令時,我得到是以下的報錯:

    $ grails -version
    Exception in thread "main" java.lang.NoClassDefFoundError:
    org/codehaus/groovy/grails/cli/support/GrailsStarter

    這個錯誤的原因是我這個機子上 Grails 的版本太老了。如果用的是 mac,轉(zhuǎn)到 /usr/local/bin 目錄下,你或者找到另一個安裝文件。我以前可能不記得我安裝過 grails 了,所以我先把舊版卸載了:

    brew uninstall grails

    第一步:安裝 Eclipse Grails 插件

    當(dāng)你解壓了和 Java EE 對應(yīng)的 Eclipse Kepler IDE 之后,打開 Eclipse,然后從導(dǎo)航轉(zhuǎn)到 項目的工作空間(Project Workspace)。打開菜單的 Help > Eclipse Marketplace,然后搜索 Grails。安裝"Eclipse Kepler(4.3)的 Groovy/Grails 工具套件"。插件安裝之后重啟 Eclipse。

    第二步:創(chuàng)建一個新的 Grails 項目

    在這篇文章中,我們的目標(biāo)是編寫一個簡單的鏈接分享應(yīng)用。用戶可以首先注冊應(yīng)用,然后自己提交鏈接。

    創(chuàng)建一個新項目:文件 > 新建 > Grails 項目,然后完善項目信息。這個應(yīng)用的名字是 Linkbin。

    當(dāng)我們第一次創(chuàng)建 Grails 項目時,我們必須配置 Grails 的安裝環(huán)境。點開"Grails 安裝配置(Configure Grails Installations)",然后增加一個新的 Grails 安裝。

    像在下圖那樣,我們可以自己為項目設(shè)置一個不同的存放路徑。然后完成后,點擊"完成(Finish)"按鈕。

    Eclipse 會問我們是否需要打開"Grails 視角(Grails perspective)",選擇"是"。項目就會被創(chuàng)建,然后被導(dǎo)入到 Eclipse 里面。

    第三步:創(chuàng)建一個領(lǐng)域模塊(Domain model)

    應(yīng)用的領(lǐng)域模塊非常簡單,我們需要兩個條目:User 和 Story。
    User 條目有兩個屬性:email 和 fullName。我們會為 email 屬性增加 not blank、email、unique 限制。email 限制能把這個屬性的內(nèi)容檢測限定為 email 格式。fullName 屬性有 not blank和size兩個限制。其中,size 的量使用 groovy 的 range 來限定長度集合、數(shù)字或者內(nèi)容長度等的大小。為了創(chuàng)建一個新的 domain 類,右擊 domain,然后選擇 New > Domain Class.

    這會創(chuàng)建一個 User 領(lǐng)域類(domain class)。用下面的代碼代替 User 領(lǐng)域類的代碼:

    package linkbinclass User {String emailString fullNamestatic constraints = {email unique:true , blank : false , email:truefullName size:5..100 , blank : false} }

    Story 條目也有三個屬性:link,description,submittedOn. link 屬性對應(yīng)用戶所提交的網(wǎng)址,description 和 submittedOn 是所提交網(wǎng)址的額外文字內(nèi)容和提交日期。我們會為 link 和 description 屬性加上 not blank(非空)限制。同樣的,link 屬性也會被加上 unique 和 url 限制。

    package linkbinclass Story {String linkString descriptionDate submittedOnstatic constraints = {link url : true , blank : false ,unique : true description size : 10..1000 , blank : false } }

    現(xiàn)在,我們連接 User 和 Story 起來。 一個用戶可以提交多個故事,每個故事都都有所屬的用戶。它們的關(guān)系如下所示:

    package linkbin class User {String emailString fullNamestatic hasMany = [stories : Story]static constraints = {email unique:true , blank : false , email:truefullName size:5..100 , blank : false}static mapping = {table 'users'} }

    一個故事屬于一個用戶:

    package linkbin class Story {String linkString descriptionDate submittedOn static belongsTo = [user : User]static constraints = {link url : true , blank : false ,unique : true description size : 10..1000 , blank : false }static mapping = {table 'stories'} }

    第四步:從領(lǐng)域模塊搭建控制器和視圖

    在 Grails 上,要為領(lǐng)域模塊產(chǎn)生控制器(controller)和視圖(view)非常簡單。為了為 User 的領(lǐng)域類產(chǎn)生控制器和視圖,打開"Grails Command Wizard".

    它會在能看見所有 Grails 命令的地方打開命令向?qū)?wizard)。我們會使用 generate-all 命令去產(chǎn)生控制器和視圖。

    下一步它會詢問領(lǐng)域類的名字。輸入 linkbin.User 然后,點擊"完成"。

    類似的,為 Story 領(lǐng)域類產(chǎn)生控制器和視圖。

    那個 Generate-all 命令會為這兩個條目生成 CRUD 控制器和視圖。

    第五步:運行程序

    每個 Grails 項目都自帶連接了一個 tomcat 服務(wù)器。為了在本地上運行程序,右擊項目,然后選擇"運行 grails 應(yīng)用"(Run as Grails app)。

    這會啟動內(nèi)嵌的 tomcat 程序容器,然后我們能在控制臺看到以下的日志:

    | Loading Grails 2.3.1
    | Configuring classpath.
    | Environment set to development.....
    | Packaging Grails application.....
    | Running Grails application
    | Server running. Browse to http://localhost:8080/linkbin

    配置到云上

    Grails 應(yīng)用會被打包成 war 格式的文件。OpenShift 是一個開源的,公開的,可擴展的服務(wù)平臺。如果你是一個 Java,Python,Node.js, Ruby 或者 php 開發(fā)者,你應(yīng)該留意下 OpenShift 。在 OpenShift,你可以免費把你的程序部署字在上面。

    在我們部署應(yīng)用到 OpenShift 之前,我們要做先做這些事情:
    1. 注冊一個 OpenShift 賬戶。這是完全免費的,而且紅帽(Red Hat)會給每個用戶三個免費的 Gears,在 Gears 上你可以運行你的程序。在這篇文章寫的時候,OpenShift 會為每個用戶分配 1.5GB 的內(nèi)存和 3GB 的硬盤空間。

    2.在本機上,安裝 rhc 客戶端工具。rhc 是一個 ruby gem,所以你需要機子上安裝好 ruby 1.8.7 及以上的 ruby。要安裝 rhc,輸入:

    sudo gem install rhc

    更新 rhc 到最新版本,執(zhí)行:

    sudo gem updatge rhc

    如果需要閱讀額外的安裝 rhc 命令行工具時的幫助文件,可以瀏覽:https://openshift.redhat.com/community/developers/rhc-client-tools-install

    3.使用 rhc setup 命令設(shè)置好 OpenShift 賬戶,這個命令會為你創(chuàng)建一個命名空間,然后上傳你的 ssh keys 到 OpenShift 服務(wù)器上。

    OpenShift 也有一個 Eclipse 插件,但這篇文章中,我會使用 rhc 命令行工具。

    在設(shè)置好之后,運行下面命令創(chuàng)建 OpenShift 應(yīng)用:

    $ rhc create-app linkbin tomcat-7 postgresql-9.2

    它會為我們創(chuàng)建一個應(yīng)用容器,叫做 Gear,會自動設(shè)置好需要的 SELinux/cgroup 配置。OpenShift 也會為我們建立一個私密的 git 倉庫,然后可克隆這個倉庫到本地系統(tǒng)上。最后,OpenShift 還會部署一個連接外面的 DNS。部署的應(yīng)用可以通過鏈接: http://linkbin-domain-name.rhcloud.com/ 來訪問。把領(lǐng)域換成自己的 OpenShit 領(lǐng)域(有時候叫 命令空間)

    由于我們要部署 war 文件,我們必須刪除由 OpenShift 默認(rèn)產(chǎn)生的資源文件。

    $ git rm -rf src/ pom.xml
    $ git commit -am "deleted default source code"

    打開 Eclipse,用 postgresql 改變數(shù)據(jù)來源的配置。Grails 在 conf/Datasource.groovy 文件中維護(hù)所有的數(shù)據(jù)庫配置。更新生產(chǎn)環(huán)境的配置以使用 PostgreSQL.

    production {dataSource {dbCreate = "update"driverClassName = "org.postgresql.Driver"dialect = org.hibernate.dialect.PostgreSQLDialect uri = new URI(System.env.OPENSHIFT_POSTGRESQL_DB_URL)url = "jdbc:postgresql://"+uri.host+uri.path+"/"+System.env.OPENSHIFT_APP_NAMEusername = System.env.OPENSHIFT_POSTGRESQL_DB_USERNAMEpassword = System.env.OPENSHIFT_POSTGRESQL_DB_PASSWORD} }

    現(xiàn)在我們需要把 grails 應(yīng)用打包成 war 文件。我們會使用 grails 的 war 命令來完成這個。打開 "Grails Command Wizard", 使用 war 命令。它會詢問一個名字作為 war 文件的名字,我們把文件設(shè)成:target/ROOT.war。 她會在目標(biāo)文件中生出 ROOT.war 文件。復(fù)制 ROOT.war 到 OpenShift linkbin 應(yīng)用的 webapps 文件夾中。

    現(xiàn)在,把 war 文件也加入到你的 git 倉庫中,然后 push 改變的內(nèi)容。

    $ git add . $ git commit -am "linkbin app deployed to cloud" $ git push

    當(dāng)代碼成功推送(push),而 war 也成功部署之后,我們可以訪問:http://linkbin-{domain-name}.rhcloud.com 來看看程序運行的情況。

    作為一個教訓(xùn)性質(zhì)的 demo,項目的最終效果你可以在這里看到:http://linkbin-shekhargulati.rhcloud.com .

    這就是今天的內(nèi)容了。我希望這篇文章能幫到閱讀這個系列的開發(fā)者們。隨時歡迎反饋信息、

    接下來

    • 在線登錄 OpenShift 帳號
    • 通過評估 OpenShift 企業(yè)版獲得自己的私有 PaaS(Platform As a Service)。
    • 需要幫助? 去 OpenShift Community 論壇問問題。
    • 在 OpenShift Developer Spotlight 中展示你的酷應(yīng)用。今天就開始瀏覽下OpenShift 應(yīng)用展覽

    原文:Day 6: Rapid Web Development on the JVM with Grails
    翻譯:Segmentfault

    總結(jié)

    以上是生活随笔為你收集整理的Day 6:在 Java 虚拟机上使用 Grails 进行快速 Web 开发的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。