走进Groovy (一)

一直很喜欢脚本语言,可是一直在不大的公司工做,用得一直是“高大上”的JAVA语言,在真正的项目中,没什么机会用到脚本语言。这两年,又断断续续的用了2年的Ruby,再回头继续用JAVA,说实话,真感受JAVA语法的啰嗦——哪怕像C#那样多些语法糖也好。html

虽然在JVM上也有像JRuby,scala那样的动态语言,不知道怎么的,就是不想去用,直到最近心血来潮看了一下Groovy,忽然被吸引住了,缘由,一开始估计是被他的全兼容JAVA语法所吸引,再慢慢稍微了解一下,也被他相似Ruby的语法,动态特性,与JAVA的互相调用,Spring支持等吸引,终于决定好好的看一下Groovy,同时要是有机会,也在公司的小项目中尝试一下。java

在写这篇文章的时候,我也只是个看了几页文档的Groovy新手,因此接下来的文章,你们当个学习笔记看就好。git

一. 开发环境

所谓“工欲善其事,必先利其器”,一个好的开发环境,对于咱们写代码,但是大大有益。个人开发环境是Eclipse 4.5(Mars),配合Groovy Eclipse插件,Groovy为2.4.3。下面先讲一下插件的安装。github

在Groovy的官方网站中,文档页中有专门讲到开发工具的,其中一项就是讲解对各IDE的支持web

Groovy官方文档apache

IDE支持说明api

image我用的就是Groovy Eclipse Plugin,点击打开项目主页: Groovy Eclipse网络

在主页上给出了安装方式的WIKI,能够根据本身的版本,来安装须要的插件。须要说明一下的是,因为有些运营商(好比电信)限制了出口带宽,因此有些同窗安装该插件的速度(<5K),会让人无比的蛋疼及抓狂,而且颇有可能在你等待了半小时后,告诉你安装失败了(暂时来讲,移动网络访问速度快得多,早晨访问速度比其余时间快得多)。一句话,你要是有耐心把插件安装成功了,那么相信学习Groovy已经彻底不成问题了。app

 

二. 创建项目

学习新语言天然要写代码,个人目的是用上Groovy的特性,写一个简单的Blog,因此免得之后再创建新的工程,索性一开始就创建一个WEB项目了,初始语言学习阶段,就在某个package中创建一个类,慢慢试就成了。项目创建基于Maven,建于Maven还不了解的同窗,能够自学一下。至于为何学习Groovy了,还不用Gradle,很简单,暂时不会,之后再学,并且Maven有OSCHINA的源,速度比较快。eclipse

1.创建项目

建立项目,选择Maven Project,进去后钩上“Create a simple project”选项,创建一个简单Maven工程,Group Id和Artifact Id根据本身状况随意,Packaging选择war,用以生成网站结构。

image

 image

 

创建完成后,项目必然会出错,由于一个WEB项目,没有web.xml文件,这个比较好解决,在webapp目录下,新建WEB-INF文件夹,再在WEB-INF下新建web.xml便可,至于web.xml的内容,随便去哪一个WEB工程复制一下吧。

2. 编写Groovy代码

在源文件夹下,新建一个包名,而后右键点击包,”New”-> “Other”,在弹出窗口中输入“Groovy”,排除掉其余项目,选择Groovy Class,便可创建一个Groovy类,若是是第一次在这个项目中创建Groovy类,会在上访提示没有Groovy支持,会在创建好类后,自动加入Groovy的DSL支持。

固然,创建好类后,Eclipse又报错了,其实这是理所固然的,由于没有Groovy包的支持(我碰到过,在建立类的时候,Eclipse会自动引入Groovy包,若是你的环境自动帮你作这一步了,那就不用接下来的操做了)。

打开pom.xml,加入groovy-all包,由于这是一个网站,随便把JAVA-EE也加上了,个人pom.xml看起来是这样的。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.fly84</groupId>
    <artifactId>self-rock</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <name>SelfRock</name>
    <description>SelfRock</description>

    <dependencies>
        <!-- groovy支持 -->
        <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy-all</artifactId>
            <version>2.4.3</version>
        </dependency>

        <!-- JavaEE支持 -->
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>7.0</version>
        </dependency>
    </dependencies>
</project>
 

保存后,Maven自动下载包,讨厌的红叉叉就不见了:)

3. 代码跑起来

在刚才创建的类中,新建一个main函数,和JAVA的不同,这个可清爽多了

static main(args) {
    println 'Groovy,我来了'
}

右键,Run As,选择Groovy Script,怎么样,结果出来了吧。

接下来试试引用JAVA文件,仍是在这个包下面,创建一个Java类,就叫Food吧,内容以下:

public class Food {
    public void eat(){
        System.out.println("好吃");
    }
}

而后改写一下刚才的Groovy类

static main(args) {
    def food = new Food()
    food.eat()
}

结果成功的在Groovy中引用了Java类,相像一下,是否是之后在项目中,喜欢写JAVA就写JAVA,喜欢写GROOVY就写GROOVY呢?

一样的,创建一个Groovy类后,在JAVA中调用也是彻底的没有问题。

 

4. 网站跑起来

一开始我就说了,学习的目标,是用Groovy编写一个简单的Blog,因此这是一个WEB程序,可是如今尚未任何WEB方面的功能。在Groovy中,增长了gsp和groovy servlet,其实也就是jsp和servlet的改进版,就顺便加到项目中吧。

打开web.xml,加上以下配置,增长对gsp和groovy servlet的支持

<servlet>
    <servlet-name>GroovyServlet</servlet-name>
    <servlet-class>groovy.servlet.GroovyServlet</servlet-class>
</servlet>
<servlet>
    <servlet-name>GroovyTemplate</servlet-name>
    <servlet-class>groovy.servlet.TemplateServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>GroovyServlet</servlet-name>
    <url-pattern>*.groovy</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>GroovyTemplate</servlet-name>
    <url-pattern>*.gsp</url-pattern>
</servlet-mapping>

在web.app下创建一个index.gsp试试,里面随便写点啥,好比

<html>
<head>
    <title>groovy</title>
</head>
<body>

<% for (c in 'GROOVY'){ %>
 <h1> <%=c%> </h1>   
<% } %>

</body>
</html>

有可能会碰到找不到groovy.servlet.TemplateServlet的异常,这是由于项目没有把Maven引用的包复制到WEB-INF/lib文件夹下面,解决方式,能够在项目上右键,选择项目属性,选择Deployment Assembly,点击Add按钮,选择Java Build Path Entries,而后选择Maven Dependencies,会自动把Maven引用的包复制到WEB-INF/lib目录下

相关文章
相关标签/搜索