17/4/13

Crear Servlet (con Request)



Vamos a crear una página HTML, que será un formulario "index" (CLIENTE), al pulsar el botón “enviar” se llamara al servlet “miServlets.java” , este recogerá los datos introducidos en el formulario y generará como respuesta una página dinámica que será mostrada de nuevo al cliente.

En la entrada Instalación de TOMCAT  y Configurar TOMCAT en ECLIPSE , ya se explicaba como configurar el contenedor de Servlets Apache Tomcat.

Crearemos un proyecto web dinámico en Eclipse:



Debemos de tener especial cuidado con la estructura de carpetas donde debe encontrarse cada fichero. En eclipse al crear el proyecto web dinámico nos aparece una estructura de carpeta que debemos respetar. Nuestro proyecto quedara así:

          


Deberíamos saber que en “Java Resources / src ”  es donde crearemos las clases, lo normal es crear una estructura de paquetes (en nuestro caso el paquete ale.objetos) para tenerlas organizadas. En el directorio "webContent" colocaremos todas las aplicaciones web que hagamos (servlets, jsp, ejb, etc). Dentro de esta carpeta nos encontramos con dos directorios  "WEB-INF" y “META-INF”. En "WEB-INF" es donde crearemos el archivo web.xml

Crearemos primero nuestra página html “Index.html” (dentro de "webContent")



<!--Param.html    Lectura de parámetros con formularios + servlets -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD><TITLE>Index.html</TITLE></HEAD>
  <BODY BGCOLOR="#CCCCFF">
  <P></P>
  <H2>Debe identificarse como usuario:</H2><BR>
    <HR></HR>
    <CENTER>
       <FORM NAME="FORM1" METHOD="GET"
            ACTION="http://localhost:8080/miFormServlets/miServlets">
         <TABLE BORDER>
            <TR>
              <TD><B>Usuario:</TD>
              <TD><INPUT TYPE=TEXTBOX NAME="USU" SIZE="25" VALUE=""></TD>
            </TR>
            <TR>
              <TD><B>Password:</TD>
              <TD><INPUT TYPE=TEXTBOX NAME="PAS" SIZE="20" VALUE=""></TD>
            </TR>
         </TABLE>
         <P></P>
         <INPUT TYPE=SUBMIT VALUE="Enviar">
         <HR></HR>
              Formulario HTML que invocará a un servlet
         </FORM>
      </CENTER>
  </BODY>
</HTML>

Ahora crearemos nuestro Servlet, yo he creado un paquete dentro de “Java Resources / src” llamado  “ale.objetos” donde creare el servlet “miServlets.java”, con el siguiente código:

package ale.objetos;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.*;
/**
 * Servlet implementation class miServlets
 */
//@WebServlet("/WebContent")
public class miServlets extends HttpServlet {
      private static final long serialVersionUID = 1L;
      public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
            // Obtenemos un objeto Print Writer para enviar respuesta
            res.setContentType("text/html");
            PrintWriter pw = res.getWriter();
            pw.println("<HTML><HEAD><TITLE>Leyendo parámetros</TITLE></HEAD>");
            pw.println("<BODY BGCOLOR=\"#CCBBAA\">");
            pw.println("<H2>ACCESO CORRECTO</H2><P>");
            pw.println("<UL>\n");
            pw.println("Usuario " + req.getParameter("USU") + "<BR>");
            pw.println("Password "  + req.getParameter("PAS") + "<BR>");
            pw.println("</BODY></HTML>");
            pw.close();
      }
}

Ahora nos quedaría crear el fichero web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">

  <display-name>miFormServlets</display-name>
  <description>
     Servlets de ejemplo para practicar
  </description>

<!-- Publicamos nuestro servlet aqui -->

    <servlet>
      <display-name>miServlets</display-name>
        <servlet-name>miServlets</servlet-name>
        <servlet-class>ale.objetos.miServlets</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>miServlets</servlet-name>
        <url-pattern>/miServlets</url-pattern>
    </servlet-mapping>
   
    <welcome-file-list>
      <welcome-file>
            index.html
      </welcome-file>
           
   </welcome-file-list>

<!-- Fin de la publicacion de servlets -->

</web-app>

Análizando etiquetas “web.xml”:
web-app
es la etiqueta raíz.
servlet es la etiqueta que usa para definir un servicio, tenemos que indicarle el nombre (servlet-name) y la clase, en nuestro caso: "ale.objetos.miServlets "
servlet-mapping: es la etiqueta que nos dice qué "caminos" nos llevan hasta el servlet (esto lo aclararemos más adelante).
welcome-file-list: es la lista de páginas que el servidor intentará mostrar como página de inicio cuando reciba una solicitud que no especifica una página.

Llegado a este punto ya tenemos los tres ficheros necesarios para realizar nuestras prueba, si ejecutamos eclipse haciendo click con el botón derecho del ratón en el nombre del proyecto, “RUN AS\ Run on Server” eclipse se encarga de realizarlo todo y nos levanta la web index.html. Un consejo que doy es que copiemos la ruta, en este caso http://localhost:8080/miFormServlets/
y la peguemos en el explorador, y desde este ya rellenar el formulario y pulsar el botón enviar.
 


Al introducir los datos y pulsar el botón Enviar, el sevlet hara que se devuelva al explorador lo siguiente: 



Algunas veces cuando al ejecutar nos da un erro, aunque arreglemos el código, puede ser que al ejecutarlo nos siga dando el error anterior, puede ser porque se quede en CACHE o por algún otro motivo que desconozco. Para subsanar esto podemos eliminar el proyecto del despliegue del Tomcat, de la siguiente manera:



Situado en nuestro proyecto dentro del despliegue de Tomcat, con el botón derecho del ratón nos aparece la siguiente lista desplegable:


Al pulsar “REMOVE” desaparecerá de la lista de proyectos desplegados. Para asegurarnos limpiaremos el tomcat de posibles despliegues, pulsando sobre Tomcat con el botón derecho y seleccionando “CLEAN”


No hay comentarios :

Publicar un comentario