ejercicios serlvet get post

17
5.6 Ejemplos prácticos de servlets Los ejercicios que se trabajarán en este capítulo se realizan en el entorno NetBeans 7.1.1 IDE, utilizando como contenedor de servlets Tomcat 7.0.22.0 y se visualizarán en el navegador Internet Explorer 8. 5.6.1 Ejercicios utilizando las peticiones GET y POST a) Hacer un programa que utilice un servlet de Java con la petición get de HTTP que permita mostrar un mensaje de bienvenida. Nota: en este primer ejemplo de servlets se realizaran todos los pasos necesarios hasta lograr ejecutar el servlet. En posteriores ejemplos se omitirán algunos pasos. Crear proyecto Java Web Desde el entorno de desarrollo de NetBeans pulse Archivo, luego Proyecto Nuevo… o simplemente pulse Ctrl + Mayúsculas + N, se visualizará la siguiente ventana: Figura 5.3 Ventana para crear un nuevo proyecto. En Categorías seleccione Java Web, en Proyectos la opción Web Application y pulse el botón Siguiente, para visualizar la siguiente figura:

Upload: daniel-cruz

Post on 18-Jan-2016

37 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Ejercicios Serlvet Get Post

5.6 Ejemplos prácticos de servlets

Los ejercicios que se trabajarán en este capítulo se realizan en el entorno NetBeans

7.1.1 IDE, utilizando como contenedor de servlets Tomcat 7.0.22.0 y se visualizarán

en el navegador Internet Explorer 8.

5.6.1 Ejercicios utilizando las peticiones GET y POST

a) Hacer un programa que utilice un servlet de Java con la petición get de HTTP que

permita mostrar un mensaje de bienvenida.

Nota: en este primer ejemplo de servlets se realizaran todos los pasos necesarios hasta

lograr ejecutar el servlet. En posteriores ejemplos se omitirán algunos pasos.

Crear proyecto Java Web

Desde el entorno de desarrollo de NetBeans pulse Archivo, luego Proyecto Nuevo… o

simplemente pulse Ctrl + Mayúsculas + N, se visualizará la siguiente ventana:

Figura 5.3 Ventana para crear un nuevo proyecto.

En Categorías seleccione Java Web, en Proyectos la opción Web Application y pulse

el botón Siguiente, para visualizar la siguiente figura:

Page 2: Ejercicios Serlvet Get Post

Figura 5.4 Nombre y localización del nuevo proyecto Web.

Como Project Name escriba Servlets, en Project Location se puede cambiar la

localización (ruta) de éste, además deje habilitado el cuadro de verificación Set as Main

Project y pulse el botón Siguiente para ver la ventana del servidor y ajustes.

Figura 5.4 Servidor y ajustes del proyecto Web.

En el campo Server seleccione la versión de Apache Tomcat (en el ejemplo es Apache

Tomcat 7.0.22.0), en Java EE Versión escoja JEE 1.4 y pulse el botón Siguiente para

ver la ventana de marcos de trabajo.

Page 3: Ejercicios Serlvet Get Post

Figura 5.5 Ventana Frameworks.

Pulse el botón Terminar para ver el proyecto Web creado

Figura 5.6 Proyecto Web Servlets creado desde NetBeans IDE.

En NetBeans IDE cuando se crea el proyecto Web se genera la siguiente estructura de

directorios de configuración:

Web Pages: se encontrará lo siguiente:

o Carpeta META-INF: la cual contiene el archivo de configuración de

metadatos context.xml.

o Carpeta WEB-INF: contiene el archivo web.xml (descriptor de

despliegue).

o Arhivo index.jsp: este archivo es de extensión jsp y será el punto de

partida de la aplicación para ejecutar el servlet, el cual contiene la

estructura básica de un página HTML(al dar doble clic sobre éste se

visualizará el código generado), donde posteriormente se le adicionará

Page 4: Ejercicios Serlvet Get Post

una etiqueta form (formulario) y en su atributo action se le definirá el

nombre del servlet que se desea ejecutar al enviar (submit) el formulario.

