Java Groovlets和普通的Web项目集成

由于Groovy动态语言的方便性,如果想在普通的web项目中集成有两个选择

使用基于groovy的Grails框架,非常的方便,适用于新建的项目

使用groovy本身集成,适用已有项目的维护(毕竟按照grails的约定升级一个项目对于大的项目还是有很多的工作量的)

下文把实际涉及的一个项目维护使用groovy的过程总结一下:

Web.xml配置:加入groovy响应的servlet

<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-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

使用http://localhost:8084/demo/hello.groovy?guess=demo访问即可写入数据,读取内容

相关的信息参考

名称

备注(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代码可以互相调用

上一篇:诺基亚与俄罗斯VimpelCom签署五年管理服务合同


下一篇:【我的Android进阶之旅】Android目录过长造成错误:Failed to crunch file abc_textfield_search_activated_mtrl_alpha.9.png