You are on page 1of 6

ESCOM Escuela Superior de Cmputo

Materia:
Tema:

Desarrollo de Aplicaciones Web.


Uso de GET, POST, doGet(), doPost().

Introduccin.
Un servlet es una clase que implanta la interfaz Servlet, que se encuentra dentro del paquete javax.servlet y hereda
de la clase GenericServlet. GenericServlet es independiente del protocolo utilizado, si el servlet solamente va
a utilizar HTTP se puede heredar de la clase HttpServlet. Los servlets generan pginas web de forma dinmica a
partir de los parmetros de la peticin que enve el navegador web:
Un usuario solicita una pgina JSP o un servlet.
El servidor carga e inicializa el servlet, llamando a init().
El servlet maneja cero o ms peticiones del cliente, llamando a doGet (), doPost (), u otro.
Se crea una cookie (pero se pueden utilizar otros mtodos) en el navegador del usuario, con un identificador aleatorio.
En el JSP o servlet se pueden guardar valores cualesquiera que podrn ser vistos por las dems pginas JSP o servlets
de la aplicacin que visite el usuario.
Si el usuario visita otra de las pginas se puede obtener el valor que se guarda en la sesin.
El servidor elimina el servlet, llamando a destroy().

PARTE I.
Para iniciar con el cdigo del servlet, se indican los paquetes necesarios:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

La clase que implante el servlet debe heredar de


javax.servlet.http.HttpServlet, de la siguiente manera:

javax.servlet.HttpServlet,

de

public class ServletBasico extends HttpServlet{


:
public void init(){
System.out.println(Se inicializa el servlet);
}
public void init(ServletConfig conf) throws ServletException{
super.init(conf);
}
:
}

En esta clase se debe codificar al menos un mtodo, por ejemplo doGet():


public void
IOException{
:
}

doGet(HttpServletRequest

req,

HttpServletResponse

res)

throws

ServletException,

Los dos parmetros representan los streams de datos intrnsecos de peticin y respuesta.
Se define una clase PrintWriter para asociar el flujo de salida:
PrintWriter out = response.getWriter();
String a, b;
int x, y, resultado;
a = request.getParameter(a);
b = request.getParameter(b);

, donde getParameter() regresa una cadena. Para manejar los resultados:


try{

M. en C. Alejandro Cifuentes A.

Pgina 1

ESCOM Escuela Superior de Cmputo


x = Integer.parseInt(a);
y = Integer.parseInt(b);
resultado = x + y;
} catch(Exception e){
e.printStackTrace();
out.println(Error al recibir parmetros con GET);
out.print(e);
out.close();
return;
}

Se indica el tipo de contenido MIME con text/html, images.jpeg o application/x-gzip:


response.setContentType(text/html);
Para la apariencia de la pgina web se utiliza el mtodo println():
out.println(<html>);
out.println(<head><title>Un servlet bsico</title></head>);
out.println(<body>);
out.println(<h1>Esta es una prueba de un servlet con GET</h1>);
out.println(<h1>La suma de + x + + + y + = + resultado + </h1>);
out.println(</body></html>);
out.close();
}

El cdigo de doPost() es el siguiente:


public void
doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException,
IOException{
response.setContentType(text/html;charset=UTF-8);
PrintWriter out = response.getWriter();
String a, b;
int x, y, resultado;
a = request.getParameter(a);
b = request.getParameter(b);
try{
x = Integer.parseInt(a);
y = Integer.parseInt(b);
resultado = x - y;
} catch(Exception e){
e.printStackTrace();
out.println(Error al recibir parmetros con POST);
out.print(e);
out.close();
return;
}
out.println(<html>);
out.println(<head><title>Un servlet bsico</title></head>);
out.println(<body>);
out.println(<h1>Esta es una prueba de un servlet con POST</h1>);
out.println(<h1>La resta de + x + - + y + = + resultado + </h1>);
out.println(</body></html>);
out.close();
}

Los mtodos se pueden utilizar desde un archivo HTML.


Para el mtodo GET, el cdigo de doGet.html es:
<html>
<head><title>Servlet con GET</title></head>
<body>
<h1>Suma de dos enteros</h1>

M. en C. Alejandro Cifuentes A.

Pgina 2

ESCOM Escuela Superior de Cmputo


<form action=/ServletBasico method=GET>
<p>Numero a = <input type=text name=a></p>
<p>Numero b = <input type=text name=b></p>
<p><input type=submit value=Hacer suma></p>
</form>
</body></html>

Para el mtodo POST, el cdigo de doPost.html es:


<html>
<head><title>Servlet con POST</title></head>
<body>
<h1>Suma de dos enteros</h1>
<form action=/ServletBasico method=POST>
<p>Numero a = <input type=text name=a></p>
<p>Numero b = <input type=text name=b></p>
<p><input type=submit value=Hacer resta></p>
</form>
</body></html>

Es importante que el valor del atributo name sea el mismo utilizado en el mtodo getParameter() en el servlet.
Tambin en el cdigo del servlet se sobrecargan los siguientes mtodos:
public String getServletInfo(){
return Descripcion sencilla del servlet;
}
public void destroy(){
System.out.println(Servlet destruido);
}

Se configura un descriptor de despliegue en un archivo web.xml, que indica los servlets de la aplicacin web y la URL en
la cual se atienden las peticiones.
<?xml versin=1.0 encoding=ISO-8859-1?>
<!DOCTYPE web-app
PUBLIC -//Sun Microsystems, Inc.//DTD Web Application 2.3//EN
http://java.sun.com/dtd/web-app_2_3.dtd>
<?--Informacin -->
<web-app>
<description>Configuracin de un servidor de aplicaciones</description>
<display-name> Ejemplo de un Servlet</display-name>
<servlet>
<servlet-name>ServletBasico</servlet-name>
<servlet-class>ServletBasico</servlet-class>
</servlet>
<servelt-mapping>
<servlet-name>ServletBasico</servlet-name>
<url-pattern>/servlet/ServletBasico</url-pattern>
</servlet-mapping>
</web-app>

