domingo, 21 de noviembre de 2010

Servlets

Los Servlets son las respuestas de la tecnología Java a la programación CGI. Son programas que se ejecutan en un servidor Web y construyen páginas Web. Construir páginas Web es útil por un número de razones:
  • La página Web está basada en datos envíados por el usuario. Por ejemplo, las páginas de resultados de los motores de búsqueda se generan de esta forma, y los programas que procesan pedidos desde sites de comercio electrónico también.
  • Los datos cambian frecuentemente. Por ejemplo, un informe sobre el tiempo o páginas de cabeceras de noticias podrían construir la página dinámicamente, quizás devolviendo una página previamente construida y luego actualizandola.
  • Las páginas Web que usan información desde bases de datos corporativas u otras fuentes. Por ejemplo, usaríamos esto para hacer una página Web en una tienda on-line que liste los precios actuales y el número de artículos en stock.

El proceso de ejecución de un servlet:

  1. El proceso comienza con la petición HTTP que llega en primer lugar al servidor web (ejemplo Apache).
  2. La petición se traslada al Contenedor de aplicaciones, en concreto a su motor del servicio Servlet/JSP (con su propia JVM).
  3. El motor encapsula la información de la petición en un objeto del tipo HttpServletRequest, además encapsula en un objeto HttpServletResponse el flujo de respuesta.
  4. El motor crea por cada petición un hilo, sobre el que se invoca a la función service() del servlet. En función del método de la petición (POST o GET ...), service() llamará al método correspondiente del servlet: doPost(), doGet() ..., pasándoles los objetos de HttpServletRequest y HttpServletResponse. En realidad hay más métodos HTTP (trace, etc.), pero GET y POST son los más habituales.
  5. Cada clase del tipo servlet, tiene una única instancia, sobre la que corren los diferentes hilos (peticiones). 

Escribiendo un Servlet simple
El ejemplo consiste en una forma HTML en la que existirá un campo de entrada, con los correspondientes botones Submit y Reset típicos de cualquier formulario de entrada de datos.
A oprimir sobre el botón Submit se producirá la ejecución del Servlet en el servidor, que procesará la información recibida, y mostrará como resultado una página HTML con el texto introducido con anterioridad.
Código HTML
<html>
<head>
<title>Ejemplo de un Servlet simple</title>
</head>
<body>
<form action=http://servidor:8080/servlet/ServletSimple method=POST>
<BR>
<BR>Introduzca un texto en el cuadro y oprima el botón "Aceptar"
<BR>
<input type=text name=TEXTO>
<p>
<input type=submit value=Aceptar><input type=reset value=Limpiar>
</form>
</body>
</html>

En el código HTML necesario para implementar el ejemplo destacan dos partes. En primer lugar la cabecera del form, que indica la acción a desencadenar en el servidor al pulsar el botón de Submit, y en segundo lugar la parte en que se define el form propiamente. El archivo que contiene la página HTML lo llamaremos ServletSmiple.htm.

Código del Servlet
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class ServletSimple extends HttpServlet
{
public void service(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
ServletOutputStream salida = res.getOutputStream();
res.setContentType("text/html");
String cadena = req.getParameter("TEXTO");
salida.println ("<p>Datos capturados : "+ cadena + "</p>");
}
}

Los datos enviados desde la forma son recibidos por el servlet que fue invocado por la misma. El código java del servlet es el siguiente:
En el programa destaca principalmente la utilización de los paquetes javax.servlet.* y javax.servlet.http.*, y la cláusula extends que define el programa como una extensión de HttpServlet. El archivo que contiene el Servlet lo llamaremos ServletSimple.java. Una vez que ha sido compilado, usando javac , almacenaremos el archivo .class resultante en el directorio /servlets dentro del directorio donde hayamos instalado el servidor de servlets.

Introduzca un texto en el cuadro y oprima el botón "Aceptar"












No hay comentarios:

Publicar un comentario