Estructura de un servlet (1)

Todo servlet implementa la interfaz Servletabstración principal para manipular este tipo de objetos, localizada en la API servlet. Un servlet no es más que un objeto de alguna de las clases que implementa esta interfaz. Un breve resumen podría ser el siguiente:

Object→javax.servlet.GenericServlet →javax.servlet.http.HttpServlet→MiServlet

Voy a centrarme en el caso de los servlets que responden a peticiones realizadas desde una página html, porque son los más comunes y utilizados; esto es, servlets que son objetos de una clase derivada de HttpServlet.

El tipo de servlet http más básico, puede ser de la siguiente forma: un objeto de una clase derivada de HttpServlet, que encapsula los métodos init, para iniciar el servlet, y doPost y/o doGet para responder a las peticiones de los clientes.

El código Java correspondiente:

package com.gorka.servlets;
import javax.servlet.*;

import javax.servlet.http.*;

public class MiServlet extends HttpServlet

{
      public void init(ServletConfif config) throws ServletException

{
                 super.init(config);

}
// METODO POST PARA RESPONDER A UNA PETICION POST

public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException

{

// ……

}
// METODO GET PARA RESPONDER A UNA PETICION GET public void doGet(HttpServletRequest req, HttpServletResponse res) {

// ….

}
public void destroy() {

   // Liberar recursos

}

}

Cuando un sevlet de este tipo acepta una llamada de un cliente, después de ejecutarse el método init, se ejecutará el método doPost o doGet, dependiendo del método POST o GET utilizado por el formulario HTML, ejecutado por el cliente. Cualquiera de estos métodos recibe dos objetos:

  • Un HttpServletRequest que encapsula los datos enviados por el cliente al servidor. Para acceder a los datos del cliente ese objeto proporciona métodos como getParameter, que retorna el valor del parámetro especificado, getParameterValues, que retorna una matriz de tipo String con todos los valores que el parámetro tiene, getParameterNames, que retorna una enumeración (objeto Enumeration) de objetos String con los nombres de los parámetros y sus valores, etc.

Para formularios html que utilizan el método GET para enviar datos al servidor (se invoca al método doGet del servlet), el método getQueryString retorna un String con los datos enviados por el cliente; ahora bien, nosotros mismos tendremos que descomponer dicha cadena para obtener los parámetros y sus valores.

Para formularios que utilizan el método POST para enviar datos al servidor (se invoca al método doPost del servlet), si lo que se espera es texto, podemos utilizar el método getReader para recuperarlo, y si lo que se espera son datos binarios, el método getInputStream nos permitirá recuperarlos

  • Un HttpServletResponse que encapsula los datos enviados por el servidor (por el servlet) al cliente. Este objeto proporciona dos formas de retornar los datos: una, utilizando el método getWriter, y otra utilizando el método getOutputStream. Utilizaremos el método getWriter para devolver cadenas de texto y getOutputStream para devolver datos binarios.

Cuando un formulario html utiliza el método POST para enviar datos al servidor, a diferencia de GET, resulta más fácil recuperalos, porque permite diferenciar entre cadenas de texto y datos binarios

Como esta entrada ya es bastante extensa, la explicación de la estructura de servlets continúa en la siguiente

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s