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”