Groovy是专门为java设计的脚本语言,可以和java无缝的结合,为java带来了脚本语言的能力。作为一个脚本语言,groovy有丰富的特性,比如动态类型,闭包等。如果能掌握groovy,并用其来开发,可以大大提高java程序员的生产力。Grails是用groovy写的一个类似于rails的web框架,实际上就是spring+hibernate+groovy。我想用groovy来写写页面,但是又不想用grails这种笨重的东西,正好groovy自带的了两个类可以完成这个任务,就是groovy.servlet包下的 GroovyServlet 和 TemplateServlet类。
下载安装好groovy后,在安装目录的embeddabe目录下复制groovy-all-1.6.3.jar到war/WEB-INF/lib/下。然后,在web.xml里添加如下代码:
<servlet>
<servlet-name>groovlet</servlet-name>
<servlet-class>groovy.servlet.GroovyServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>gsp</servlet-name>
<servlet-class>com.liba.link.groovy.MyTemplateServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>groovlet</servlet-name>
<url-pattern>*.groovy</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>gsp</servlet-name>
<url-pattern>*.gsp</url-pattern>
</servlet-mapping>
这样,就可以在web目录下用groovy写以.groovy或.gsp结尾的页面代码了。GroovyServlet就是一个普通的servlet,只不过,它会编译执行指定url对应的.groovy文件,来产生html。这和直接用groovy写servlet的区别是,GroovyServlet为你做了一些特殊变量的绑定,在.groovy里可以通过request, out, application, session等访问HttpServletRequest, HttpServletResponse, ServletContext和Session。而System.out被重定向客户端的输出,因而,可以这样写html了:
out.print("<h1>${request.getParameter('username')}</h1>")
GroovyServlet还绑定了一个MarkupBuilder,名称为html,所以可以用MarkupBuilder快速的生成简单的页面,比如:
html.div {
table {
tr {
td {
span(style:"color:red", "Hello world")
}
}
}
}
如果页面里有大量的html,只有少量的html代码,那么用groovyServlet的方式来写,还是会有些麻烦,这时候使用TemplateServlet会好一些。像上面的那样的配置,只要在web目录里写上以.gsp结尾的文件就可以了。在html代码里像jsp那样用 <% %>来插入groovy代码,比如:
TemplateServlet和GroovyServlet一样,也把常用的对象绑定成里脚本里的变量。
也许有人会问,这比直接用java和jsp有什么好的呢?没有多大好处,就是可以使用groovy代替java而已,但是我觉得就这一点就是很大的进步了。
Trackbacks /
Pingbacks