Source Packages: aquí se pueden crear los paquetes de la aplicación y los

servlets o clases.

Libraries: permite adicionar archivos necesarios para el buen funcionamiento

de la aplicación (driver de bases de datos, archivos para graficar, etc.).

Configuration Files: contiene archivo de configuración.

Crear el servlet

Seleccione la carpeta Source Packages y pulse el botón derecho del mouse y elija

Nuevo y después Servlet, como se aprecia en la siguiente figura:

Figura 5.7 Crear un nuevo Servlet.

Al dar clic se observará la ventana para definir el nombre y la ubicación del servlet.

Figura 5.8 Nombre y ubicación del Servlet.

Page 5: Ejercicios Serlvet Get Post

Como Nombre de Clase escriba PrimerServlet y sí se creó un paquete para el servlet

escríbalo o selecciónelo en la opción Paquete. Sí pulsa el botón Siguiente se

visualizará la ventana Configuración para implementar el Servlet.

Figura 5.9 Ventana Configure Servlet Deployment.

Al pulsar el botón Terminar, en la parte izquierda se observará el archivo creado y en

la parte derecha el código generado por NetBeans IDE para el nuevo servlet.

Figura 5.10 Ventana con el código generado para el nuevo servlet.

Page 6: Ejercicios Serlvet Get Post

Escribir código

En el editor de código, elimine el código generado y escriba el siguiente:

public class PrimerServlet extends HttpServlet { protected void doGet(HttpServletRequest peticion, HttpServletResponse respuesta) throws ServletException, IOException { respuesta.setContentType("text/html"); PrintWriter salida=respuesta.getWriter(); salida.println("<head>"); salida.println("<title> Primer ejemplo de un Servlet</title>"); salida.println("</head>"); salida.println("<body>"); salida.println("<h1>! Bienvenido a los Servlets de Java......!</h1>"); salida.println("</body>"); salida.println("</html>"); salida.close(); } }

Análisis del código

Se define la clase PrimerServlet, la cual hereda los métodos de la clase HttpServlet,

por otro se implementa el método doGet, que responde a las peticiones get. El método

doGet recibe dos argumentos: un objeto HttpServletRequest (peticion) y un objeto

HttpServletResponse (respuesta), donde el objeto HttpServletRequest representa la

petición del cliente y el objeto HttpServletResponse representa la respuesta del

servidor al cliente. Si un método doGet no puede manejar la petición del cliente, lanza

una excepción de tipo javax.servlet.ServletException, y si encuentra un error durante

el procesamiento de los flujos de información (leer del cliente o escribir al cliente),

lanza una excepción de tipo javax.io.IOException. Utilizando el método

setContentType se establece el tipo de dato que se utiliza como respuesta, en este caso

es de tipo text/html, para indicarle al navegador que la respuesta es un documento

HTML, además con el método getWriter se devuelve un flujo de datos de tipo

PrintWriter, que permite al servidor enviar el contenido al cliente.

Por último se crea el documento HTML, escribiendo cadenas de caracteres mediante el

método println y se cierra el flujo de salida y se envía la información al cliente.

Observación: en el código se espera que se aprecien errores, porque NetBeans IDE no

reconoce automáticamente las clases utilizadas. Para importar los paquetes necesarios,

dé clic derecho sobre el mouse y seleccione la opción reparar importaciones (fix

imports) o simplemente pulse Ctrl + Mayúsculas +I.

Modificar el archivo index.jsp

Busque el archivo index.jsp en la carpeta Web Pages, dé doble clic sobre éste para

visualizar el código generado y reemplácelo por el siguiente:

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

Page 7: Ejercicios Serlvet Get Post

<title>Ejecutar un primer servlet</title> </head> <body> <form action ="PrimerServlet" method ="get"> <p> <label>Pulse el botón para llamar el servlet <input type ="submit" value="obtener documento HTML"/> </label> </p> </form> </body> </html>

Análisis del código

Se define la estructura básica de un documento HTML:

<html> <head> </head> <body> </body> </html>

