Skip to content

Instantly share code, notes, and snippets.

@Joxebus
Last active November 15, 2021 17:58
Show Gist options
  • Save Joxebus/d1f29137725e66a0fd43b3d25c704eb8 to your computer and use it in GitHub Desktop.
Save Joxebus/d1f29137725e66a0fd43b3d25c704eb8 to your computer and use it in GitHub Desktop.
Cómo crear un Groovy Servlet (Groovlet)
def method = request.method
if (!session) {
session = request.getSession(true)
}
if (!session.groovlet) { // Podemos tener variables guardadas en session
session.groovlet = 'Groovlets rock!'
}
html.html {
head {
title 'Groovlet info'
}
body {
{
h1 'General info'
ul {
li "Method: ${method}"
li "RequestURI: ${request.requestURI}"
li "Params: ${params}"
li "Body: ${request.reader?.text}"
li "session.groovlet: ${session.groovlet}"
li "application.version: ${context.version}"
}
h1 'Headers'
ul {
headers.each {
li "${it.key} = ${it.value}"
}
}
}
}
}
import groovy.json.*
class PersonService {
static List people = [] // Simular que tenemos una base de datos
void add(person) { people << person }
}
response.contentType = 'application/json' // La respuesta de este controlador será JSON
def method = request.method
def responseContent = [:] // Respuesta que se devolvera
PersonService personService = new PersonService()
jsonSlurper = new JsonSlurper()
if(headers['Content-Type'] != 'application/json') {
response.status = 415
responseContent = [errorMessage:"Invalid contentType"]
json responseContent
return
}
switch(method) {
case "POST":
def person = jsonSlurper.parseText(request.reader?.text)
personService.add(person)
response.status = 201
json person
break
case "GET":
response.status = 200
json personService.people
break
default:
response.status = 405
responseContent = [errorMessage:"Invalid operation"]
json responseContent
}
import org.mortbay.jetty.Server
import org.mortbay.jetty.servlet.*
import groovy.servlet.*
@Grab(group='org.mortbay.jetty', module='jetty-embedded', version='6.1.14')
def startJetty() {
def jetty = new Server(9090) // Puerto por el que correrá el servlet
def context = new Context(jetty, '/', Context.SESSIONS) // Permitir sesiones.
context.resourceBase = '.' // Buscar en el directorio actual por Groovy scripts.
context.addServlet(GroovyServlet, '*.groovy') // Todos los archivos que tengan terminación .groovy serán servidos.
context.setAttribute('version', '1.0') // Podemos asignar atributos al contexto
jetty.start()
}
println "Iniciando servidor Jetty, presiona Ctrl+C para detener la ejecución."
startJetty()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment