JAVA—咖啡館

          ——歡迎訪問rogerfan的博客,常來《JAVA——咖啡館》坐坐,喝杯濃香的咖啡,彼此探討一下JAVA技術,交流工作經驗,分享JAVA帶來的快樂!本網站部分轉載文章,如果有版權問題請與我聯系。

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            447 Posts :: 145 Stories :: 368 Comments :: 0 Trackbacks

          Groovy是什么?

            Groovy是一種語言,其語法類似于Java,但比Java更簡單。它通常被視為腳本/靈活/動態的語言,但是我不喜歡這類形容詞,因為我認為它們只會令人困惑。如果說Java是一位明智的中年男子,那么Groovy就是他十幾歲的兒子。Groovy具有父親的許多特點,但是更為狂野且更為有趣。他們也可以很好地合作。

            Groovy的規則比Java少得多。例如,要在Java中獲得標準的"Hello World"輸出,您需要編寫一個類、一個具有合適參數的主方法,等等。但是在Groovy中,如果不想編寫所有樣板代碼,您可以拋開類定義和主方法,僅編寫一行代碼即可打印出"Hello World"。

            以下是打印Hello World的文件 Hello.groovy 的內容:

          println "Hello World" 

            Java平臺僅關心使字節碼得到執行。同樣,此平臺不強迫您使用Java語言。只要提供了字節碼,工作就會進行。Groovy代碼會被編譯為字節碼,而對于Java平臺來說,字節碼是從Java代碼還是Groovy代碼生成的并沒有任何區別。

            以下是一個Groovy例子,它顯示了Groovy對清單、映射和范圍的內置支持,并證明了Groovy的簡單性及其利用Java的強大功能的能力:

          // Print Date
          def mydate = new java.util.Date()
          println mydate
          //Iterate through a map
          def numbersMAP = ['1':'ONE', '2':'TWO']
          for (entry in numbersMAP) {
          println "${entry.key} = ${entry.value}"
          }
          //Introducing the range
          def range = 'a'..'d'
          //Lists
          def numberlist = [1, 2, 3, 4, 5, 6, 7, 8]
          println numberlist;
          println "Maximum value: ${numberlist.max()}"
          

            請注意以上代碼直接使用java.util.Date ,對收集的內置支持減少了使用清單、映射和范圍所需的代碼。還有許多其他有趣的Groovy特性,例如閉包和簡化的XML處理。您可以在groovy.codehaus.org上找到詳細清單。

            現在讓我們來討論如何將Groovy用于Web開發。

          使用Groovy進行Web開發

            大多數Java EE教程都從一個基本servlet例子開始。對于Groovy Web開發來說,您將從groovlet(在groovy中servlet的對應概念)開始。如果您在servlet中擺脫了類和doXX() 方法聲明,那么剩下的內容就與groovlet很像了。以下是一個名為 Login.groovy 的groovlet例子,您需要將它置于Web應用程序的最高級目錄:

          def username= request.getParameter("username")
          def password= request.getParameter("password")
          if (username == "java" && password == "developer") {
          response.sendRedirect("home.jsp")
          session = request.getSession(true);
          session.setAttribute("name", username)
          }
          else {
          println """
          <h1>Login Invalid</h1>
          <p>Your IP has been logged > ${request.remoteHost}</p>
          """
          paramMap = request.getParameterMap()
          println "<p>You Submitted:</p>"
          for (entry in paramMap) {
          println "${entry.key} = ${entry.value}<br/>"
          }
          }
          

            您可以僅創建一個簡單的HTML表單,然后將此表單的行為屬性發送到 action="Login.groovy"。然后將以下標簽添加到web.xml:

          <servlet>
          <servlet-name>Groovy</servlet-name>
          <servlet-class>groovy.servlet.GroovyServlet</servlet-class>
          </servlet>
          <servlet-mapping>
          <servlet-name>Groovy</servlet-name>
          <url-pattern>*.groovy</url-pattern>
          </servlet-mapping>
          

            現在只需將要求的Groovy jar 文件添加到WEB-INF/lib 目錄,您的Groovy Web應用程序就準備好在任意Java EE應用服務器上運行了。

            您應該已經注意到代碼中沒有分號,而且使用了隱式變量如request和response。其他隱式變量有context、application、session、out、sout和 html。

            GSP是JSP在groovy中的對應概念。您無需使用println生成HTML;只需將Groovy代碼嵌入HTML頁面。本文中的例子將在提到Grails時使用GSP。

            請注意,因為所有代碼最終都要轉換為字節碼,所以groovlet和GSP能夠與servlet和JSP輕松協作。因此您無需區分groovlet和GSP或者servlet和JSP。

            現在讓我們討論前途無量的Grails框架。如果成功的話,Grails能夠極大地改變開發Java Web應用程序的方式。Ruby on Rails對Ruby的影響,Grails也能夠對Groovy實現。

          相關網站推薦:
          專題:Groovy開發技術_51CTO.COM
          官方網站:groovy.codehaus.org

          posted on 2008-05-22 11:09 rogerfan 閱讀(669) 評論(0)  編輯  收藏 所屬分類: 【Groovy學習】
          主站蜘蛛池模板: 普宁市| 鸡东县| 丁青县| 云阳县| 渝北区| 石首市| 盈江县| 寿宁县| 赤壁市| 绿春县| 通辽市| 丰镇市| 开封县| 钟祥市| 赤壁市| 德惠市| 都昌县| 灵丘县| 琼结县| 徐闻县| 许昌市| 江山市| 商都县| 兴仁县| 邹城市| 鹿泉市| 东源县| 兰西县| 沙田区| 龙门县| 伊通| 宝应县| 林周县| 汉沽区| 静安区| 肇东市| 揭阳市| 灵川县| 遂宁市| 自治县| 德格县|