Está en la página 1de 8

UANL

FCFM

LCC

Programación Orientada a Objetos


Salón 413. 7am.

“Reporte: Formulario Java Web”

Profesor: Jorge Islas


Alumno: Alberto Baltazar Gutiérrez Ortega - 1887970
Programa “Formulario Java Web”

Objetivo
Realizar una aplicación Web de Java Enterprise Edition que consista en un
formulario HTML que recoja datos del usuario y se guarden en una base de datos.
Pasando primero por un servlet y un modelo codificados por el alumno.

Introducción
Este proyecto fue el último del curso. Gracias a los anteriores proyectos logramos
aprender los conceptos básicos de la programación orientada a objetos y el
profesor decidió dar un paso más allá para que experimentáramos de primera
mano con los programas de Java Web que se utilizan en la industria. Ya que no
contamos con conocimientos de programación en la web ni de bases de datos
este sería un curso introductorio y de experimentación para que desarrolláramos
nuestra lógica e intuición para crear un proyecto de este tipo.
Descripción del proceso

Antes de comenzar con el proyecto fue necesario que supiéramos sobre Java EE.
Java Enterprise Edition se utiliza para cualquier proyecto que use un servidor.
Descargué y configuré Apache Tomcat en Netbeans. Yo venía utilizando el IDE
Eclipse Photon pero no logré hacer que Tomcat funcionará. El proceso de
configuración en Eclipse era más complicado y revuelto, en cambio en Netbeans
solo tuve que descargar librerías y plugins. En especial el framework Struts 2.
Hice el proyecto de Java Application Web y le puse el nombre de “Formu”.
Netbeans me autogeneró varias carpetas con clases ya creadas, que son las
necesarias para comenzar a trabajar en un proyecto de Java Web. Los
programadores experimentados saben el propósito del código autogenerado, pero
en este curso nos enfocamos más en aprender lo mínimo necesario.

El profesor dijo que nos fijáramos en el archivo .jsp. Se llamaba


welcomeStruts.jsp. Me llamó mucho la atención ya que la sintaxis me pareció
familiar, muy parecida al HTML que ya conocía. Noté etiquetas que desconocía
pero en general podía entenderlo.
En este archivo fue donde coloqué un formulario básico de HTML, donde solicito el
nombre, email y mensaje del usuario. Como ya tengo experiencia con HTML no
tuve problemas en hacer el formulario.
Ya teniendo Apache Tomcat una vez le di Run a la aplicación se me abrió
automáticamente una ventana de mi navegador predeterminado, mostrando la
página del HTML que acababa de escribir.
El siguiente paso fue crear un Servlet. Un Servlet es un objeto de Java que
pertenece a una clase que se extiende de javax.servlet.http.HttpServlet, este nos
permite crear aplicaciones web dinámicas, lo que quiere decir que podemos
realizar consultas, insertar y eliminar datos.
En general son pequeños programas escritos en Java que admiten peticiones a
través del protocolo HTTP. Los Servlets reciben peticiones desde un navegador
web, las procesan y devuelven una respuesta al navegador, normalmente en
HTML.
Netbeans tiene un autogenerador de Servlet y fue el que utilice. Dentro le coloqué
el HTML de la página que aparecería cuando el usuario le diera click al botón de
enviar una vez llenara los datos que se requerían. Para poder capturar los datos
use request.getParameter() para tomarlos de los input de HTML, según el nombre
que les puse. Luego para mostrarlos en pantalla los copié en Strings. El profesor
dijo que eso era una mala práctica y no debía realizarse así. Por lo que se decidió
crear una clase llamada modelo, donde se guardarían como propiedades los datos
que se pedían en el formulario. Esta clase contaría con getters y setters. De esta
forma desde el servlet se utilizaban estos métodos para acceder a los datos,
teniendo más control y seguridad.
Al darle Run de nuevo a la aplicación, llenar los campos del formulario y darle
enviar, me sorprendí al ver como la pagina cargaba automáticamente el HTML del
servlet y mostraba lo que había codificado. Fue increíble porque pensé en todas
las posibilidades que ofrece Java para crear proyectos web. Este es uno muy
sencillo, pero se pueden crear aplicaciones muy grandes y escalables con este
lenguaje.
Estas son las páginas que se ven en el navegador (en este caso, Firefox).

