Les groovlets sont des servlets Java développées en langage Groovy ; nul besoin d'étendre une classe telle que javax.servlet.http.HttpServlet !
Générer une page HTML avec une groovlet peut être aussi simple qu'écrire une chaîne de caractères avec la méthode println :
<html>
<head>
<title>Test</title>
</head>
<body>
<h1>Salut tout le monde !</h1>
</body>
</html>
"""
Pour être hébergées au sein d'un conteneur d'applications web comme Apache Tomcat, les groovlets ont besoin de la servlet groovy.servlet.GroovyServlet qui est capable de compiler les fichiers .groovy à l'exécution et de charger les fichiers .class correspondants.
Ainsi, dans une application web J2EE, le fichier de configuration web.xml contiendra les éléments suivants :
<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>
Il faut également inclure dans le répertoire WEB-INF/lib de l'application web, les librairies Groovy adéquates ; par simplification, il suffira d'y ajouter la librairie contenant toutes celles dont Groovy a besoin : dans le cas de la version 1.0 de Groovy, c'est le fichier groovy-all-1.0.jar venant dans la distribution de Groovy.
Supposons que nous ayons créé une application web de contexte TestGroovlets ; le fichier test.groovy (placé dans le répertoire racine des fichiers HTML) est exécuté en tant que servlet, si l'on pointe un navigateur Internet sur l'URL http://nom_hote/TestGroovlets/test.groovy.
Ce fichier test.groovy peut être :
session = request.getSession(true);
}
if (session.counter == null) {
session.counter = 1
}
html.html { // html est implicitement lié à new MarkupBuilder(out)
head {
title("TestGroovlets")
}
body {
h1("TestGroovlets")
p("Salut ${request.remoteHost} (${session.counter} fois !), le ${new Date()}")
p("Version de la JVM : " + System.getProperty("java.version"))
p("Conteneur web : ${application.getServerInfo()}")
}
}
session.counter = session.counter + 1
Invoquée, cette groovlet affiche dans un navigateur Internet :
TestGroovlets
Salut 127.0.0.1 (21 fois !), le Tue May 22 22:22:26 CEST 2007
Version de la JVM : 1.5.0_06
Conteneur web : Apache Tomcat/5.5.16
Nous ferons deux remarques sur le code de la groovlet.
Premièrement, c'est l'utilisation de variables implicites telles que session, request ou html.
Les Groovlets en définissent un certain nombre qui correspondent à des objets de l'API des servlets (voir la page Groovlets du site officiel de Groovy).
Deuxièmement, on a eu recours au builder de type MarkupBuilder pour construire la page résultante.