Alumna: Keren Monge Cid
Materia: Web Application Development Maestro: Alejandro S. Álvarez Cifuentes Grupo: 3CM2
2do Departamental
Conexión de Mysql con NetBeans
Objetivo
Realizar un programa que realice la conexión con una base de datos en Mysql vía web utilizando el IDE NetBeans y el servidor Tomcat.
Introducción
Para realizar esta práctica se debe tener instalado el gestor de base de datos Mysql y configurado el servidor Tomcat con NetBeans y conocimientos básicos del lenguaje sql.
Procedimiento:
1. Se debe crear una base de datos en Mysql la cual utilizaremos para acceder con NetBeans, en este caso se creó la base “Usuarios” , se creó la tabla usuario con los campos “nombre” y “pass” y se le agregó un registro.
3. Ahora se crea un proyecto con categoría Java Web, seleccionando en Web Application, configurando para ser usado con Tomcat, y se crea una clase que extienda de Servlet. 4. Lo siguiente seria realizar la codificación, para conectar la base de datos “usuarios” y
realizar consultas.
Lo que se realizó fue una página JSP que pide el nombre y contraseña de un usuario registrado en la base de datos “usuarios”, al dar clic en el botón Iniciar Sesión se conecta con el la clase que extiende de Servlet en la cual se realiza la consulta y la comparación de datos y se re-direcciona a otra página que muestra los datos del usuario, sino coincidieron no muestra nada.
A continuación se despliegan los códigos de las clases que se utilizaron para esta práctica.
Clase que conecta con la base de datos, ConexDB.java
import java.sql.*;
import java.util.logging.Level; import java.util.logging.Logger; public class ConexDB {
private Connection conexion; protected Statement instruccion;
protected boolean conectadoABaseDatos = false; protected boolean result = false;
protected ResultSet conjres=null; protected boolean band = false; String mensajeEXC;
public ConexDB(){ }
boolean conectar(String controlador, String url, String nombreUsuario, String pass){ try {
Class.forName( controlador );
conexion = DriverManager.getConnection(url, nombreUsuario, pass); instruccion = conexion.createStatement();
conectadoABaseDatos = true; } catch (ClassNotFoundException ex) {
mensajeEXC ="No se pudo registrar el controlador";
Logger.getLogger(ConexDB.class.getName()).log(Level.SEVERE, null, ex); }catch (SQLException ex) {
mensajeEXC ="No se pudo conectar a la Base de Datos";
Logger.getLogger(ConexDB.class.getName()).log(Level.SEVERE, null, ex); }
String establecerConsulta(String consulta){ String s = "";
try{
conjres = instruccion.executeQuery( consulta );
ResultSetMetaData metadatos = conjres.getMetaData(); int numeroDeColumnas = metadatos.getColumnCount(); if(conjres.next())
for(int i=1; i<=numeroDeColumnas; i++){ s += (String)conjres.getObject(i)+" "; }
} catch (SQLException ex) {
Logger.getLogger(ConexDB.class.getName()).log(Level.SEVERE, null, ex); }
return s; }
void establecerUpdate(String consulta){ try{
int i = instruccion.executeUpdate(consulta); System.out.println(i);
}
catch (SQLException ex) {
Logger.getLogger(ConexDB.class.getName()).log(Level.SEVERE, null, ex); }
}
void desconectarDB(){ try{
instruccion.close(); conexion.close(); }
catch(Exception e){e.printStackTrace();} }
}
Clase que sirve de interfaz entre el servlet y la ConexDB.java import java.sql.ResultSet;
import java.sql.Statement; public class InterfazDB {
static final String CONTROLADOR = "com.mysql.jdbc.Driver";
static final String URL_BASEDATOS = "jdbc:mysql://localhost:3306/usuarios"; static final String NOMBREUSUARIO = "root";
protected ResultSet resulset=null; String consulta, result;
ConexDB conectar;
boolean BDconectada = false; boolean exito = false;
public InterfazDB(){
conectar = new ConexDB();
if(conectar.conectar(CONTROLADOR, URL_BASEDATOS, NOMBREUSUARIO, CONTRASENIA)){ BDconectada = true;
} }
String consulta(String consulta){
return conectar.establecerConsulta(consulta); }
}
Clase que extiende de HttpServlet la cual se encarga de realizar una consulta a la base de datos y mostrar el resultado.
MiServlet.java import java.io.*;
import javax.servlet.ServletException; import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;
public class MiServlet extends HttpServlet {
String consulta, result="";// ="SELECT * FROM usuario"; InterfazDB DB;
String in;
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, ClassNotFoundException {
response.setContentType("application/octet-stream"); }
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter();
if(DB.BDconectada){
consulta = "SELECT nombre,pass FROM usuario WHERE nombre='"+request.getParameter("usr")+"' AND pass='"+request.getParameter("pass")+"'"; result = DB.consulta(consulta);
out.println("<head>");
out.println("<title>Sesion</title>"); out.println("</head>");
out.println("<body>");
out.println("<h1>usuario encontrado</h1>"); out.println("<h1>"+result+"</h1>");
out.println("</body>"); out.println("</html>"); }
}
public void init(){
DB = new InterfazDB(); }
public String getServletInfo() { return "Short description"; }// </editor-fold>
}
Pagina JSP que pide los datos que serán enviados a MiServlet.java <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html>
<html> <head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<%--<link rel="StyleSheet" media="screen" type="text/css" href="estilo.css">--%> <title>Inicio de sesión</title>
</head> <body>
<fieldset id="registrousuario">
<form action="MiServlet" method="POST"> <legend><p>Iniciar Sesión</p> </legend> <label for="user"> Usuario:</label>
<input class="texto" type="text" name="usr"/><br/> <br/><label for="pass"> Contraseña:</label>
<input class="texto" type="password" name="pass"/><br/>
<input class="botonenviar" type="submit" value="Iniciar sesión" name="login" /> </form>
Ejecución
Se ejecuta el proyecto desde NetBeans y muestra la página inicial:
Se introducen datos correctos y se presiona el botón:
Se re-direcciona a otra pagina que se creó en la clase que extiende de Servlet que muestra los datos encontrados en la base de datos:
Conclusión