
Definicion de Java Servlets
Los servlets, son objetos que corren dentro del contexto de un servidor de aplicaciones o tambien conocido como contenedor de servlets (ej: Tomcat) y extienden su funcionalidad.
La palabra servlet deriva de otra anterior, applet, que se refería a pequeños programas que se ejecutan en el contexto de un navegador web. Por contraposición, un servlet es un programa que se ejecuta en un servidor.
El uso más común de los servlets es generar páginas web de forma dinámica a partir de los parámetros de la petición que envíe el navegador web.
Herramientas necesarias
Para desarrollar este Java Servlet utilice :
_ Netbeans IDE 6.8
_ Apache Tomcat 6.0.32
Ejemplo Basico de Java Servlet
_ Nuestro ejemplo consta de 2 partes
* Un formulario : El cual se ejecutara en el navegador (cliente) y enviara datos a un servlet.
* Un servlet : El cual recibira datos del formulario y le devolvera al cliente una pagina HTML con los datos recibidos.
_ Iniciamos Netbeans y seleccionamos Archivo \ Proyecto Nuevo ..
_ Se abre un diálogo que nos solicita el tipo de proyecto, seleccionamos Java Web \ Web Application

_ En el siguiente paso, nos solicita el nombre del proyecto (Project Name), en nuestro caso ingresamos Servlet_Encuesta (o el nombre que ud prefiera)

El siguiente paso, nos solicita el servidor de aplicaciones (contenedor de Servlets a utilizar). Así, del combo Server, seleccionamos Tomcat (según la versión que yo tengo instalada, Tomcat 6.0.32)

_ Finalmente, nos permite seleccionar el o los frameworks a utilizar (Spring,JSF,Struts o Hibernate). No seleccionamos nada pues, por ahora, para este ejempo, no vale la pena.

_ NetBeans crea por su cuenta el proyecto, una estructura de directorios, y dentro de la carpeta Web Pages un arhivo index.jsp, que será el punto de partida de nuestra aplicación. Si bien es de extensión JSP, por ahora no escribiremos código JSP, sinó simplemente un formulario HTML. En este formulario HTML definiremos en el atributo action el nombre del servlet que se ejecutará al enviar (submit) el formulario.
_ El archivo index.jsp que se crea por defecto es el siguiente :

_ Vamos a modificar este archivo , con el siguiente codigo :
index.jsp ( Formulario)
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Envie su opinion</title>
</head>
<body>
<h2>Por favor envienos su opinion acerca de este sitio web</h2>
<form action="ServletOpinion" method="post">
<p>Nombre : <input type="text" name="nombre" size="15"/></p>
<p>Apellidos : <input type="text" name="apellidos" size="30"/></p>
Opinion que le ha merecido este sitio web
<p>
<input type="radio" checked name="opinion" value="buena"/>Buena
<input type="radio" name="opinion" value="regular"/>Regular
<input type="radio" name="opinion" value="mala"/>Mala
</p>
Comentarios
<p>
<textarea name="comentarios" rows="6" cols="40"></textarea>
</p>
<input type="submit" name="botonEnviar" value="Enviar">
<input type="reset" name="botonLimpiar" value="Limpiar">
</form>
</body>
</html>
Luego, desde el explorador de proyectos, luego de hacer clic derecho en la carpeta Source Packages, seleccionamos Nuevo \ Servlet...

_ Aquí, se abre un diálogo que nos solicita nombre y paquete del servlet.
_ En nombre, hay que ingresar el mismo nombre del atributo action del formulario creado anteriormente, pues este será el servlet que recibirá los datos enviados por el formulario HTML. En nuestro caso, según indicamos en el form: ServletOpinion.
_ En paquete se puede ingresar el nombre que se quiera (el nombre que use para el paquete fue mipaquete)
_ Dados el nombre del servlet y el paquete, hacemos clic sobre Finish.
_ Finalizado esto, automáticamente crea una clase con el nombre de servlet dado (ServletOpinion para nosotros), que hereda de HttpServlet. Además redefine (override) algunos métodos (doGet, doPost, getServletInfo) y los rellena con un poco de código. Además, crea un método processRequest (invocado desde los métodos doGet y doPost) para procesar los formularios que llegan por los métodos GET y POST.
_ Nosotros, en este ejemplo, nos limitaremos completar con unas pocas líneas (pues la mayoría la completó automáticamente el NetBeans) el método processRequest para que cree una página HTML que será la respuesta del formulario enviado.
_ Modificamos entonces el archivo ServletOpinion.java con el siguiente codigo
ServletOpinion.java (Servlet)
package mipaquete;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ServletOpinion extends HttpServlet {
// Declaracion de variables miembro correspondientes a
// los campos del formulario
private String nombre=null;
private String apellidos=null;
private String opinion=null;
private String comentarios=null;
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
//Adquisicion de los valores del formulario a travez del objeto req
nombre=request.getParameter("nombre");
apellidos=request.getParameter("apellidos");
opinion=request.getParameter("opinion");
comentarios=request.getParameter("comentarios");
PrintWriter out = response.getWriter();
try {
out.println("<html>");
out.println("<head>");
out.println("<title>Valores recogidos en el formulario</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Valores recogidos del formulario</h1>");
out.println("<p><b>Nombre : </b>"+nombre+"</p>");
out.println("<p><b>Apellidos : </b>"+apellidos+"</p>");
out.println("<p><b>Opinion : </b>"+opinion+"</p>");
out.println("<p><b>Comentarios : </b>"+comentarios+"</p>");
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
public String getServletInfo() {
return "Este servlet lee los datos de un formulario" +
"y los muestra en pantalla";
}
}
Importante:
El archivo Configuration Files \ web.xml debe de incluir el nombre , la clase y el directorio donde se encuentra nuestro servlet, en nuestro caso este archivo debe de quedar asi :
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>ServletOpinion</servlet-name>
<servlet-class>mipaquete.ServletOpinion</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletOpinion</servlet-name>
<url-pattern>/ServletOpinion</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
* Debemos tener cuidado con este archivo , ya que si no esta bien configurado , nos traera problemas para ejecutar nuestros servlets.
Ejecucion del proyecto
_ Para finalizar, vamos a ejecutar el proyecto, podemos hacerlo desde el menú Run o haciendo abriendo el menú contextual del proyecto (desde el explorador de proyectos) y seleccionando Run.
_ Al ejecutar una aplicación web con NetBeans, lo primero que hace el mismo es un Deploy, algo así como distribuir la aplicación en el servidor. Por más que nuestro servidor sea local y que el NetBeans lo haga transparente para nosotros, debemos entender que el Tomcat se ejecuta cuando ejecutamos la aplicación y que además posee una estructura de directorios (distinta a nuestra estructura de carpetas del proyecto) donde almacena las aplicaciones web que corre, archivos de configuración, paquetes de clases, etc.
_ Al ejecutar el proyecto se abrirá el browser predeterminado con la página index.jsp (la que tiene el formulario).
_ Debemos responder las preguntas del formulario y al hacer click en enviar , los datos son enviados al Servidor (Servlet)

_ El servlet recibe estos datos , y devuelve al cliente una pagina HTML con los datos recibidos.

Gracias por compartir el conocimiento!!! Aunque es un pequeño ejercicio de aqui se parte para hacer uno mas elaborado cada vez....GRACIAS!!!
ResponderEliminarMe fue de mucha ayuda! Muchas Gracias!!!
ResponderEliminarSe puede ocupar un .html en vez de un .jsp y obtener el mismo resultado??
ResponderEliminaresta bien chido y explicado el ejemplo gracias y felicidades
ResponderEliminarComo puedo hacer para que si no introduces un parametro del formulario vuelva a salir el formulario y pedirte el que falte ??
ResponderEliminar