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

31 Comentarios | deja el tuyo

feb, 22 2007 - 10:14 am

Noticias…

Sin comentarios | deja el tuyo

feb, 20 2007 - 1:50 pm

Revistas y e-zines

En esta sección me gustaría compartir con ustedes algunas revistas y eZines que he coleccionado, orientadas fundamentalmente al software libre, la informática, el hacking, etc. Dichos documentos están en PDF, y de verdad recomiendo la lectura de estas grandes fuentes de información y conocimiento. Obviamente he de incluir (en un futuro) las famosas revistas de HackXCrack, pero las que tengo son/están escaneadas, por lo cual no son de buena calidad y pesan bastante; la buena noticia es que ya casi me las consigo todas (son 30) originales, vale la pena que las tengas. En este momento están disponibles estas, espero que les sirva:

  • Essentia Libre: Es una revista colombiana enfocada al software libre y al open source. La recomiendo.
  • Prácticas de los foros de HXC: Son 45 pequeños, pero completos, documentos que explican como hacer ciertas cosillas de redes y hacking.
  • RevistaSL: Es una revista mexicana enfocada al software libre.
  • [in]secure: Esta es una excelente revista dedicada a la (in)seguridad informática [en inglés].
  • COMOS’s: Algunos de los COMOs de los foros de HackXCrack.
  • Begins: Es una revista chilena en la que se habla de software libre, linux, programación, etcs.
  • WARE: Excelente revista de informática, lastimosamente solo sacaron 6 ediciones, ya que tuvieron problemas monetarios pero tenía contenidos muy buenos.
  • NEX IT: Es una revista/periódico argentino que trata diversos temas del mundo IT (Windows, Linux, seguridad informática, redes), bastante profesional. De momento hay 20 números.

La lista irá creciendo poco a poco (espero). Si conoces más y te gustaría compartirlas no dudes en poner un par de links o enviarmelas por correo.

Algunos de los mirrors de descarga son los originales de cada revista, es decir, son links a las repectivas webs de cada proyecto. Esto debido a que no tengo un buen hosting en donde alojar los archivos, talvez en un futuro compre uno para no tener más inconvenientes.

Sin comentarios | deja el tuyo

« Entradas anteriores
Entradas recientes »