26
abr
10

JSP + MySQL mi primera conexión

Bueno esta es otra actividad realizada en la FITCO para Alex Osorio.
Este es un pequeño ejemplo de conexión a bases de datos con JSP y MySQL.

Para poder conectar se a MySQL se necesita un driver, el cual puedes desacargar en la pagina de MySQL http://www.mysql.com/downloads/connector/j/5.1.html

y crear la carpeta web-inf, como se explicó en entradas anteriores

la estructura del proyecto sería algo muy parecido a

El ejemplo consta de 2 paginas la primera pagina:

donde se conecta a la base de datos
index.jsp

<!-- en la directiva page observamos el import="java.sql.*"-->
<!-- esta es la analogia en java a importar paquetes y/o clases-->
<!-- en el paquete java.sql.* estan las clases necesarias-->
<!-- para la conexion a la bd mysql -->
<%@ page language="java" import="java.sql.*" %>
<%
	/*conexion sera nuestra conexion a la bd*/
	Connection conexion=null;

	String mensaje="";

	/*parametros para la conexion*/
	String driver = "com.mysql.jdbc.Driver";
	String url = "jdbc:mysql://localhost:3306/prueba";
	String usuario = "root";
	String clave = "";
	/*procedimiento de la conexion*/
	try{
		Class.forName(driver);
		conexion = DriverManager.getConnection(url,usuario,clave);

		/*guardando la conexion en la session*/
		session.setAttribute("conexion",conexion);
	} catch (Exception ex){
		mensaje=ex.toString();
	}

	mensaje="conectado";
	if(conexion.isClosed()){
		mensaje="desconectado";
	}
%>
<html>
	<head>
		<title>EJERCICIO 03 CONEXION BD CON JSP</title>
	</head>
	<body>
		<form action="desconectar.jsp" method="post">
			<input name="estado" type="text" value="Estado: <%=mensaje%>"/>
			<input type="submit" value="Desconectar"/>
		</form>
	</body>
</html>

la segunda pagina:
donde se extrae la conexión de la session y se cierra

desconectar.jsp

<!-- en la directiva page observamos el import="java.sql.*"-->
<!-- esta es la analogia en java a importar paquetes y/o clases-->
<!-- en el paquete java.sql.* estan las clases necesarias-->
<!-- para la conexion a la bd mysql -->
<%@ page language="java" import="java.sql.*" %>
<%
	/*conexion sera nuestra conexion a la bd*/
	Connection conexion=null;

	String mensaje="";

	/*rescatando la conexion de la session*/
	conexion=(Connection)session.getAttribute("conexion");

	/*cerrando la conexion*/
	conexion.close();

	mensaje="conectado";
	if(conexion.isClosed()){
		mensaje="desconectado";
	}
%>
<html>
	<head>
		<title>EJERCICIO 03 CONEXION BD CON JSP</title>
	</head>
	<body>
		<form action="index.jsp" method="post">
			<input name="estado" type="text" value="Estado: <%=mensaje%>"/>
			<input type="submit" value="Conectar"/>
		</form>
	</body>
</html>

About these ads

47 Responses to “JSP + MySQL mi primera conexión”


  1. 1 geis garcia
    agosto 3, 2010 en 4:51 pm

    hola sera que me puedes ayudar yo trabajo un poco con php pero ahora le quiero dar tambien a jsp resulta lo siguiente nose como pasar parametros de un jsp a un bean para imprimir luego en un jsp se como hacerlo con servlet pero no me parece correcto ya que este imprime el codigo html y no deberia ser asi me puedes dar alguna idea de extraer datos de una tabla y mostrarlos sin usar servlet

    • agosto 4, 2010 en 6:48 am

      ¿estas hablando de pasar datos de un html a un bean? te recomiendo primero te pases por aquí http://ingeniods.wordpress.com/tutorial-jsp/ para ver si hay algo que te sirva

  2. 3 geis garcia
    agosto 4, 2010 en 4:47 pm

    pues muy chevere men tus tutoriales pero el caso es que yo quiero por ejemplo si yo tengo ne un bean una cadena de conexion dodne conecto a una base de datos y un metodo o funcion donde haga una consulta que en es te caso es un .class el bean y en dicha consulta yo quiero que me haga un select por un parametro que yo envie desde un formulario que este en un .html o .jsp como hago para capturar ese parametro que es el que va a hacer la condicion de la consulta en el bean por que quisiera que la parte de codigo de logica o controlador este aparte y lo que sea vista aparte

    • agosto 5, 2010 en 1:52 pm

      sigo con mi idea…

      man la configuración de la consulta esta en la pagina es solo obtener la configuración y ejecutar la consulta en otras entradas se hacen consultas mas especificas esta es solo una pequeña pero te recomiendo que veas otras entradas

  3. 5 Wisge-87
    febrero 13, 2011 en 8:39 pm

    Man que buen tutorial me sacaste de un apuro! esta genial! muy buen aporte! probado sobre Ubuntu y a la primera! gracias! saludos

  4. 6 rob
    febrero 24, 2011 en 10:26 am

    hey que más!

    asunto: tengo que conectar un servlet con una base de datos
    cuales son las clases que debo hacer

    tengo una jsp donde estan los botones y eso
    otra es el servlet, que me hace falta para conectar a base de datos
    … me dijeron que la clase conection etc….

    una mano con eso por favor

    gracoas

  5. 8 Deisy
    abril 19, 2011 en 11:27 am

    Hola, la verda estoy haciendo un proyecto de un sistema de facturacion, yo trabajo con Tomcat, jsp y mysql, ya puedo hacer la conexion, pero se me ha dificultado hacer los select para guardar y listar varios datos de un formulario. te agradeceria mucho si me puedes colaborar ya que he buscado pero no he podido encontrar una base, gracias.

    • abril 19, 2011 en 4:38 pm

      Deisy si tu problema solo es con los select y esas cosas puedes Descargarte JMerlin en 4shared hay creo que 4 compilados de JMerlin 4.3.0.1 y un video de como funciona (el vídeo es de la versión superior pero para el caso no importa), si las consultas van mas allá de las que JMerlin genera yo te puedo colaborar

  6. 10 juanntorres
    abril 27, 2011 en 8:49 pm

    Hola, una pregunta, normalmente uso mis propias clases para esto pero siguiendo tu ejemplo, intenté conectarme a mi base de datos y los métodos close() isclosed() me generan error, le puse un Exception y me muestra que esos comandos me tiran un null, quisiera saber porque puede estar pasando eso.

    ¿Otra pregunta de concepto, cuando hablamos de beans es lo mismo que hablar de clases? por ejemplo yo tengo todas mis clases en jar y las tengo dividadas por componentes, me explico el componente de seguridad tienen unas 10 clases aproximadamente, el componente de administracion tiene como 5 y asi tengo estructurado mi sw. Lo bueno es que esos componentes se pueden usar para Web, para escritorio porque son independientes de la parte visual. compilados estos componentes me crea seguridad.jar, administration.jar, etc y en cada uno de ellos se tienen las clases que intervienen en esos procesos. Esto serían beans? o estoy perdido en el concepto de beans?

    Gracias

    • abril 28, 2011 en 8:17 am

      un bean es una clase pero no toda clase es un bean, un bean es una clase de modelo por ejemplo Persona, Empleado serían beans, pero una clase VentanaPersona no sería un bean, lo de la exception tendría que verlo en contexto para poder responder y el nombre de la exception especifica.

      • 12 juanntorres
        abril 28, 2011 en 1:34 pm

        osea que un bean es una clase que solo recibe y devuelve información?.

        Mis clases son como dices: personas, documentos, seguridad según lo que se haga.

        gracias

  7. 13 juanntorres
    abril 27, 2011 en 8:53 pm

    Otra cosa, como siempre he trabajado en SQL server entonces al proyecto le agrego en librerías el driver de la base de datos sqlserver2005. En mySQL debo hacer lo mismo con el driver de la base de datos de agregarla a la librería de mi proyecto?

    gracias

    • abril 28, 2011 en 8:19 am

      si hay que agregar las bibliotecas hay pongo el enlace de donde la descargué

      • 15 juanntorres
        abril 28, 2011 en 1:31 pm

        gracias, que bueno este tutorial

  8. 16 juanntorres
    abril 27, 2011 en 9:06 pm

    Hola, con el problema de la conexión ya lo arreglé. En donde pone uno el nombre del servidor que por defecto se pone localhost, yo pongo el nombre del mio que se llama “armar”, pero muy extraño no conecta, por eso devuelve null, pero cuando lo cambio a localhost funciona de maravilla. el nombre del servidor lo uso con las conexiones a SQLserver y funciona perfecto, ¿porque no me funciona en mysql con el nombre del servidor?

    Gracias

    • abril 28, 2011 en 8:21 am

      ha, eso se debe a la naturaleza de la conexión entre MySQL y SQLServer, porque en SQLServer uno le da nombre al servidor de base de datos (aparte del nombre de dominio o ip) pero en MySQL lo que le damos nombre es al equipo (ruta, nombre de dominio o IP)

      • 18 juanntorres
        abril 28, 2011 en 1:30 pm

        si mi equipo se llama ARMAR, como debo poner el nombre en la conexion para que me funcione?
        gracias

  9. 19 enrique
    mayo 2, 2011 en 8:25 pm

    hola oye disculpa una pregunta soy nuevo en esto de la programacion web y no entiendo bien lo de las conexiones de la bd con las paginas html amm es con las jsp mm pero tambien ocupamos java y no se como hacerlo mm el ejemplo q pusiste es para hacer la conexion no?? pero eso es lo q hace con todas las bd o solo con el ejmeplo que pones??

    • mayo 11, 2011 en 7:29 am

      es para realizar conexiones a bases de datos mysql, ya que cada base de datos tiene su propio driver, y dentro de las bases de datos mysql cada una tiene su propia estructura así que si es solo para la que está en el ejemplo, la idea es que lo adapten a sus necesidades.

  10. 21 Enrique López
    julio 2, 2011 en 11:20 pm

    De nuevo yo JEJEJE
    ahora con algo de AUTOCOMMIT y eso de lo de la BD en MYSQL
    Mira la cuestión es simple tengo una tabla de usuarios donde se dan de alta obviamente registros de usuarios la tabla tiene una columna de “correo” donde obvio no se puede repetir el correo de un usuario peroooooooooo…. cuando doy exactamente de alta dos usuarios al mismo tiempo agrega a los dos correos.
    para esto existe una senetencia “IF” que funciona de lujo si agrego usuario por usuario pero si agrego los dos como menciono arriba no funciona jaja y agrega los dos me dijeron que era con el commit y el rollback espero me puedan ayudar thanks.

    • julio 3, 2011 en 8:16 pm

      Bueno te explico algo… SQL es un lenguaje de 4ta generación, y lo que tratas de hacer es bajar una generación y realizar la verificación, lo que te recomiendo es más simple marca el campo email como único en tu base de datos y te lanzara una SQLException al tratar de realizar el segundo registro

      • 23 Enrique López
        julio 3, 2011 en 9:39 pm

        oye otra preguntilla y como soluciono que mientras un registro se esta utilizando(modificando , eliminando) bloquee las altas o las bajas hasta que termine de realizar la modificación
        Espero haberme explicado

  11. 24 Enrique López
    julio 6, 2011 en 6:37 am

    Encerio me urge esa respuesta por favor ayuda

    • julio 6, 2011 en 7:41 am

      pues en bases de datos Oracle se puede hacer, pero en mysql no conozco el método, yo me invente uno que es generar un md5 del registro que estoy modificando, por ejemplo:

      una consulta de nombre y clave de la tabla usuarios.

      select nombre, clave from usuarios where id = 100;

      yo lo hago así

      select nombre, clave, md5(select * from usuarios where id = 100) as llave from usuarios where id = 100;

      al momento de actualizar recibo el md5

      update usuarios
      set clave = ‘miclave’, nombre= ‘minombre’
      where
      id=100
      and
      md5(select * from usuarios where id = 100) = ‘md5 enviado’.

      de está manera al momento de actualizar si un campo ha sido modificado el md5 será diferente y la actualización no se ejecutará.

      podrías lanzar una excepción y así decirle al usuario por que no se ha actualizado, sería un pequeño procedimiento, y sería mejor y mas robusto, eso haría yo.

  12. 26 Enrique López
    julio 6, 2011 en 1:04 pm

    A MUCHAS GRACIAS EN VERDAD TE LO AGRADESCO

  13. septiembre 26, 2011 en 8:40 pm

    Primero que todo, como puedo crear una tabla en MySQL, luego guardarla y poder realizar la conexión que me plantea en el código fuente. El AppServer tiene una interfaz que permite crear una tabla lo más facil posible, como lo hago en Apache Tomcat?? Cuando dice String url = “jdbc:mysql://localhost:3306/prueba”; a que base de datos se refiere? donde se encuentra? como la creo? Gracias…

    • septiembre 27, 2011 en 4:49 pm

      Primero tienes que descargar MySQL e intalarlo.
      Para trabajar con la base de datos puedes hacerlo a código, o con un administrador yo uso MySQL Workbench, aunque también puedes usar HeidiSQL.

      la configuración de la cadena de conexión es esta:

      jdbc:mysql://localhost:3306/prueba
      tipo de conexión=jdbc:mysql
      dirección del host=//localhost:3306
      base de datos=/prueba

  14. 29 pistacia
    diciembre 6, 2011 en 9:57 pm

    Me ha ido de p.m., muy agradecida!

    • diciembre 7, 2011 en 8:04 am

      Nunca me habían agradecido de una manera tan….. sincera.

      Gracias a ti por visitar Ingenio DS

  15. enero 17, 2012 en 6:03 pm

    Men a un no puedo ejecutar el ejemplo que has puesto siempre este error:

    Ha sucedido una excepción al procesar la página JSP /index.jsp en línea 29

    26: }
    27:
    28: mensaje=”conectado”;
    29: if(conexion.isClosed()){
    30: mensaje=”desconectado”;
    31: }//*/
    32: %>

    • enero 18, 2012 en 11:11 am

      ¿cual es la exception que te sale?

      • 33 jonhy412
        enero 22, 2012 en 2:16 pm

        yo tengo el mismo problema y aparece la exception org.apache.jasper.JasperException

      • enero 23, 2012 en 8:57 am

        pero… ¿cual es la excepcion completa?

  16. febrero 11, 2012 en 12:18 pm

    tengo el mismo error anterior :

    type Exception report

    message

    description The server encountered an internal error () that prevented it from fulfilling this request.

    exception

    org.apache.jasper.JasperException: An exception occurred processing JSP page /ejercicio03/index.jsp at line 29

    26: }
    27:
    28: mensaje=”conectado”;
    29: if(conexion.isClosed()){
    30: mensaje=”desconectado”;
    31: }
    32: %>

    Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

    root cause

    java.lang.NullPointerException
    org.apache.jsp.ejercicio03.index_jsp._jspService(index_jsp.java:91)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

    • febrero 11, 2012 en 4:15 pm

      solucionado. lo unico es que me falto parar el tomcat y volverlo a arrancar…

      • febrero 12, 2012 en 11:54 am

        un paso de no pasar por alto, reiniciar la plataforma de despliegue en cada cambio

  17. 38 Javier
    marzo 9, 2012 en 9:51 am

    Hola, consulta:
    Tengo creado un applet con conexión a la base de datos, al probar el applet funciona todo correctamente pero al implementarlo en un html no logro realizar la conexión con la base de datos y no me realiza ninguna operación con la base.

    El applet tiene certificación y firma pero aún así no me funciona con html.

    ¿Abra algo que falte?

    Agradezco tu ayuda.

    • marzo 30, 2012 en 11:33 am

      estuve un mes por fuera, pero el problema pude ser que los applets siempre se ejecutan como local

  18. 40 Javier Flores
    abril 19, 2012 en 3:43 am

    Hola me gustaría saber cómo insertar datos utilizando esta arquitectura en la base de datos algún ejemplo de código que tengas… muchas gracias

    • abril 19, 2012 en 8:36 am

      Aquí ya hay un ejemplo de inserción de datos puede que te sirva, de todas formas en el resto del blog hay varias cosas http://ingeniods.wordpress.com/2010/05/07/mi-primera-aplicacion-jsp/

  19. 42 Alan Rodríguez
    abril 21, 2012 en 5:35 pm

    Hola que tal, disculpa tienes idea de por que me sale esta excepcion, tal como lo baje lo puse en webapps:

    type Informe de Excepción

    mensaje

    descripción El servidor encontró un error interno () que hizo que no pudiera rellenar este requerimiento.

    excepción

    org.apache.jasper.JasperException: java.lang.NullPointerException
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    causa raíz

    java.lang.NullPointerException
    org.apache.jsp.index_jsp._jspService(index_jsp.java:91)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    nota La traza completa de la causa de este error se encuentra en los archivos de diario de Apache Tomcat/7.0.26.

    de antemano gracias.

    • abril 23, 2012 en 12:58 pm

      para eso se necesita la traza completa del error

  20. 44 Daniel Cels
    mayo 4, 2012 en 12:51 pm

    Hola!

    Que tal compañero de la vida xd.

    Esta chevere el post, me gusto pero tengo una duda muy dudosa jejeje

    Como podría hacer esta misma conexión a la bd pero usando un paquete de clases java, es decir que no sea desde el index como tal y haga referencia a una clase digamos conexionbd.

    ¿Como lo podría hacer?

    • mayo 4, 2012 en 4:31 pm

      en otra parte del blog ya se utiliza de la manera como quieres revisa esto http://ingeniods.wordpress.com/2010/05/07/mi-primera-aplicacion-jsp/

  21. 46 Jose Alejandro Mercado
    noviembre 6, 2013 en 2:59 pm

    Saludos ingeniods..
    Tengo un proyecto en jsp y trabajo con tomcat, ya compre el hosting y el dominio y todo, pero no se como hacer para montar mi proyecto en la web con cpanel. He investigado bastantemente y la verdad nada de lo que he mirado me sirve para montar mi pagina, sera que me puedes explicar paso a paso como hacerlo???.. ahh otra cosa intente montar los archivos con el cpanel pero no me funciona y todo lo que escuentro me lo explican con FTB.. Agradeceria mucho tu pronta respuesta..


Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s


I+Ds

Dudas consultas
Facebook
Twiter
Google +

Escribe tu dirección de correo electrónico para suscribirte a este blog, y recibir notificaciones de nuevas publicaciones por correo.

Únete a otros 339 seguidores

Redes Sociales y Archivos

Entradas

abril 2010
L M X J V S D
« mar   may »
 1234
567891011
12131415161718
19202122232425
2627282930  

IngenioDS en twiter


Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 339 seguidores

A %d blogueros les gusta esto: