Creación de un Formulario con Servlet JAVA.

Vamos a crear una sencilla pagina web con alguna pregunta básica con cuatro posibles respuestas, la respuesta es almacenada y pasada como variable a un Servlet de Java que esta corriendo en el Tomcat, el código java analiza la respuesta y envía una salida en formato txt/html al cliente en su explorador.

Algunos items importantes como poner a correr el Tomcat, como user los Servlet (Webapps) han sido brevemente comentados en el anterior blog:

http://christiandevia.blogspot.com/2013_12_01_archive.html

Bueno, manos a la obra:

1. Creamos el pequeño html donde esta nuestra trivia del día:

<html>
 <head>
  <title>Ejemplo "Trivia"</title>
 </head>
 <body>
 <form
 action="http://localhost:8080/tutorial/servlet/ejemplotrivia"
 method=POST>
 <BR>
 <BR>Quien fue Nelson Mandela <BR>
 <BR>1. Un lider musulman de Africa</BR>
 <BR>2. Un Terrorista de Alqaeda </BR>
 <BR>3. Un lider sudafricano </BR>
 <BR>4. Un monje shaolin </BR>
  <BR>
 <input type="text" name="NOMBRE">
 <BR><input type=submit><input type=reset>

 </form>
 <body>
 </html>

Cada vez que se ejecute el formulario (form) se ejecutara action:

 action="http://localhost:8080/tutorial/servlet/ejemplotrivia"

Acá tengo la ruta (URL) del código java que va a analizar la respuesta, por favor tener presente que en tu Tomcat puede ser otra diferente, si quieres correr la triva desde otro equipo de tu red local debes cambiar localhost por la IP del equipo donde tienes instalado el Tomcat.



El usuario tiene que escoger la respuesta y dar enter o click en "submit":


Como pueden ver ya la pagina se esta ejecutando desde mi servidor web local Tomcat, en mi Tomcat estoy trabajando en la carpeta "tutorial"

C:\apache-tomcat-8.0.0-RC5\webapps\tutorial



El html arriba expuesto debe ser guardado con el nombre "index.html", de tal forma que en el Chrome una vez ingrese la siguiente URL:

http://localhost:8080/tutorial/

me muestre el html



En el html se usa la variable "NOMBRE" para guardar la respuesta y pasarla como entrada al Servlet.

3. Ahora miremos breve mente el código JAVA:

//ejemplotrivia
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class ejemplotrivia extends HttpServlet
{
 public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException



res.setContentType("text/html");
PrintWriter out = res.getWriter();

float a = (Float.valueOf(req.getParameter("NOMBRE"))).floatValue(); 

if (a != 3) {
     out.println ("En serio? así de mal estas informado?!");}
 else if ( a == 3) {
 out.println("Respuesta Correcta!");}


}

public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
doGet(req,res);
}
}

Mediante la linea:

float a = (Float.valueOf(req.getParameter("NOMBRE"))).floatValue(); 

estamos cargado los datos de la variable "NOMBRE", no obstante el precedimiento getParameter automáticamente convierte a "NOMBRE" en string, para pasar su valor a formato numero, hice uso de la función float.valueof la cual convierte el string a flotante.

Bueno aquí no explico el uso de los procedimientos de la clase HttpServlet, pero de esto hay buena información en la red, las lineas:

if (a != 3) {
      out.println ("En serio? así de mal estas informado?!");}
  else if ( a == 3) {
  out.println("Respuesta Correcta!");}

Se explican por si solas.... esto solo es un ejemplo y notas para que después no se me olvide como hice las cosas....

Ahora compilemos este código:

javac -classpath C:\apache-tomcat-8.0.0-RC5\lib\servlet-api.jar ejemplotrivia.java


Ahora no olvidemos tirar el .class a la carpeta "classes":

C:\apache-tomcat-8.0.0-RC5\webapps\tutorial\WEB-INF\classes

Ahora bien, tenemos que crear el web.xml:

<?xml version="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">

<web-app>

    <display-name>Ejemplo Trivia</display-name>
    <description>
      Servlets de ejemplos del tutorial de Servlets y JDBC.
    </description>

    <servlet>
        <servlet-name>ejemplotrivia</servlet-name>
        <servlet-class>ejemplotrivia</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>ejemplotrivia</servlet-name>
        <url-pattern>/servlet/ejemplotrivia</url-pattern>
    </servlet-mapping>

</web-app>

Este web.xml debe ir en la ruta:

C:\apache-tomcat-8.0.0-RC5\webapps\tutorial\WEB-INF

4. Ahora ejecutemos la triva:

La pregunta es:



Si respondes 3:



Si respondes mal:



Bueno quedan algunas preguntas... que pase si el usuario ingresa una letra en vez de un numero? o ingresa un numero mayor a 4?... Todo esto se puede ir arreglando posteriormente, esto solo es un pequeño ejemplo.


Nos vemos luego, gracias.

Comentarios

Entradas populares