Código del servlet


El siguiente paso fue crear una clase para conectar a la base de datos. Le puse el
nombre de BdConnection. Dentro de ella cree el método obtenerConexion. Este
método devolvería un objeto Connection y recibiría como parámetro el nombre de
la base de datos, el usuario y la contraseña. Se utiliza un try-catch por si no se
llega a encontrar la base de datos que buscamos.

Como se observa en la imagen del servlet, hice una variable llamada ‘con’ de tipo
Connection, y crearía una variable ‘conexión’ de tipo BdConnection, para tener
acceso al método que me interesaba (obtenerConexion). Despues asigne lo que
devolvía el método obtenerConexion del objeto conexión, ya con sus parámetros
mandados, a la variable ‘con’. Esta variable me serviría para la variable statement
de tipo Statement, que se usaría para mandar una sentencia SQL a la base de
datos.
Antes de ejecutar el programa tenía que instalar MySQL. Primero descargué la
versión 8.0 pero no pude configurarla bien en mi computadora y tuve problemas
para que funcionará. Decidí mejor utilizar la versión 5.5, que me funcionó bien y no
tenía muchas diferencias.
Como no sabía utilizar bases de datos el profesor me ayudó dictándome
sentencias básicas de SQL. Estas sentencias las escribí en el MySQL 5.5
Command Line Client. Le mencioné al maestro que había opciones de
visualización de bases de datos como por ejemplo MySQL Workbench o PopSQL,
pero el maestro me respondió que es muy importante perderle el miedo a la línea
de comandos y que es más rápido hacer consultas desde ahí. Además, es la
mejor forma de aprender bien SQL.
Desde la línea de comandos cree la base de datos ‘primerabd’ y la tabla ‘agenda’.
Luego desde el servlet y usando la variable statement con su método
executeQuery, mandé una sentencia SQL donde mandaba los datos introducidos
por el usuario a la tabla agenda. Pero no funcionó, me saltaron errores. El IDE
mostraba que había un error de sintaxis en la sentencia SQL y también mostraba
algo sobre el doGet del servlet pero no entendí muy bien cuál era el error.
Fuera de clase me puse a investigar cómo lograr ese último paso y encontré que
executeQuery es para consultas, no para introducir datos en la base de datos. Y
que primero se tiene que “preparar la información” y luego mandarla. Utilicé el
método prepareStatement de la clase Connection, y lo asigné (devuelve un objeto)
a una variable llamada ‘stmt’ de tipo PreparedStatement. Después utilizando ‘stmt’
ejecuté el método executeUpdate.

Pasos
1. Llenar formulario desde el navegador y click al botón Enviar.

2. Se ejecuta este nuevo código

3. Consultamos en la base de datos si es que se agregó al nuevo usuario en


la tabla agenda. Podemos verlo al final de la tabla: el programa logró su
objetivo.
Conclusiones

Este fue mi proyecto favorito del curso ya que tengo mucho interés en aprender a
programación para la web. Aprendí a crear una aplicación web de Java, instalar
librerías y plugins y utilizar lo básico del framework struts. Además de aprender
buenas prácticas como por ejemplo crear una clase para la conexión a la base de
datos, y un modelo para tomar los inputs del usuario. Al final aprendí a crear una
base de datos y a escribir comandos básicos de SQL, un lenguaje con el que
nunca había trabajado.
Fue un proyecto complicado ya que tuve muchos problemas más que nada con
configurar correctamente el software. Creo que mejoraré eso con la experiencia.
Los otros problemas, que eran ya sobre el código Java, los resolví buscando en
distintas páginas de internet. Pude notar que a pesar de que cada programador
trabaja diferente, Java tiene instrucciones comunes para ciertas acciones.