Está en la página 1de 23

PROGRAMACIN DE APLICACIONES

Universidad Tecnolgica de San Juan del Ro Tecnologas de la Informacin y Comunicacin 9 Cuatrimestre

MTI. Alejandro Csar Valencia Garca

SERVLETS
Un Servlet es un programa escrito en Java que se ejecuta en el marco de un servicio de red, (un servidor web, por ejemplo), y que recibe y responde a las peticiones de uno o ms clientes (una pgina web o un dispositivo mvil).

MTI. Alejandro Csar Valencia Garca

CARACTERSTICAS DE LOS SERVLETS


1. Son independientes del servidor utilizado y de su sistema operativo. 2. Los servlets pueden llamar a otros servlets, e incluso a mtodos concretos de otros servlets. De esta forma se puede distribuir de forma ms eficiente el trabajo a realizar. Por ejemplo, se podra tener un servlet encargado de la interaccin con los clientes y que llamara a otro servlet para que a su vez se encargara de la comunicacin con una base de datos. De igual forma, los servlets permiten redireccionar peticiones de servicios a otros servlets (en la misma mquina o en una mquina remota).
MTI. Alejandro Csar Valencia Garca

CARACTERSTICAS DE LOS SERVLETS


3. Los servlets pueden obtener fcilmente informacin acerca del cliente (la permitida por el protocolo HTTP), tal como su direccin IP, el puerto que se utiliza en la llamada, el mtodo utilizado (GET, POST, ...), etc. 4. Permiten adems la utilizacin de cookies y sesiones, de forma que se puede guardar informacin especfica acerca de un usuario determinado. 5. Los servlets pueden actuar como enlace entre el cliente y una o varias bases de datos en arquitecturas cliente-servidor de 3 capas (si la base de datos est en un servidor distinto).
MTI. Alejandro Csar Valencia Garca

CLASE HTTPSERVLET
Los servlets que utilizan el protocolo HTTP son los ms comunes. HTTP son las siglas de HyperText Transfer Protocol, que es un protocolo mediante el cual los navegadores y los servidores puedan comunicarse entre s, mediante la utilizacin de una serie de mtodos: GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT y OPTIONS. Para la mayora de las aplicaciones, bastar con conocer los tres primeros.
MTI. Alejandro Csar Valencia Garca

MTODO GET
Este mtodo permite enviar parmetros al servlet por medio de la URL de la aplicacin. Por ejemplo: localhost:8084/servlet/MiServlet?nombre=Alejandro& apellido=Valencia Los parmetros se envan agregando un signo ? delante del nombre del servlet y separando cada parmetro con un ampersand (&).
MTI. Alejandro Csar Valencia Garca

MTODO GET
Las peticiones HTTP GET tienen una limitacin importante (recurdese que transmiten la informacin a travs de las variables de entorno del sistema operativo) y es un lmite en la cantidad de caracteres que pueden aceptar en el URL.

MTI. Alejandro Csar Valencia Garca

MTODO GET
Los tamaos mximos de URL por navegador son:
Internet Explorer: 2,083 carcteres Firefox: 65, 536 carcteres Safari: 80.000 carcteres Opera: 190.000 caracteres

y por servidor web:


Apache: 4,000 carcteres Microsoft Internet Information Server (IIS): 16, 384 carcteres.
MTI. Alejandro Csar Valencia Garca

MTODO POST
El mtodo HTTP POST permite al cliente enviar informacin al servidor. Se debe utilizar en lugar de GET en aquellos casos que requieran transferir una cantidad importante de datos (formularios).

La peticin viaja encapsulada en un input stream que llega al servlet a travs de la entrada estndar.

MTI. Alejandro Csar Valencia Garca

MTODO DOGET DEL SERVLET


El mtodo doGet() de un servlet hace lo siguiente:
1. Leer los datos de la solicitud, tales como los nombres de los parmetros y sus valores 2. Establecer el header de la respuesta (longitud, tipo y codificacin) 3. Escribir la respuesta en formato HTML para enviarla al cliente.

MTI. Alejandro Csar Valencia Garca

MTODO DOPOST DEL SERVLET


El mtodo doPost() de un servlet hace lo siguiente:
1. Obtener input stream del cliente y leer los parmetros de la solicitud. 2. Realizar aquello para lo que est diseado (actualizacin de bases de datos, etc.). 3. Informar al cliente de la finalizacin de dicha tarea o de posibles imprevistos. Para ello hay que establecer primero el tipo de la respuesta, obtener luego un PrintWriter y enviar a travs suyo el mensaje HTML.
MTI. Alejandro Csar Valencia Garca