La etiqueta <servlet-mapping> indica que para llamar al servlet se hace a travs de un directorio
virtual /servlet/, por ejemplo, <url-pattern>/servlet/ServletBasico</url-pattern>.
Tomcat buscar el archivo ServletBasico.class dentro de la carpeta classes. Ahora, se compila el archivo
ServletBasico.java:
C:\...\javac cp ${CATALINA_HOME}/lib/servlet-api.java;.ServletBasico.java

Donde ${CATALINA_HOME} es el directorio del servidor Tomcat, por ejemplo G:/apache-tomcat-6.0.24


M. en C. Alejandro Cifuentes A.

Pgina 3

ESCOM Escuela Superior de Cmputo


Se copia el archivo ServletBasico.class a la carpeta:
${CATALINA_HOME}/webapps/ROOT/WEB-INF/classes.

Si la carpeta no existe en ese directorio, se debe crear manualmente.


Antes de arrancar el servidor, copiar los archivos doPost.html y doGet.html dentro de la carpeta:
${CATALINA_HOME}/webapps/ROOT/

Ejecucin del servlet:


El servlet se puede acceder en las siguientes formas:
http://servidor:8080/ServletBasico

para el archivo JSP

Si el servlet se guarda en otra carpeta:


http://localhost:8080/servlets/servlet/ServletBasico

Si el servlet se invoca desde una pgina HTML:


http://servidor:8080/doGet.html
http://servidor:8080/doPOst.html

para el archivo HTML


para el archivo HTML

Algunos mtodos de la clase HttpServlet son:


init(), llamado solamente en la inicializacin del servlet.
destroy(), llamado cuando se destruye la instancia del servlet.
service(), no se puede sobrecargar.
doGet(), doPost(), doPut(), doDelete(), doOptions(), doTrace(), llamados segn el tipo de peticin HTTP.
getServletInfo(), regresa informacin sobre el servlet.
getServletName(), regresa el nombre del servlet, independientemente del nombre de la clase.
getInitParameter(), regresa los parmetros de inicializacin.
getInitParameterNames(), regresa una enumeracin de los nombres de esos parmetros.

PARTE II.
Para facilitar el uso de Java desde la consola de comandos se puede modificar el PATH del sistema agregando la ruta del
kit de desarrollo.
Opcin 1:
i.
seleccionando Equipo o Mi PC y digitar clic derecho.
ii.
Seleccionar las Propiedades>Seleccionar Opciones avanzada del sistema>Propiedades del
sistema>Variables de entorno:

M. en C. Alejandro Cifuentes A.

Pgina 4

ESCOM Escuela Superior de Cmputo

iii.

Ahora, se modifica o agrega la variable PATH:


Si la variable PATH existe, se selecciona y luego se digita en Editar o Modificar. En el campo de texto se
ingresa, al inicio, la ruta del entorno Java y enseguida se le separa con punto y coma (;) como se indica:
C:\Program Files\Java\jdk1.6.0_23\bin;restoDeLosValores...

Si la variable PATH no existe, se selecciona Nueva y en el campo Nombre de la variable se ingresa PATH y
en Valor de variable se ingresa la ruta del entorno Java, como se indica:
C:\Program Files\Java\jdk1.6.0_23\bin

M. en C. Alejandro Cifuentes A.

Pgina 5

ESCOM Escuela Superior de Cmputo

Seleccionar Aceptar para guardar los cambios y tambin cerrar las ventanas abiertas.
Opcin 2:
Dependiendo de la versin del sistema operativo Windows instalado, otra opcin de configuracin es la creacin de la
variable de entorno JAVA_HOME y CATALINA_HOME, la primera con la ruta del JDK que se instal previamente y la
segunda con la ruta de Tomcat:

Se ejecuta el archivo startup.bat localizado en la carpeta bin localizado en los subdirectorios de la instalacin de Tomcat,
por ejemplo dentro de C:\Tomcat\bin.
Para compilar, en el CLASSPATH debe estar el archivo servlet.jar, en el cual se encuentra el paquete javax.servlet
y se encontrar en el subdirectorio lib de Tomcat, cuya ruta es similar a C:\Tomcat\lib\.
Para la ejecucin del servlet, ste se debe agregar al contenedor de servlets; es decir, copiar el
ServletBasico.class
a
la
ruta
de
las
clases
compiladas
C:\Tomcat\webapps\servlets\WEB_INF\classes
(o
~\Tomcat\webapps\servlets\WEBINF\classes).
Dentro de la carpeta C:\Tomcat\webapps\ pueden existir varias aplicaciones con servlets y lo que las distingue es
este nombre junto con los dos parmetros WEB-INF\classes, los cuales deben incluirse al final. Por ejemplo, la ruta
puede ser C:\Tomcat\webapps\MiCarpeta\WEB-INF\classes.
Para comprobar que el compilador y la mquina virtual de Java funcionan correctamente, en una ventana de consola se
ingresa:
javac version
java versin
NOTA: Desarrollar un reporte completamente documentado y detallado, incluyendo las pantallas, con todas las
incidencias del desarrollo de la prctica. Incluir las razones por las cuales se eligi cierto tipo de instalacin,
configuracin y ejecucin en su equipo en particular.

M. en C. Alejandro Cifuentes A.

Pgina 6

You might also like