java wad servletgetpost

7
Tema: Uso de GET, POST, doGet(), doPost(). Introducción. 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 páginas web de forma dinámica a partir de los parámetros de la petición que envíe el navegador web: Un usuario solicita una página JSP o un servlet. El servidor carga e inicializa el servlet, llamando a init(). El servlet maneja cero o más peticiones del cliente, llamando a doGet (), doPost (), u otro. Se crea una cookie (pero se pueden utilizar otros métodos) en el navegador del usuario, con un identificador aleatorio. En el JSP o servlet se pueden guardar valores cualesquiera que podrán ser vistos por las demás páginas JSP o servlets de la aplicación que visite el usuario. Si el usuario visita otra de las páginas se puede obtener el valor que se guarda en la sesión. El servidor elimina el servlet, llamando a destroy(). PARTE I. Para iniciar con el código 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.HttpServlet, o de javax.servlet.http.HttpServlet, de la siguiente manera: 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 método, por ejemplo doGet(): public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException{ : }

Upload: alejandrocifuent54

Post on 13-Jul-2016

6 views

Category:

Documents


0 download

DESCRIPTION

Uso de GET y POST

TRANSCRIPT

Page 1: Java Wad Servletgetpost

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

Introducción.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 páginas web de forma dinámica a partir de los parámetros de la petición que envíe el navegador web: Un usuario solicita una página JSP o un servlet. El servidor carga e inicializa el servlet, llamando a init(). El servlet maneja cero o más peticiones del cliente, llamando a doGet (), doPost (), u otro. Se crea una cookie (pero se pueden utilizar otros métodos) en el navegador del usuario, con un identificador aleatorio. En el JSP o servlet se pueden guardar valores cualesquiera que podrán ser vistos por las demás páginas JSP o servlets

de la aplicación que visite el usuario. Si el usuario visita otra de las páginas se puede obtener el valor que se guarda en la sesión. El servidor elimina el servlet, llamando a destroy().

PARTE I.Para iniciar con el código 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.HttpServlet, o de javax.servlet.http.HttpServlet, de la siguiente manera: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 método, por ejemplo doGet():public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException{:}

Los dos parámetros representan los streams de datos intrínsecos de petición 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{

x = Integer.parseInt(a);y = Integer.parseInt(b);resultado = x + y;

} catch(Exception e){e.printStackTrace();out.println(“Error al recibir parámetros con GET”);out.print(e);

Page 2: Java Wad Servletgetpost

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 página web se utiliza el método println():out.println(“<html>”);out.println(“<head><title>Un servlet básico</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 código 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 parámetros con POST”);out.print(e);out.close();return;

}out.println(“<html>”);out.println(“<head><title>Un servlet básico</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 métodos se pueden utilizar desde un archivo HTML.Para el método GET, el código de doGet.html es:<html><head><title>Servlet con GET</title></head><body><h1>Suma de dos enteros</h1><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 método POST, el código de doPost.html es:<html><head><title>Servlet con POST</title></head><body>

Page 3: Java Wad Servletgetpost

<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 método getParameter() en el servlet.

También en el código del servlet se sobrecargan los siguientes métodos: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 aplicación web y la URL en la cual se atienden las peticiones.<?xml versión=”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”>

<?--Información --><web-app>

<description>Configuración 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 través 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

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/

Ejecución 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:

Page 4: Java Wad Servletgetpost

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

Si el servlet se invoca desde una página HTML:http://servidor:8080/doGet.html para el archivo HTMLhttp://servidor:8080/doPOst.html para el archivo HTML

Algunos métodos de la clase HttpServlet son:init(), llamado solamente en la inicialización del servlet.destroy(), llamado cuando se destruye la instancia del servlet.service(), no se puede sobrecargar.doGet(), doPost(), doPut(), doDelete(), doOptions(), doTrace(), llamados según el tipo de petición HTTP.getServletInfo(), regresa información sobre el servlet.getServletName(), regresa el nombre del servlet, independientemente del nombre de la clase.getInitParameter(), regresa los parámetros de inicialización.getInitParameterNames(), regresa una enumeración de los nombres de esos parámetros.

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.Opción 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:

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...

Page 5: Java Wad Servletgetpost

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

Seleccionar Aceptar para guardar los cambios y también cerrar las ventanas abiertas.

Opción 2:Dependiendo de la versión del sistema operativo Windows instalado, otra opción de configuración es la creación 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 instalación 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\.

Page 6: Java Wad Servletgetpost

Para la ejecución 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\WEB-INF\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 parámetros 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 máquina virtual de Java funcionan correctamente, en una ventana de consola se ingresa:javac –versionjava – versión

NOTA: Desarrollar un reporte completamente documentado y detallado, incluyendo las pantallas, con todas las incidencias del desarrollo de la práctica. Incluir las razones por las cuales se eligió cierto tipo de instalación, configuración y ejecución en su equipo en particular.