EJEMPLO
En el siguiente ejemplo se crear una aplicacin Web en NetBeans. En el archivo index.jsp agregaremos un formulario que pida su nombre al usuario. Este dato se enviar a un Servlet que desplegar una pgina que diga Bienvenido [usuario] donde [usuario] ser el nombre introducido en el formulario.

MTI. Alejandro Csar Valencia Garca

ARCHIVO INDEX.JSP
Agrega el siguiente cdigo entre las etiquetas <body> y </body>:
<form method="POST" action="Bienvenido"> Teclea tu nombre <input type="text" id="nombre" name="nombre"/><br><br> <input type="submit" value="Enviar"/> </form>

En action estamos especificando el nombre del Servlet al que enviaremos los datos (Bienvenido)
MTI. Alejandro Csar Valencia Garca

SERVLET BIENVENIDO
Para agregar el Servlet, haz clic derecho en el nombre del proyecto y selecciona Nuevo -> Servlet. El nombre del Servlet ser Bienvenido. Agrega tambin el nombre del package (el que tu quieras). Clic en Siguiente y Terminar.

MTI. Alejandro Csar Valencia Garca

SERVLET BIENVENIDO
En el mtodo doPost del Servlet agrega el siguiente cdigo:
String nombre = request.getParameter("nombre"); String mensaje = "Bienvenido " + nombre; response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title> Ejemplo Servlet</title>"); out.println("</head>");
MTI. Alejandro Csar Valencia Garca

SERVLET BIENVENIDO
out.println("<body>"); out.println("<h1>" + mensaje + "</h1>"); out.println("<a href=\"index.jsp\">" + "Regresar " + "</a>"); out.println("</body>"); out.println("</html>"); out.close();

Ejecuta la aplicacin y prubala

MTI. Alejandro Csar Valencia Garca

EJEMPLO 2
Para ejemplificar el uso del mtodo GET y doGET haremos una pgina web que despliegue una lista de clientes. Cada cliente tendr un link que pasar por medio de la URL un id. El servlet evaluar el id recibido y desplegar el nombre del cliente con un saludo.

MTI. Alejandro Csar Valencia Garca

ARCHIVO INDEX.JSP
<table> <tr> <td>Id</td> <td>Nombre</td> </tr> <tr> <td><a href="saludo?id=1">1</a></td> <td>Juan Prez Lpez</td> </tr> <tr> <td><a href="saludo?id=2">2</a></td> <td>Pedro Chvez</td> </tr> </table>
MTI. Alejandro Csar Valencia Garca

SERVLET SALUDO
En el mtodo doGet() agrega el siguiente cdigo:
response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); int id = Integer.parseInt(request.getParameter("id")); String mensaje = ""; if (id == 1) { mensaje = "Hola Juan"; } else if (id == 2) { mensaje = "Hola Pedro"; }
MTI. Alejandro Csar Valencia Garca

SERVLET SALUDO
out.println("<html>"); out.println("<head>"); out.println("<title> Ejemplo Servlet GET</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>" + mensaje + "</h1>"); out.println("<a href=\"index.jsp\">" + "Regresar " + "</a>"); out.println("</body>"); out.println("</html>"); out.close();
MTI. Alejandro Csar Valencia Garca

EJERCICIO 1 (CONVERSOR DE MONEDAS)


Hacer una aplicacin que enve a un servlet los siguientes datos de un formulario (mtodo POST):
Cantidad a convertir en Pesos Moneda a convertir (Euros, Pesos, Yenes) Usar un objeto <select>

El servlet deber recibir ambos parmetros y usando el mtodo doPost() hacer la conversin correspondiente de acuerdo a la moneda seleccionada y desplegar el valor en pantalla

MTI. Alejandro Csar Valencia Garca

EJERCICIO 2 (LISTADO DE RECETAS)


Hacer una aplicacin que despliegue al menos 3 platillos y cada uno con un link. Se enviar por medio de la URL el platillo seleccionado a un servlet. El servlet recibir el parmetro (mtodo doGet()) y en base al platillo seleccionado mostrar la receta correspondiente en pantalla.

MTI. Alejandro Csar Valencia Garca

EJERCICIO 3 (DA DEL MAESTRO)


Hacer una aplicacin que enve a un Servlet los siguientes datos por medio de un formulario: Nombre del profesor Institucion Municipio Edad Aos de Servicio Debers generar una clase java Profesor con los atributos arriba mencionados. El servlet recibir los parmetros y los almacenar en un objeto Profesor. La clase Profesor deber tener un mtodo que devuelva el premio obtenido por el profesor de acuerdo a:
$1000 por cada ao de servicio Un bono extra de $5000 si es mayor de 50 aos Un bono extra de $1000 si su municipio es San Juan del Ro o Tequisquiapan

Se deber desplegar una pgina mostrando el premio para el maestro.


MTI. Alejandro Csar Valencia Garca