gentoo linux, java, software libre y otras hierbas
Feb, 22 2007 - 10:24 am

Instalación de un entorno Web: Tomcat + JSP + MySQL

Este pequeño artículo pretende orientarte un poco en los pasos para hacer correr aplicaciones Web en JSP que manipulen bases de datos en MySql. Aunque está orientado a Linux los pasos son muy similares para hacerlo en MS Windows. Primero aclarar unos conceptos, como…

Aunque ya debes tener la mayoría de esos conceptos más que claros, sino no estarías leyendo por aquí. Umm, ¿en qué me quedé? ammm, ya. Lo siguiente es instalar las aplicaciones que necesitamos en el siguiente órden.

Hecho esto tienes que copiar el controlador para Java de mysql que puedes encontrar en la página web de Java (te lo hago fácil, bájalo de aquí, descompríme el ZIP y te quedará el archivo de java mysql-connector-java-3.1.8-bin.jar) y cópialo en la ruta jre/lib/ext/ en mi caso lo copio en /usr/lib/j2sdk1.5-sun/jre/lib/ext/, por ej. Este es el driver que necesita JSP para accesar correctamente las clases para manipular bases de datos en el gestor MySQL.

Eso es todo… solo aclarar que, en algunos casos, sistemas operativos basados en Debian como el Ubuntu el usuario y contraseña del MySql no se encuentra en el archivo mysql.cnf sino en el archivo debian.cnf que se encuentra en el directorio /etc/mysql.

Un ejemplo simple – Accesando una base de datos MySQL con JSP

Vamos a hacer un pequeño ejemplo en el que consultaremos los datos de una tabla, no vamos a insertar, eliminar ni actualizar en el ejemplo, solo consultar, ya que el objetivo del artículo es otro (“les das la mano y te cogen todo el brazo” decía mi abuela). Lo primero es tener una base de datos base para operar sobre ella; entonces crearemos una sencilla.

Para algunos: ¿qué? ¿cómo? ¿no sabes hacer bases de datos en MySQL? Ohh, no, no nooooo, por queeeee!!! Si es tu caso existen muchos manuales en la web para hacer esto, basta con una búsqueda en el Google, de seguro encontrarás miles de manuales (no es exageración).

Pasado el susto proseguimos con la creación de la base de datos, que sería algo como esto (supongo que ya sabes como es la cosa): Pimero iniciar el MySQL, verificar las bases de datos existentes y crear la nuestra (la del ejemplo):

root@casidiablo-coder:~/tomcat/bin# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8 to server version: 4.1.15-Debian_1ubuntu5-log
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.
mysql> show databases;
+————-+
| Database |
+————-+
| ejemplo |
| mysql |
| organizador |
| test |
+————-+
4 rows in set (0.28 sec)
mysql> create database simple;
Query OK, 1 row affected (0.14 sec)
mysql> show databases;
+————-+
| Database |

+————-+
| ejemplo |
| mysql |
| organizador |
| simple |
| test |
+————-+
5 rows in set (0.00 sec)

Ahora ingresaremos a la base de datos “ejemplo”, crearemos una tabla (“hombre”) e insertaremos datos en dicha tabla:

mysql> use simple
Database changed
mysql> create table hombre(cedula int(15) primary key, nombre varchar(30));
Query OK, 0 rows affected (0.12 sec)
mysql> describe hombre;
+——–+————-+——+—–+———+——-+
| Field | Type | Null | Key | Default | Extra |
+——–+————-+——+—–+———+——-+
| cedula | int(15) | | PRI | 0 | |
| nombre | varchar(30) | YES | | NULL | |
+——–+————-+——+—–+———+——-+
2 rows in set (0.00 sec)
mysql> insert into hombre values(1321654987,’Christian Castiblanco’);
Query OK, 1 row affected (0.11 sec)
mysql> insert into hombre values(1032654985,’Jenny Florez’);
Query OK, 1 row affected (0.03 sec)
mysql> insert into hombre values(1032654987,’Marcela Bohorquez’);
Query OK, 1 row affected (0.00 sec)
mysql> insert into hombre values(55184953,’Arturo Cortez’);
Query OK, 1 row affected (0.00 sec)
mysql> select * from hombre;
+————+———————–+
| cedula | nombre |
+————+———————–+
| 1321654987 | Christian Castiblanco |
| 1032654985 | Jenny Florez |
| 1032654987 | Marcela Bohorquez |
| 55184953 | Arturo Cortez |
+————+———————–+
4 rows in set (0.08 sec)
mysql>

Listo!!! Ahora, lo que tenemos que hacer es crear nuestro programa en JSP que consulte (al menos) la base de datos…

