Servicio hola mundo

El presente manual muestra cómo crear un nuevo servicio que nos devuelve un mensaje “hola mundo” en texto plano o XML, en función de un parámetro.

La primera tarea consiste en modificar el fichero web.xml para añadir un nuevo Servlet:

<servlet>
        <servlet-name>holamundo-servlet</servlet-name>
        <servlet-class>org.fao.unredd.portal.HolaMundoServlet</servlet-class>
</servlet>
<servlet-mapping>
        <servlet-name>holamundo-servlet</servlet-name>
        <url-pattern>/holamundo</url-pattern>
</servlet-mapping>

El código anterior asocia el servlet holamundo-servlet con la URL /holamundo y lo implementa con la clase org.fao.unredd.portal.HolaMundoServlet. Ahora sólo es necesario implementar dicha clase:

package org.fao.unredd.portal;

import javax.servlet.http.HttpServlet;

public class HolaMundoServlet extends HttpServlet{

        private static final long serialVersionUID = 1L;



}

La única particularidad del código anterior es que el servlet debe extender a javax.servlet.http.HttpServlet.

El atributo estático serialVersionUID no tiene otro objeto que evitar un warning y es totalmente irrelevante para el portal.

Si hemos hecho todo correctamente será posible, previo reinicio del servidor, acceder a la URL http://localhost:8080/unredd-portal/holamundo y obtener un error 405: método no permitido. Nótese que el mensaje es distinto si accedemos a una URL inexistente, como http://localhost:8080/unredd-portal/holamundonoexiste, donde obtenemos un 404: no encontrado.

Esto quiere decir que el servlet está bien instalado. Sólo hace falta implementar el método GET, que es el que se está pidiendo el navegador:

package org.fao.unredd.portal;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HolaMundoServlet extends HttpServlet{

        private static final long serialVersionUID = 1L;

        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp)
                        throws ServletException, IOException {
        }

}

Ahora, el servidor debe devolver una página en blanco, pero no debe dar un error. Se llega así al punto en el que leeremos el parámetro y en función de este devolveremos un XML o texto plano:

package org.fao.unredd.portal;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HolaMundoServlet extends HttpServlet {

        private static final long serialVersionUID = 1L;

        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp)
                        throws ServletException, IOException {
                String outputformat = req.getParameter("outputformat");
                resp.setCharacterEncoding("utf-8");
                if ("xml".equals(outputformat)) {
                        resp.setContentType("application/xml");
                        resp.getWriter().write("<response>hola mundo</response>");
                } else {
                        resp.setContentType("text/plain");
                        resp.getWriter().write("hola mundo");
                }
        }

}