martes, 19 de octubre de 2010

Ejemplos de Servlet

Para comenzar, escribiremos un ejemplo sencillo que nos va a servir para entender la forma básica de un servlet. 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:

Para este primer ejemplo, el código necesario fue mínimo, lo cual es una prueba de la enorme potencia y simplicidad que se deriva de la utilización de los Servlets.

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.

Descripción del código

Dentro del código java se observa el método principal, el método service, el cual es implementado hasta por el servlet más simple. Este método se encarga de procesar la petición del cliente, y utiliza dos parámetros, uno de petición y otro de respuesta:

En el caso particular del protocolo http se utilizan interfaces de HttpServletRequest y HttpServletResponse respectivamente. Estos parámetros encapsulan los datos que son mandados tanto desde el cliente, como desde el servidor. De hecho, normalmente se utilizan métodos de entrada para recuperar datos desde el cliente, y métodos de salida para responder. Nosotros utilizamos ServletOutputSteram para responder al cliente.

Para recuperar los datos que nos manda el cliente, utilizamos el método getParameter. Finalmente, utilizando el stream de salida le mandamos la respuesta al cliente.

Realmente, el programa es muy sencillo, pero la funcionalidad muy alta.

Ejecución de los servlets

Como se muestra en la forma html el servlet es invocado como la acción a llevara cabo. El servlet es habilitado por la utilería servletrunner que es un programa encargado de probar y ejecutar los servlets.

El servletrunner habilita un puerto por defecto, el 8080, en el servidor de web que se esté utilizando para ejecutar al servlet. Para invocar entonces al servlet debemos emplear el url con la siguiente forma: http://nombre_servidor:8080/servlet/nombre_servlet

nombre_servidor Dirección del host que alberga al servidor de web

:8080 Puerto asignado por defecto por el servletrunner

/servlet Directorio virtual donde residirán los servlets

nombre_servlet Nombre del programa que identifica al servlet



Referencias de sitios sobre servlets

http://www.servletcentral.com/

http://jserv.javasoft.com/products/java-server/documentation/webserver1.0.2/servlets/api.html

http://webdevelopersjournal.com/columns/java_servlets.html

http://www.idg.net/crd_java_63103.html

http://www.edsbookreview.com/computer/hunter_java_servlet.html

http://www.westlake.com/classes/java/java_sv_summary.html

http://www.webreview.com/wr/pub/Java_Servlets

http://www.manning.com/Williamson/index.html


1 comentario: