由于Groovy动态语言的方便性,如果想在普通的web项目中集成有两个选择
使用基于groovy的Grails框架,非常的方便,适用于新建的项目
使用groovy本身集成,适用已有项目的维护(毕竟按照grails的约定升级一个项目对于大的项目还是有很多的工作量的)
下文把实际涉及的一个项目维护使用groovy的过程总结一下:
Web.xml配置:加入groovy响应的servlet
Groovy
groovy.servlet.GroovyServlet
Groovy
*.groovy
加入依赖库
groovy-all-1.7.10.jar groovy的所有依赖项
mysql-connector-java-5.0.7-bin.jar:mysql的驱动,数据库项目使用
例子
以下是使用sql和数据绑定等的简单实例
importgroovy.sql.Sql
if(!session)
{
session = request.getSession(true)
}
if(!session.Counter)
{
session.Counter =1
}
/*DROP TABLE IF EXISTS `demo`.`text_search`;
CREATE TABLE `demo`.`text_search` (
`id` bigint(20) NOT NULL auto_increment,
`version` bigint(20) NOT NULL,
`description` varchar(255) NOT NULL,
`username` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
*/
defdb = groovy.sql.Sql.newInstance('jdbc:mysql://localhost:3306/demo','root', '', 'com.mysql.jdbc.Driver')
def name = params.guess
defdesc = "descdd"
try
{
db.execute("insert into text_search (version,username, description) values(1, ${name} , ${desc})")
}catch(exception)
{
println '已经存在'
}
html.html{
head{
title("Groovy Demo")
}
body{
p("${request.remoteHost}::: ${session.Counter}")
h1 'Variables in the Binding:'
table(summary:'binding') {
tbody {
binding.variables.each{ key, value ->
tr {
tdkey.toString()
td(value ? value.toString() : 'null')
}
}
}
}
hr()
db.eachRow("select * from text_search"){
println it.id
printlnit.username
hr()
}
}
}
session.Counter= session.Counter + 1
相关的信息参考
名称
备注(Servlet中的对应)
实例用法
headers
Map类型
HTTP request headers
headers.host
params
Map类型
HTTP request parameters
params.myParam
session
ServletSession, can be null
session?.myParam
request
HttpServletRequest
request.remoteHost
response
HttpServletResponse
response.contentType=’text/xml’
context
ServletContext
context.myParam
application
ServletContext (同 context)
application.myParam
out
response.writer
延迟初始化,第一次使用时初始化
sout
response.outputStream
延迟初始化,第一次使用时初始化
html
Builderinitialized as new MarkupBuilder(out)
延迟初始化,第一次使用时初始化
TemplatingGroovlets
如果想处理更服务的页面,可以使用模板,具体参考文档
总结
对于java不是很熟的人员(如.net人员)维护已有的java web项目,使用groovy可以比较快速的跟进,同时由于groovy语法的简便性和集成性,对于普通的xml文件处理、数据处理等可以使用较少的简洁的代码实现
Groovy的sample比较系统统一,查找方便
和已有的java代码可以互相调用