Foros del Web » Programación para mayores de 30 ;) » Java »

Conexion JSP y MySQL...

Estas en el tema de Conexion JSP y MySQL... en el foro de Java en Foros del Web. Bueno deseo hacer una conexion con JSP a MySQL, yo la he realizado en JAVA para escritorio, pero en JSP nose si seria lo mismo, ...
  #1 (permalink)  
Antiguo 23/05/2009, 02:33
 
Fecha de Ingreso: abril-2009
Ubicación: Venezuela
Mensajes: 106
Antigüedad: 15 años
Puntos: 0
Conexion SERVLET y MySQL...

Bueno deseo hacer una conexion con JSP a MySQL, yo la he realizado en JAVA para escritorio, pero en JSP nose si seria lo mismo, como se cargaria la libreria del conector?? Y ademas yo tengo creadas 2 clases, como las uso en el JSP?? Ya que una es dependiente de la otra??

Si me pueden dar un ejemplo de esta conexion estaria muy agradecido...

Saludos...

PS: Claro no solo la coneccion, sino como escribir y leer... Y disculpen tanta molestia...

Última edición por kaiser1313; 01/07/2009 a las 05:19 Razón: Cambio de Titulo
  #2 (permalink)  
Antiguo 08/06/2009, 16:16
 
Fecha de Ingreso: mayo-2009
Mensajes: 25
Antigüedad: 15 años
Puntos: 0
Respuesta: Conexion JSP y MySQL...

Hola te mando mi pagina completa yo estoy trabajando con netbeans si no le entiendes pues te mando un ejemplo mas sencillo.
para incluir las librerias de java.sql y las demas usas :

<%@ page import="java.util.Calendar" %>

Solo checa dode tengo los simbolos <%%> ese es el codigo java

aa
para los select yo uso un ResultSet
rs = pst.executeQuery(cadena);
para un insert uso
boolean = pst.execute(cadena);

Bueno ojala y le entiendas porque veras que no esta comentado

<%--
Document : listaHabitacion
Created on : 02-jun-2009, 23:25:16
Author : Chriss
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<%@ page import="java.util.Calendar" %>
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.DriverManager" %>
<%@ page import="java.sql.SQLException"%>
<%@ page import="java.sql.ResultSet" %>
<html>
<head>
<%
String fechaSalida;
int cantidadHuespedes;
Calendar fecha3 = Calendar.getInstance(); // para manejar la fecha de
String cadena = ""; // para ejecutar un query SQL
char fS[]; //almacena la fecha de salida
String diaS="",mesS="",anioS=""; //Variables para separar dias, mes, anio
Calendar fecha1 = Calendar.getInstance();//current date
int horaH = fecha1.getTime().getHours();
Calendar fecha2 = Calendar.getInstance(); //FechaSalida
%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="datosCliente.jsp">
<TABLE width="100%" BORDER=1>
<TR>
<TH width="17%"><span class="Estilo1">CLAVE</span></TH>
<TH width="20%"><span class="Estilo1">TIPO HABITACI&Oacute;N </span></TH>
<TH width="15%"><span class="Estilo1">DIAS DE ESTANCIA </span></TH>
<TH width="14%"><span class="Estilo1">PRECIO UNITARIO </span></TH>
<TH width="18%"><span class="Estilo1">PRECIO TOTAL </span></TH>
<TH width="18%">&nbsp;</TH>
</TR>
<%
Connection conn = null;
Statement pst = null;
ResultSet rs = null;
fechaSalida = String.valueOf(session.getAttribute("fechaSalida") ).trim();
cantidadHuespedes = Integer.parseInt(String.valueOf(session.getAttribu te("numeroHuespedes")).trim());
try {

Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/hotel4","root","root");
pst = conn.createStatement(rs.TYPE_SCROLL_INSENSITIVE,rs .CONCUR_UPDATABLE);

cadena =
"SELECT habitacion.`clave`, categoria.`tipo`,categoria.`tarifa` " +
"FROM habitacion, categoria " +
"WHERE habitacion.`categoria` = categoria.`clave` "+
"AND categoria.`cupo` >= " +cantidadHuespedes+
" AND habitacion.`clave` NOT IN "+
"( "+
"SELECT habitacion.`clave` "+
"FROM renta "+
"WHERE habitacion.`clave` = renta.`habitacion` "+
"AND renta.`fecha_salida` >= curdate() " +
" ) "+
"AND habitacion.`clave` NOT IN "+
"( "+
"SELECT habitacion.clave "+
"FROM reservacion "+
"WHERE habitacion.clave = reservacion.`habitacion` "+
"AND reservacion.`fecha_entrada` <= '" +fechaSalida+
"' ) "+
"ORDER BY tarifa ";
rs = pst.executeQuery(cadena);


fS = fechaSalida.toCharArray(); //Convierte la fecha a un arreglo de chars

anioS = anioS.concat(String.valueOf(fS[0]));
anioS = anioS.concat(String.valueOf(fS[1]));
anioS = anioS.concat(String.valueOf(fS[2]));
anioS = anioS.concat(String.valueOf(fS[3]));

mesS = mesS.concat(String.valueOf(fS[5]));
mesS = mesS.concat(String.valueOf(fS[6]));

diaS = diaS.concat(String.valueOf(fS[8]));
diaS = diaS.concat(String.valueOf(fS[9]));
if (horaH>=0 && horaH <8)
{
fecha1.set((fecha1.getTime().getYear()-100+2000),fecha1.getTime().getMonth(),fecha1.getTi me().getDate()-1,8,0,0);
}
else
{
fecha1.set((fecha1.getTime().getYear()-100+2000),fecha1.getTime().getMonth(),fecha1.getTi me().getDate(),8,0,0);
}
//Convert date passed as String in a Calendar.date data type
int hora = Integer.parseInt(String.valueOf(session.getAttribu te("hora")).trim());
int min = Integer.parseInt(String.valueOf(session.getAttribu te("minuto")));
fecha2.set(Integer.parseInt(anioS),Integer.parseIn t(mesS)-1, Integer.parseInt(diaS),hora,min,0);
session.setAttribute("fechaSalida1", fecha2.getTimeInMillis());
fecha3.set(Integer.parseInt(anioS),Integer.parseIn t(mesS)-1, Integer.parseInt(diaS),hora,min,0);
//Convierte a long en milisegundos las dos fechas para restarlas
long f1 = fecha1.getTimeInMillis();
long f2 = fecha2.getTimeInMillis();
//Substrac two dates in miliseconds
long diff = f2 - f1;
// Pasamos a días
//Convert miliseconds at days
long dias = diff / (1000 * 60 * 60 * 24) +1;
session.setAttribute("diasEstancia", dias);
while(rs.next()) {
String x = rs.getString(3);
float tarifa = Float.parseFloat(x);
%>
<TR><TD ALIGN="center">HLF-C45-<%= rs.getString(1) %></TD>
<TD><%= rs.getString(2) %></TD>
<TD ALIGN="center"> <%= dias%></TD>
<TD ALIGN="right">$ <%= tarifa %>0</TD>
<TD ALIGN="right">$ <%= tarifa * dias %>0</TD>
<TD ALIGN="center">
<input type="submit" name="<%= rs.getString(1) %>" value="Seleccionar" />
</TD>
</TR>
<% } %>
</TABLE>
<%
}
catch (SQLException xp)
{
out.println("Error SQL ...");
out.println(xp.getMessage());
}
catch (Exception ex)
{
out.println("Error");
out.println(ex.getMessage());
}
finally
{
if (rs != null) rs.close();
if (pst != null) pst.close();
if (conn != null) conn.close();
}
%>
</form>
</body>
</html>
  #3 (permalink)  
Antiguo 08/06/2009, 16:26
 
Fecha de Ingreso: mayo-2009
Mensajes: 25
Antigüedad: 15 años
Puntos: 0
Respuesta: Conexion JSP y MySQL...

A le resultado es un listado de las habtaciones disponible que hay en un hotel
  #4 (permalink)  
Antiguo 23/06/2009, 01:08
 
Fecha de Ingreso: abril-2009
Ubicación: Venezuela
Mensajes: 106
Antigüedad: 15 años
Puntos: 0
Respuesta: Conexion JSP y MySQL...

Ok lo estoy chequeando, aunque esta algo confuso por ser primera vez que lo veo el mysql en una jsp... Si tuvieses el ejemplo mas sencillo a mano y donde solo se hiciese la conexion y consulta sin agregar mas nada seria excelente, en verdad estoy urgidisimo ya que de esto depende mi trabajo de grado en la uni...
  #5 (permalink)  
Antiguo 23/06/2009, 08:48
Avatar de Gguer  
Fecha de Ingreso: abril-2009
Mensajes: 125
Antigüedad: 15 años
Puntos: 1
Respuesta: Conexion JSP y MySQL...

Mira, aquí tienes un ejemplo de cómo se conecta a una base de datos con JDBC. La bronca es que aquí usa Oracle pero no son más que 2 líneas las que tienes que cambiar para que sea con MySQL:

1. Cuando llamas al conector de la base de datos tienes que poner la ruta del conector como lo puso ChrissVN. Lo que está en el ejemplo que te doy lo sustituyes por esto:
Class.forName("com.mysql.jdbc.Driver");

2. Ahora para realizar la conexion con tu base de datos ya en forma, llamas al servidor donde se encuentra tu gestor de base de datos, en este caso MySQL que por defecto cuando lo instalas te coloca el 3306 como puerto inicial. "conexion" es un objeto de la clase Connection. En el ejemplo de ChrissVN "hotel4" es el nombre de su base de datos y "root" y "root" son el nombre de usuario y la clave de la sesion de MySQL, todo lo sustituyes por los nombres que tú estés manejando en tu aplicación. Esto es lo que tienes que sustituir en el ejemplo que te dí inmediatamente después de llamar al conector:
conexion = DriverManager.getConnection("jdbc:mysql://localhost:3306/hotel4","root","root");

Eso es lo necesario para conectarse a tu base de datos. El ejemplo que yo te pongo es de un servlet, pero como ya se ha comentado mucho por este foro además de ser verdad, la JSP termina siendo un servlet. Sólo analiza lo que te he puesto en el servlet y cómo lo ha conectado el colega de arriba.

Tienes que tener en cuenta que además de esto tienes que colocar el conector en tu CLASSPATH y en las librerías externas del jdk y de tu servidor, en este caso, yo uso tomcat.

Ojalá te sirva y me haya explicado

Saludos

Última edición por Gguer; 23/06/2009 a las 08:54
  #6 (permalink)  
Antiguo 23/06/2009, 16:02
 
Fecha de Ingreso: abril-2009
Ubicación: Venezuela
Mensajes: 106
Antigüedad: 15 años
Puntos: 0
Respuesta: Conexion JSP y MySQL...

Estuve pensando lo de hacer la conexion con un servlet mejor (ya que con las JSP he tenido muchos mas problemas que con los servlets) y pues me gustaria ver tu ejemplo de servlets con conwxion a base de datos, sino es mucho pedir claro...
  #7 (permalink)  
Antiguo 23/06/2009, 20:15
Avatar de Gguer  
Fecha de Ingreso: abril-2009
Mensajes: 125
Antigüedad: 15 años
Puntos: 1
Respuesta: Conexion JSP y MySQL...

Si le das clic a la palabra "aquí" de mi post anterior podrás notar que te llevará a una nueva página en donde encontrarás un ejemplo de conexión con servlet, toda la explicación que te puse fue en base al link, pero creo que no me leíste
  #8 (permalink)  
Antiguo 23/06/2009, 20:45
 
Fecha de Ingreso: abril-2009
Ubicación: Venezuela
Mensajes: 106
Antigüedad: 15 años
Puntos: 0
Respuesta: Conexion JSP y MySQL...

Jajaja, ok si te habia leido, mas no interpretado, es que lei rapido pero ya lo estoy viendo... En un primer momento pense que hablabas de cosas que si fuese con servlet y tal, pero ya veo que es con servlets...

Gracias cualquier duda me tendras por aqui nuevamente...
  #9 (permalink)  
Antiguo 23/06/2009, 21:15
 
Fecha de Ingreso: abril-2009
Ubicación: Venezuela
Mensajes: 106
Antigüedad: 15 años
Puntos: 0
Respuesta: Conexion JSP y MySQL...

Una duda que tengo a ver si me puedes ayudar, yo quiero que mi servlet me de una pagina de respuesta que diga "Login Exitoso", en eso no hay problema, el problema es que tambien quiero que automaticamente me redirija a la pagina que deseo...

Encontre que con esta etiqueta en html se puede lograr <meta http-equiv="Refresh" content="1;url=DIRECIONDEMIWEB"> Pero cuando lo uso en el servlet de esta manera salida.println("<meta http-equiv="Refresh" content="1;url=DIRECCIONDEMIWEB">"); me da un error en la linea, como deberia colocarlo en el servlet??
  #10 (permalink)  
Antiguo 23/06/2009, 23:15
Avatar de Gguer  
Fecha de Ingreso: abril-2009
Mensajes: 125
Antigüedad: 15 años
Puntos: 1
Respuesta: Conexion JSP y MySQL...

Lo más seguro es que se deba a que usas comillas dobles dentro de otras comillas, es decir, dentro de las comillas del método println usas otras comillas para poner la direccion de tu web y para poner refresh. Lo que se hace en estos casos es "escapar" esos caracteres para que cada comilla sea independiente de las otras. El símbolo que escapa a las comillas dobles es \" y entonces tu línea sería así:
salida.println("<meta http-equiv=\"Refresh\" content=\"1;url=DIRECCIONDEMIWEB\">");

Otra forma sería inciar con comillas simples (' ') pues ya que dentro de éstas puedes colocar comillas dobles.
Creo que esa es la solución
Saludos.
  #11 (permalink)  
Antiguo 23/06/2009, 23:49
 
Fecha de Ingreso: abril-2009
Ubicación: Venezuela
Mensajes: 106
Antigüedad: 15 años
Puntos: 0
Respuesta: Conexion JSP y MySQL...

Con eso que me has dicho ya no me da el error de linea, pero ahora mi servlet no envia en la pagina de respuesta dicha linea, es como si no existiera, cuando me muestra el contenido del servlet en el navegador, le doy a ver codigo fuente y esa linea que he agregado no esta...

Porque puede ocurrir??
  #12 (permalink)  
Antiguo 24/06/2009, 00:04
Avatar de Gguer  
Fecha de Ingreso: abril-2009
Mensajes: 125
Antigüedad: 15 años
Puntos: 1
Respuesta: Conexion JSP y MySQL...

Por qué no pones el encabezado de tu servlet para ver cómo es que estás imprimiendo porque sino pasaremos mucho rato aquí adivinando
  #13 (permalink)  
Antiguo 24/06/2009, 00:17
 
Fecha de Ingreso: abril-2009
Ubicación: Venezuela
Mensajes: 106
Antigüedad: 15 años
Puntos: 0
Respuesta: Conexion JSP y MySQL...

Código:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import javax.comm.*;

public class ServletSerial extends HttpServlet
{
    static Enumeration portList;
    static CommPortIdentifier portId;
    static String messageString;
    static SerialPort serialPort;
    static OutputStream outputStream;

    @Override
    protected void doPost(HttpServletRequest peticion, HttpServletResponse respuesta) throws ServletException, IOException
    {
        String motor1 = peticion.getParameter("motor1");
        String motor2 = peticion.getParameter("motor2");
        String motor3 = peticion.getParameter("motor3");
        String motor4 = peticion.getParameter("motor4");
        String motor5 = peticion.getParameter("motor5");
        String motor6 = peticion.getParameter("motor6");
        messageString = motor1+motor2+motor3+motor4+motor5+motor6;
        portList = CommPortIdentifier.getPortIdentifiers();
        while (portList.hasMoreElements())
        {
            portId = (CommPortIdentifier) portList.nextElement();
            if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL)
            {
                if (portId.getName().equals("COM2"))
                {
                // if (portId.getName().equals("/dev/term/a")) {
                    try
                    {
                        serialPort = (SerialPort)
                        portId.open("AplServlerSerial", 2000);
                    } catch (PortInUseException e) {}
                    try
                    {
                        outputStream = serialPort.getOutputStream();
                    } catch (IOException e) {}
                    try
                    {
                        serialPort.setSerialPortParams(9600,
                        SerialPort.DATABITS_8,
                        SerialPort.STOPBITS_1,
                        SerialPort.PARITY_NONE);
                    } catch (UnsupportedCommOperationException e) {}
                    try
                    {
                        outputStream.write(messageString.getBytes());
                    } catch (IOException e) {}
                }
            }
        }

        respuesta.setContentType ("text/html");
		PrintWriter salida = respuesta.getWriter();
        salida.println("<?xml version = \"1.0\"?>");
		salida.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD " + "XHTML 1.0 Strict//EN\" \"w3.org" +"/TR/xhtml1/DTD/xhtml1-strict.dtd\">");
		salida.println("<html xmlns = \"w3.org/1999/xhtml\">");
		salida.println("<head>");
		salida.println("<title>Confirmacion de Envio Correcto</title>");
                salida.println("<meta http-equiv=\"Refresh\" content=\"1;url=DIRECCION/cpej5/servlets/ServletSerial.html\">");
		salida.println("</head>");
		salida.println("<body>");
		salida.println("<h1>Informacion Enviada Correctamente</h1>");
        salida.println("<h3>Espere la Redireccion</h3>");
		salida.println("</body>");
		salida.println("</html>");
		salida.close();
    }
    @Override
    protected void doGet(HttpServletRequest peticion, HttpServletResponse respuesta) throws ServletException, IOException
    {
        doPost(peticion, respuesta);
    }
}
Alli esta todo el codigo de el primer servlet que estoy haciendo, este es para envios serial, luego viene el de Conexion a base de datos...
  #14 (permalink)  
Antiguo 24/06/2009, 00:21
Avatar de Gguer  
Fecha de Ingreso: abril-2009
Mensajes: 125
Antigüedad: 15 años
Puntos: 1
Respuesta: Conexion JSP y MySQL...

Cambia esta línea: salida.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD " + "XHTML 1.0 Strict//EN\" \"w3.org" +"/TR/xhtml1/DTD/xhtml1-strict.dtd\">");

por esta otra:
salida.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">");

y cuentas que pasó
  #15 (permalink)  
Antiguo 24/06/2009, 00:30
 
Fecha de Ingreso: abril-2009
Ubicación: Venezuela
Mensajes: 106
Antigüedad: 15 años
Puntos: 0
Respuesta: Conexion JSP y MySQL...

Perfecto con esa si me ha funcionado correctamente... Porque habia que cambiar la linea?? Otra cosa, como hago para que el tiempo de redireccion sea mas corto o mas largo??
  #16 (permalink)  
Antiguo 24/06/2009, 00:43
Avatar de Gguer  
Fecha de Ingreso: abril-2009
Mensajes: 125
Antigüedad: 15 años
Puntos: 1
Respuesta: Conexion JSP y MySQL...

1. Cuando inicias tu document html con doctype le estás diciendo a tu navegador que tan estricto quieres que se comporte al leer tu documento. Tú le habías puesto un comportamiento estricto, por lo que no aceptaba la directiva meta pero cuando cambiaste al otro tipo ya te lo aceptó porque el segundo es menos restrictivo.

2. En la línea de la directiva meta tienes el número uno. Ese es el tiempo, en segundos, que tardará tu página en redireccionarte hacia la otra página.
  #17 (permalink)  
Antiguo 24/06/2009, 00:47
 
Fecha de Ingreso: abril-2009
Ubicación: Venezuela
Mensajes: 106
Antigüedad: 15 años
Puntos: 0
Respuesta: Conexion JSP y MySQL...

Excelente amigo, muchas gracias por tu ayuda me ha sido demasiado util... Otra cosa, no tendras idea de porque el envio serial en este servlet no me funciona?? Nunca lo has intentado? El servlet carga y todo pero en las prueba que hago noto que no se recibe nada por puerto serial y deberia...
  #18 (permalink)  
Antiguo 24/06/2009, 01:04
Avatar de Gguer  
Fecha de Ingreso: abril-2009
Mensajes: 125
Antigüedad: 15 años
Puntos: 1
Respuesta: Conexion JSP y MySQL...

No, lo siento, no he trabajado así. Ojalá encuentres rápida respuesta en tu otro post.
Saludos
  #19 (permalink)  
Antiguo 24/06/2009, 01:09
 
Fecha de Ingreso: abril-2009
Ubicación: Venezuela
Mensajes: 106
Antigüedad: 15 años
Puntos: 0
Respuesta: Conexion JSP y MySQL...

Bueno no hay problema, mas bien me has ayudado de sobra... Muchisimas gracias, cualquier cosa con la conexion con la base de datos pues volvere a usar este mismo post, espero no tener problemas con ella y que todo me vaya de perlas, pues yo he usado base de datos con java igual que la comunicacion serial, pero nunca desde la web o con servlets, siempre desde escritorio, por eso ando enredado...

Gracias nuevamente y saludos...
  #20 (permalink)  
Antiguo 01/07/2009, 04:30
 
Fecha de Ingreso: abril-2009
Ubicación: Venezuela
Mensajes: 106
Antigüedad: 15 años
Puntos: 0
Respuesta: Conexion SERVLET y MySQL...

Problema resuelto, base de datos funcionando al 100% con el servlet y desde cualquier ordenador cliente... Gracias por su colaboracion...

Última edición por kaiser1313; 02/07/2009 a las 06:57
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 15:26.