29 abril, 2017

6. Crear una aplicación Web Java en Eclipse con Servlets y JSPs (Parte 6 - JDBC)

¡Bienvenidos a todos! Esta publicación formará parte de una serie de 13 publicaciones que estaré desarrollando para aprender a desarrollar una aplicación web pura en Java bajo la plataforma JEE usando Servlets y JSPs. Este será un curso en forma de guía para aquellas personas que recién estén empezando en el mundo de la programación web y que todavía no hacen uso de ningún framework.

Haciendo uso de JSPs y Servlets construiremos nuestras aplicaciones webs los cuales se ejecutarán en Apahe Tomcat (Contenedor de Servlets), el cual lo usaremos como servidor de aplicaciones para ejecutar nuestro proyecto. Asimismo, usaremos Eclipse como herramienta IDE (Entorno de Desarrollo Integrado) para la edición y compilación de nuestro código.


Clase 4a

¡Bienvenidos! El día de hoy y continuando con el post anterior, vamos a modificar el proyecto de login de tal manera que podamos trabajar servlets con base datos. Veremos el uso del método service de la clase HttpServlet y los métodos ya antes visto init(), doGET() y doPOST(); y además, veremos una introducción al patrón DTO (Data Access Object).

Recordando la publicación anterior...

Aprendimos a utilizar JSTL que es una tecnología de lenguaje de expresión (Expression Languaje), que nos ofrece etiquetas para poder mostrar parámetros y objetos en el ámbito de la solicitud y la sesión  (param, requestScope, sessionScope)

1. Importamos el proyecto de la clase anterior y lo ejecutamos para ver que no exista ningún error, clic aquí para descargar



2. Ejecutamos el siguiente query en MySQL

Código

3. Creamos la clase MysqlConexion.java (No olviden cambiar la contraseña de MySQL por la de ustedes) dentro del paquete aprendamos.java.util

Código


4. Creamos la clase ClienteDTO.java dentro del paquete bean

Código

Recordemos que el patrón DTO (Objeto de Transferencia de Datos) va de la mano con DAO que veremos en la siguiente publicación, en resumen un DTO permite transferir varios atributos entre el cliente y el servidor y consta como vemos aquí de una clase Value Object que solamente tiene atributos, constructor y métodos de acceso getters y setters y otra clase Business Object que esta en el lado del servidor y es donde están los métodos como se muestra a continuación

5.  Creamos el service LogueoService.java dentro del paquete aprendamos.java.service

Código

6. Creamos el service MantenerClienteService.java dentro del paquete aprendamos.java.service

Código

7. Modificamos el servlet LogueoServlet.java

Código

8. Creamos el servlet ListadoServlet.java

Código

Recordemos que el ciclo de vida de un servlet está compuesto por tres fases.

a) El método int() es llamado por el servidor de aplicaciones cuando el servlet se está cargando en memoria. Solo se ejecuta una vez.

b) En cambio el método service(), es llamado por cada petición http de cliente y envía la petición a los métodos doGET() y doPOST().

c) Y el método destroy() es llamado cuando el servlet es descargado de memoria.

9. Creamos la página listado.jsp


Código

Si nos marca un error en el JSP es porque tenemos que adicionar las librería JSTL en la ruta WebContent>WEB-INF>lib. Para ello, descargamos el recurso dando clic aquí.

Referenciamos a la librería core de JSTL de la siguiente manera

10. Ejecutamos el proyecto Run As>Run on Server



Nota IMPORTANTE: 

Connecting to MySQL 8.0

Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
Fri Aug 17 13:21:33 COT 2018 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
java.sql.SQLException: The server time zone value 'Hora est. Pacífico, Sudaméric' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

Para los que van ha utilizar la versión 8 de MYSQL, tenemos que hacer una modificación en la conexión, pues el código anterior es deprecado.

Class.forName("com.mysql.cj.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/baseDeDatos?useTimezone=true&serverTimezone=UTC", "user", "pass");

Descargar ejercicio
Descargar archivo

No hay comentarios, ¡cuéntame algo!

Me gustaría saber tu opinión. ¡Saludos!