Conectar a la base de datos desde JSP

3.9.08. Por ooscarr (ooscarr)

Netbeans

Con JSTL, conectarse a una base de datos es sencillo y no requiere todo ese peligroso código Java que antes producía dolores de cabeza y frustración.

Preparación

ACTUALIZACIÓN: Netbeans 6.5 agregó al asistente para crear nuevos proyectos web, un formulario extra para ingresar los drivers y los datos de la base de datos desde el principio.

Luego de crear el proyecto JSP y antes de conectar a la base de datos, hay que instalar las librerías Java para la base de datos.

  1. Vamos a las propiedades del proyecto, en la sección Librerías presionamos el botón Add Library... (Agregar librería...)

    Panel de propiedades del proyecto en Netbeans

  2. Importar

    Importar librería en Netbeans

  3. Seleccionamos la librería de PostgreSQL (o Mysql, según...)

    PostgreSQL JDBC Driver
    Aprovechar de agregar la JSTL si no ha sido incluida.

  4. Add Library (Agregar Librería)

    Add Library

  5. OK

Conexión

Luego creamos un JSPF para la conexión

  1. Nuevo archivo > JSP

  2. Le ponemos un nombre...

    Nuevo archivo JSP(F) en Netbeans
    Nos aseguramos que el archivo quede en la carpeta WEB-INF/jspf

El árbol de archivos del proyecto indicando Web Pages > WEB-INF > jspf > conexion.jspf

conexion.jspf

El código del archivo conexion.jspf contendría sólo y nada más que:

<sql:setDataSource driver="org.postgresql.Driver"
 url="jdbc:postgresql://locahost:5432/usuario"
 user="usuario"
  password="contraseña"
 var="bdatos" />

* Si se utiliza Mysql, cambiar parte de la segunda línea por jdbc:mysql://
** Si el servidor se encuentra en otra máquina, cambiar la parte locahost:5432 por la IP y el puerto correspondiente.

La conexión se guarda en una variable var="bdatos" para poder ser usada después en el código.

Código

Ya en el código JSP, primero agregamos el tag sql

<%@taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>

Y después llamamos a la parte de la conexión como siempre con:

<%@include file="/WEB-INF/jspf/conexion.jspf" %>

Por ejemplo, el código completo de una página con una consulta simple sería:

index.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <title>Página JSP</title>
 </head>
 <body>
  <h1>¡Hola, mundo!</h1>

<%@include file="/WEB-INF/jspf/conexion.jspf" %>
<sql:transaction dataSource="${bdatos}">

 <c:catch var="ex">
  <sql:query var="encontrados">
   SELECT primer_nombre FROM persona LIMIT 4
  </sql:query>
 </c:catch>


 <c:choose>
  <c:when test="${not empty ex}">
   <p>Problema: <c:out value="${ex.message}"/></p>
  </c:when>
  <%-- Si no hubo ninguna excepción --%>
  <c:otherwise>


   <c:choose>

    <%-- Si encontró algo --%>
    <c:when test="${encontrados.rowCount>0}">
     <ol>
      <c:forEach items="${encontrados.rows}" var="persona">
       <li><c:out value="${persona.primer_nombre}" /></li>
      </c:forEach>
     </ol>


    </c:when>
    <c:otherwise>
     <p>No se encontraron datos.</p>
    </c:otherwise>
   </c:choose>

  </c:otherwise>
 </c:choose>
</sql:transaction>
 </body>
</html>

Ejecución

ver index.jsp.

Referencias

Artículos relacionados

Etiquetas: , , , ,

8 comentarios (RSS ATOM) :

  1. A las 6/9/08 18:19  

    Anonymous Anónimo ha dicho...

    hola mi llamo Richard Albrecht soy de chile porfavor nesecito tu ayudes en la universisdad me han pedido que cambie los paneles jframe a un diseño como las ventanas q estan en tu pagina de netbeans me dijieron con un jar q tengo q agrgar para cambiar los paneles; si no me entendistes aqui te dejo mi correo RICHARD_A_H_02@HOTMAIL.COM

  2. A las 24/9/08 15:50  

    OpenID elblog ha dicho...

    Me encuentro muy ocupado ahora como para averiguarlo. Pero puedo decir que en java hay métodos para que la interfaz de las ventanas se adapte al sistema operativo en el que se esté ejecutando el software. Por eso, en Mac OS X la interfaz de usuario se ve de esa forma, como el mismo programa en las diferentes versiones de Windows se ve de otra, Linux otra, y la nativa de Java que viene por defecto con botoncitos azules. No dudo que exista una librería para que los jframes emulen la apariencia de la interfaz gráfica del sistema operativo Mac OS X.

  3. A las 24/8/09 17:23  

    Anonymous Anónimo ha dicho...

    Un administrador del blog ha eliminado esta entrada.

  4. A las 26/8/09 12:53  

    Blogger Sharon ha dicho...

    Hola !!
    Soy de Colombia, necesito un favor tuyo.. ¿Será que me puedes ayudar? Lo que pasa es que estoy trabajando con netbeans 6.5.1 y la BD esta hecha mysql (utilizo WampServer), pero no se como hacer la conexion, ademas utilizo apache tomcat... por favor si me puedes mandar un ejemplo de una aplicación web conectada a la BD te estaré muy agradecida...... Esta super esta página !! mi e-mail es: zakura0612@gmail.com

  5. A las 26/8/09 14:41  

    Blogger ooscarr ha dicho...

    Esto es lo que buscas. En vez de agregar la librería de PodstgreSQL, agregas la de MySQL JDBC Connection que está arriba. Después todo igual, salvo que en vez de jdbc:postgresql://... va jdbc:mysql://... Sigue los pasos y Ejecútalo.

    En vez de localhost, pones la IP del servidor de mysql (WampServer)

  6. A las 13/11/09 13:36  

    Anonymous Anónimo ha dicho...

    Hola tengo un Oracle 9i, logro hacer la conexion desde netbeans 6.7.1 y funciona pero al momento que quiero conectarme usando JSTL, pongo en el context.xml la sintaxis siguiente:


    name="jdbc/uigv_Oracle9i"
    auth="Container"
    type="javax.sql.DataSource"
    username="usuario"
    password="clave"
    driverClassName="oracle.jdbc.OracleDriver"
    url="jdbc:oracle:thin:@198.9.9.9:1521:orcl"
    maxActive="20" maxIdle="10" maxwait="-1"





    pero no me funciona, a que se debe?, gracias por la ayuda.

  7. A las 24/11/09 19:15  

    Anonymous Anónimo ha dicho...

    Hola esta super el tutorial pero me puedes indicar porque me sale error en esta línea sql:transaction dataSource="${bdatos}"

  8. A las 4/12/09 11:45  

    OpenID elblog ha dicho...

    Acabo de escribir acerca de usar Hibernate. Los errores esos los veré cuando tenga tiempo.

Página principal

Publicidad