Dentro de la etiqueta <head> se establece el tipo de contenido, en este caso text/html,

para indicarle al navegador que el contenido es un documento HTML, además un título

en el encabezado por intermedio de la etiqueta <title>. Por otro lado en la etiqueta

<form> utilizando el atributo action se especifica la ruta URL, que invoca al servlet

(PrimerServlet) y con el atributo method se le indica al navegador que se envía una

petición get al servidor, la cual llama al método doGet del servlet. Con la etiqueta <p>

se define un párrafo y en la etiqueta <label> se escribe el texto que ira dentro del

párrafo. La sentencia submit de tipo input crea un botón y value permite colocarle un

texto al botón creado.

Ejecutar el archivo jsp

Seleccione el archivo index.jsp, pulse el botón derecho del mouse y escoja la opción

Ejecutar archivo o simplemente pulse Mayúsculas + F6. Se visualizará la siguiente

figura:

Figura 5.11 Ejecución index.jsp.

Page 8: Ejercicios Serlvet Get Post

Al pulsar el botón obtener documento HTML, se visualizará:

Figura 5.12 Llamado al servlet de Java (PrimerServlet).

b) Escribir programa que utilice un servlet llamado SaludoServlet con la petición get

de HTTP y deberá permitir capturar los nombres, la edad, la principal afición, el

deporte favorito, el lugar de nacimiento y la edad actual e imprimir dicha

información.

Nota: a partir de este ejemplo se omitirán algunos pasos que se realizaron en el ejemplo

anterior.

Código servlets

Cree un nuevo serlvet llamado SaludoServlet y reemplace el código por el siguiente:

public class SaludoServlet extends HttpServlet { protected void doGet(HttpServletRequest peticion, HttpServletResponse respuesta) throws ServletException, IOException { String nombres=peticion.getParameter("nombres"); String profesion=peticion.getParameter("profesion"); String aficion=peticion.getParameter("aficion"); String deporte=peticion.getParameter("deporte"); String nacimiento=peticion.getParameter("nacimiento"); String edad=peticion.getParameter("edad"); respuesta.setContentType("text/html"); PrintWriter salida=respuesta.getWriter(); salida.println("<head>"); salida.println("<title> Procesamiento de peticiones get con datos</title>"); salida.println("</head>"); salida.println("<body>"); salida.println("<h1 align=center>! hola :"+nombres+" ....!!!Bienvenido a los servlets!!!<br/></h1>"); salida.println("<h3 align=center>Tu profesion es:"+profesion+" ...Que BIEN!!!!<br/>"); salida.println("Lo que más le gusta hacer es :"+aficion+" ...CHEVERE!!!<br/>"); salida.println("Tu deporte preferido es:"+deporte+" ...BACANO!!!<br/>"); salida.println("Naciste en: :"+nacimiento+"<br/>"); salida.println("Y tu edad es:"+edad+"<br/><h3>"); salida.println("</body>"); salida.close(); } }

Page 9: Ejercicios Serlvet Get Post

Análisis del código

Se implementa el método doGet, que responde a las peticiones get, el cual recibe dos

argumentos: un objeto HttpServletRequest (petición del cliente) llamado peticion y

un objeto HttpServletResponse (respuesta del servidor) llamado respuesta. Por otro

lado, se definen seis variables de tipo String (nombre, profesión, afición, deporte,

nacimiento, edad) a las cuales se les asignan los valores que contienen la URL (página

HTML o JSP), por intermedio del método getParameter (permite obtener el valor de

un parámetro a recuperar) perteneciente a la interface HttpServletRequest. Utilizando

el objeto salida de tipo PrintWriter() se crea el documento HTML escribiendo

cadenas de caracteres mediante el método println y por último se cierra el flujo de

salida por medio del método close().

Observación: en el código se espera que se aprecien errores, porque NetBeans IDE no

reconoce automáticamente las clases utilizadas. Para importar los paquetes necesarios,

dé clic derecho sobre el mouse y seleccione la opción reparar importaciones (fix

imports) o simplemente pulse Ctrl + Mayúsculas +I.

Crear el archivo saludo.jsp

Seleccione la carpeta Web Pages y pulse el botón derecho del mouse y elija Nuevo y

después JSP, como se aprecia en la siguiente figura:

Figura 5.13 Crear un archivo JSP.

Al dar clic sobre la opción JSP, se visualizará la ventana para dar Nombre y la

ubicación al nuevo JSP, como se aprecia en la siguiente figura:

Page 10: Ejercicios Serlvet Get Post

Figura 5.14 Nombre y ubicación del archivo JSP.

Como Nombre de Archivo (File Name) escriba saludo. Al pulsar el botón Terminar

se visualizará la ventana con el código HTML generado.

Figura 5.15 Nombre y ubicación del archivo JSP.

Modificar el archivo saludo.jsp

Seleccione el código generado en el archivo saludo.jsp y reemplácelo por el siguiente:

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Saludo con un Servlet</title> </head> <body> <form action ="SaludoServlet" method ="get"> <h1 align="center"> Solicitud información</h1> <h3><label> Escriba sus nombres : <input type ="text" name ="nombres"/> Cuál es su profesión: <input type ="text" name ="profesion"/><br/><br/>

Page 11: Ejercicios Serlvet Get Post

Su afición preferida: <input type ="text" name ="aficion"/> Su deporte favorito : <input type ="text" name ="deporte"/><br/><br/> Lugar de nacimiento : <input type ="text" name ="nacimiento"/> Su edad es : <input type ="text" name ="edad"/><br/><br/> <input type = "submit" value="Enviar información"/> </label></h3> </form> </body> </html>

Análisis del código

En la etiqueta <form> utilizando el atributo action se especifica la URL, que invoca al

servlet (SaludoServlet) y con el atributo method se le indica al navegador que se envía

una petición get al servidor, la cual llama al método doGet del servlet. Utilizando el

elemento text perteneciente al atributo type del elemento interactivo input se crean

cajas de texto, donde se digitará la información solicitada. Al pulsar el botón (submit)

con la etiqueta Enviar la información, se enviará los datos al servlet seleccionado para

visualizarlos en la página Web.

Ejecutar el archivo jsp

Seleccione el archivo saludo.jsp, pulse el botón derecho del mouse y escoja la opción

Ejecutar archivo o simplemente pulse Mayúsculas + F6. Se visualizará la siguiente

figura:

Figura 5.16 Ejecución archivo saludo.jsp.

Sí se digita la información que se aprecia en la siguiente figura:

Figura 5.17 Información de la página Web saludo.jsp.

Page 12: Ejercicios Serlvet Get Post

Y la pulsar el botón Enviar información, se observará la siguiente figura:

Figura 5.18 Llamado al servlet de Java (SaludoServlet).

c) Diseñar programa que utilice servlet con la petición post de http, donde se pueda

capturar el valor de un préstamo, seleccionar el plazo en meses del préstamo y digitar

la tasa de interés e imprimir las cuotas mensuales del préstamo.

Código servlets

Cree un nuevo serlvet llamado ServletPrestamo y reemplace el código por el siguiente:

public class ServletPrestamo extends HttpServlet { protected void doPost(HttpServletRequest peticion, HttpServletResponse respuesta) throws ServletException, IOException { double tasa=Double.parseDouble(peticion.getParameter("tasa")); long valor=Long.parseLong(peticion.getParameter("valor")); int plazo=Integer.parseInt(peticion.getParameter("plazo")); respuesta.setContentType("text/html"); PrintWriter salida=respuesta.getWriter(); double cuota=0, interes=0; int i; salida.println("<h1 align=center>Simulación mensual de las cuotas</h1>"); salida.println("<table border=2 align=center>"); salida.println("<tr><th>Saldo Prestamo</th><th>Interes</th><th>cuota mensual</th<</tr>"); for(i=plazo;i>=1;i--) { interes=Math.round((valor*tasa)/100); cuota= Math.round(interes+ (valor/plazo)); salida.println("<tr><td>"+valor+"</td><td>"+interes+"</td><td>"+cuota+

"</td<</tr>"); valor=valor-(valor/plazo); } salida.println("</table>"); salida.close(); } }

Page 13: Ejercicios Serlvet Get Post

Análisis del código

Se definen las siguientes variables: double (tasa, cuota, interés), long (valor), int (plazo,

i). Utilizando la etiqueta <table> se define una tabla HTML, con la etiqueta <tr> se

especifican las filas y con <th> se colocan en negrilla los encabezados de dicha tabla.

Con un ciclo for se inicializa la variable i con el valor del plazo inicial, el cual se

repetirá mientras la variable i sea mayor o igual que 1 (esta variable se ira

decrementando en 1). A la variable interes se le asigna el valor mensual del interés del

préstamo; a la variable cuota se le asigna el valor de la cuota mensual y con <td> se

imprime por columna el saldo del préstamo (valor), el interés sobre el saldo (interes) y

el valor de la cuota del respectivo mes (cuota). Por último a la variable valor se le resta

el valor de la cuota para obtener el nuevo saldo.

Observación: en el código se espera que se aprecien errores, porque NetBeans IDE no

reconoce automáticamente las clases utilizadas. Para importar los paquetes necesarios,

dé clic derecho sobre el mouse y seleccione la opción reparar importaciones (fix

imports) o simplemente pulse Ctrl + Mayúsculas +I.

Crear archivo .jsp

Cree un nuevo archivo JSP llamado prestamo.jsp. El código generado en el archivo

reemplácelo por el siguiente:

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Servlet Prestamo</title> </head> <body> <h1 align="center">Simulación cuota crédito</h1> <form action ="ServletPrestamo" method ="post"> <p><label>Valor del préstamo: <input type ="text" name ="valor"/><br/><br/> Plazo en meses del préstamo: <select name="plazo" size="1"> <option>12</option> <option>24</option> <option>36</option> <option>48</option> </select> <br/><br/> Tasa de interes del préstamo: <input type ="text" name ="tasa"/><br/><br/> <input type = "submit" value="Simular"/> </p></label> </form> </body> </html>

Análisis del código

En la etiqueta <form> utilizando el atributo action se especifica la URL, que invoca al

servlet (ServletPrestamo) y con el atributo method se le indica al navegador que se

envía una petición post al servidor, la cual llama al método doPost del servlet.

Utilizando el elemento text perteneciente al atributo type del elemento interactivo input

Page 14: Ejercicios Serlvet Get Post

se crean cajas de texto (valor y tasa), donde se digitará la información solicitada y con la

etiqueta <select> se define una lista de opciones con diferentes plazos Al pulsar el

botón (submit) con la etiqueta Simular, se enviará los datos al servlet seleccionado

para visualizarlos en la página Web.

Ejecutar el archivo jsp

Seleccione el archivo prestamo.jsp, pulse el botón derecho del mouse y escoja la

opción Ejecutar archivo o simplemente pulse Mayúsculas + F6. Se visualizará la

siguiente figura:

Figura 5.19 Ejecución archivo prestamo.jsp.

Sí se digita los valores 10000000, 2.5 y selecciona 12 respectivamente, como se observa

en la anterior figura y al pulsar el botón Simular se obtendrá la página Web que a

continuación se presenta:

Figura 5.20 Ejecución servlet ServletPrestamo.

Page 15: Ejercicios Serlvet Get Post

d) Escribir un programa que utilice servlets con la petición post de http, el cual permita

capturar los valores de horas, minutos y segundos e imprima las horas, los minutos y

los segundos un (1) segundo después. Se debe tener en cuenta que las horas están en

el rango entre 0 y 23 y los minutos y los segundos entre 0 y 59. Ejemplo:

Se captura Se obtiene

Horas Minutos Segundos +1 Horas Minutos Segundo

15 23 10 15 23 11

17 31 59 17 32 0

21 59 59 22 0 0

23 59 59 0 0 0

Código servlets

Cree un nuevo serlvet llamado ServletUnSegundo y reemplace el código por el

siguiente:

public class ServletUnSegundo extends HttpServlet { protected void doPost(HttpServletRequest peticion, HttpServletResponse respuesta) throws ServletException, IOException { respuesta.setContentType("text/html"); PrintWriter salida=respuesta.getWriter(); int horas=Integer.parseInt(peticion.getParameter("horas")); int minutos=Integer.parseInt(peticion.getParameter("minutos")); int segundos=Integer.parseInt(peticion.getParameter("segundos")); salida.println("<h1 align=center>Horas-minutos-segundos 1 segundo después</h1>"); salida.println("<table border=2 align=center>"); salida.println("<tr><th>horas</th><th>minutos</th><th>segundos</th<</tr>"); if(horas==23 && minutos==59 && segundos==59) { horas=minutos=segundos=0; } else { if(minutos==59 && segundos==59) { horas+=1; minutos=segundos=0; } else { if(segundos==59) { segundos=0; minutos+=1; } else segundos++; } } salida.println("<tr><td>"+horas+"</td><td>"+minutos+"</td><td>"+segundos+"</td<</tr>"); salida.println("</table>"); salida.close(); } }

Page 16: Ejercicios Serlvet Get Post

Análisis del código

Se definen las variables de tipo int: horas, minutos, segundos a las cuales a las cuales se

les asignan los valores enviados por el archivo JSP por intermedio del método

getParameter. Con una primera estructura If se evalúa si el valor de horas es igual a

23, el de minutos es igual a 59 y el de segundos igual a 59, si se cumple la condición se

le asigna a las variables el valor de cero (0). Si no se cumple la condición por falso

(else) se evaluará los valores de minutos y segundos. Si estos son iguales a 59, se

incrementará en uno (+1) el valor de la variable horas y a las variables minutos y

segundos se les asignará el valor cero (0). Si tampoco la condición es verdadera se

evaluará el valor de segundos. Si esta es igual a 59, se incrementa en uno (+1) el valor

de la variable minutos y a segundos se le asignará el valor de cero (0). Por otro lado, si

tampoco se cumple la condición se incrementará segundos en uno (+1). Al determinarse

los valores de horas, minutos, segundos se imprimirá dichos valores en la página Web

correspondiente

Crear archivo .jsp

Cree un nuevo archivo JSP llamado segundo.jsp. El código generado en el archivo

reemplácelo por el siguiente:

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Servlet un segundo después</title> </head> <body> <form action ="ServletUnSegundo" method ="post"> <h1 align="center"> Horas - minutos - segundos</h1> <h2><label> Escriba la hora : <input type ="text" name ="horas"/><br/><br/> Escriba los minutos : <input type ="text" name ="minutos"/><br/><br/> Escriba los segundos: <input type ="text" name ="segundos"/><br/><br/> <input type = "submit" value="Enviar"/> </label></h2> </form> </body> </html>

Análisis del código

En la etiqueta <form> utilizando el atributo action se especifica la URL, que invoca al

servlet (ServletUnSegundo) y con el atributo method se le indica al navegador que se

envía una petición post al servidor, la cual llama al método doPost del servlet.

Utilizando el elemento text perteneciente al atributo type del elemento interactivo input

se crean tres cajas de texto (horas, minutos, segundos), donde se digitará la información

solicitada. Al pulsar el botón (submit) con la etiqueta Enviar, se enviará los datos al

servlet seleccionado para visualizarlos en la página Web.

Page 17: Ejercicios Serlvet Get Post

Ejecutar el archivo jsp

Seleccione el archivo segundo.jsp, pulse el botón derecho del mouse y escoja la opción

Ejecutar archivo o simplemente pulse Mayúsculas + F6. Se visualizará la siguiente

figura:

Figura 5.21 Ejecución archivo segundo.jsp.

Sí se digitas los valores 21, 38 y 59 respectivamente y al pulsar el botón Enviar, se

observará la siguiente figura:

Figura 5.22 Ejecución servlet ServletUnSegundo.