Para algunos: Noooo!!!! No me digas que tampoco sabes programar en JSP. Pero ¿cómo? ¿en que andas pensando? ¿que los santos sudan y les da pecueca? Shiiitt, ¿porqué Dios mio? ¿porqué a mi? si mi nick no es lo que parece DIOS!!! ummmjuuuuu, calmado, tranquilo… lo mismo de siempre: Busca en el google, hay infinidad de tutoriales: leelos!!!

Pasado el segundo susto (me van a matar de un paro cardiaco) y confiando en que ya sepas lo básico de JSP proseguimos; primero crearemos un archivo llamado conexion.jsp que contendrá dos funciones, una que devuelve el usuario, y otra el password:

<%!
String usuarioMysql(){
return  "debian-sys-maint";
}
String passwordMysql(){
return  "i43sVHb2AAeK6SXw";
}
%>

Esto es útil, ya que en muchos casos es necesario transportar la apilación a diversas plataformas o SO, y los datos de MySQL (user y password) cambian de una a otra. Además, cuando realizamos cualquier tipo de operación a la base de datos (consultar, modificar, etc.) desde JSP, es obligatorio el uso del par usuario/password; entonces, si los datos de usuario y password cambiasen por algún motivo, tendriamos que modificar todos y cada uno de los archivos de JSP que accedan a la base de datos, una tarea muy engorrosa y difícil, por no decir peligrosa.

Para solucionar el problema utilizamos un archivo (en este caso conexión.jsp) que guarde usuario/password, y los otros archivos que necesiten dicha información lo único que tienen que hacer es invocar las funciones usuarioMysql() y passwordMyslq(); así, en caso tal que el usuario o el password cambien, solo es necesario modificar el archivo conexión.jsp. Veamos entonces el segundo archivo (listar.jsp):

<%@ page  import="java.io.*,java.util.*,java.net.*,java.sql.*" %>
<%@  include file="conexion.jsp" %>
<!DOCTYPE HTML PUBLIC  "-//W3C//DTD HTML 4.01 Transitional//EN"  "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>Ejemplo consulta  JSP</title></head>
<body><center>
<%
Connection  canal = null;
Statement instruccion=null;
ResultSet tabla= null;
String conexion =  "jdbc:mysql://localhost/simple?user="+usuarioMysql()+"&amp;password="+passwordMysql();
//Abrir el enlace
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
canal =  DriverManager.getConnection(conexion);
instruccion =  canal.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
}
catch(ClassNotFoundException e){ out.println(e);}
catch(SQLException e){ out.println(e);}
try{
tabla =  instruccion.executeQuery("select cedula, nombre from hombre");
out.println("<table border=1>");
out.println("<tr><th>Cedula</th><th>Nombre</th></tr>");
while(tabla.next()){
out.println("<tr><td>"+tabla.getString(1)+"</td><td>"+tabla.getString(2)+"</td></tr>");
}
out.println("</table>");
}
catch(Exception e){  out.println(e);}
%>
</center></body>
<html>

Detallemos un poco (muy poco) el programa:

  • El la primera línea importamos los paquetes necesarios para realizar consultas en una base de datos en MySQL.
  • En la línea 2 importamos el archivo conexion.jsp que contiene las funciones usuarioMysql() y passwordMyslq(). Este es el equivalente a la función include en PHP.
  • La porción de código de JSP vá encerrada entre <% y %>(Esto ya lo debes saber ¿no?)
  • Se declaran los objetos necesarios para la conexión.
  • Se crea una instancia del controlador (driver) de MySQL.
  • Se ejecuta una sentencia SQL para la consulta.
  • Y mediante el uso de out.println se crea la tabla (en HTML) de los datos.

Si no te quedó claro es porque seguro no te has leído nada de JSP, en todo caso el objetivo del artículo era simplemente crear el entorno web JSP+MySQL, me he salido del tema, en fin… Copiamos estos archivos a la carpeta de apicaciones JSP del Tomcat (eso ya lo hicimos aquí, así que no es necesario detenerme a explicarlo). El servicio (daemon o demonio) de MySQL debe estar ejecutándose. Ponemos a correr el servidor tomcat, ejecutamos la aplicación y… buuuaaalaaaaaaa!!

Eso es todo, espero que les sirva. Saludetes!!!

Descargar el tutorial completo en PDF

Etiquetas: java, sql

19 Comentarios | deja el tuyo

2 enlaces entrantes

17 Comentarios en “Instalación de un entorno Web: Tomcat + JSP + MySQL”

  1. uri dice:

    Con respecto al driver ¿que no se debe de poner en donde esta instalado tomcat-apache?

  2. uri dice:

    El jre/lib/ext para instalar el conector, se refiere al jre de java, ¿que no se supone que el conector va en donde esta tomcat instalado?

¡Déjanos tu comentario!