SlideShare una empresa de Scribd logo
1 de 29
Descargar para leer sin conexión
INSTITUTO TECNOLÓGICO DE OAXACA
Base de Datos y Tecnologías Web
Interconexión de una BD a
una aplicación Web
Alumna: Pattzy Rosario Montero García
INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN
WEB
3-4-2013
1 REQUISITOS
 Tener Instalado Netbeans IDE 7.3 versión Completa
o Puede descargarlo de la siguiente url https://netbeans.org/downloads/index.html.
 Tener instalado Apache TomCat para la ejecución de la aplicación Web
o Puede descargarlo de la siguiente url http://tomcat.apache.org/download-70.cgi.
o Nota: En la instalación de Netbeans tiene disponible la instalación de TomCat
 Tener instalado Mysql 5.6. http://www.mysql.com/downloads/mirror.php?id=403015
 Tener una BD en Mysql, para este ejemplo usaremos la dbAkihabara y la tabla de estudio,
puede crearla con el siguiente código:
delimiter $$
CREATE DATABASE `dbakihabara` /*!40100 DEFAULT CHARACTER SET latin1 */$$
CREATE TABLE `estudio` (
`idEstudio` int(11) NOT NULL AUTO_INCREMENT,
`nombre` varchar(45) NOT NULL,
PRIMARY KEY (`idEstudio`),
UNIQUE KEY `idempresa_UNIQUE` (`idEstudio`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1$$
2 CREACIÓN DEL PROYECTO
1. Ejecute Netbeans
2. Cree un nuevo proyecto Web Application, para esto ubíquese en la opción [File] de la
barra de menús
3. Busque ahora la opción [New] y de clic, se abrirá una ventana emergente.
INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN
WEB
3-4-2013
4. Seleccione la opción [Java Web] y [Web Application] y de clic en [Next>]
5. Modifique ahora el nombre del proyecto a JSPServlets_DBEJ01 esto es opcional y la
localización de la ubicación donde se creara su proyecto. De clic en [Next>]
6. Es hora de selecciona el servidor en el que estará nuestra aplicación. Si instalo Netbeans
con Apache incluido le saldrá como selección automática, si no puede buscar su
instalación de apache TomCat con el botón de [Add] y seleccionar donde la instalo. Nota
se le pedirá el nombre de usuario y contraseña para poder acceder al servidor.
INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN
WEB
3-4-2013
7. En la selccion del frameworks, no seleccionaremos ninguno para este ejemplo. De clic en
[Finish]
2.1 AGREGANDO EL CONTROLADOR MYSQL
1. Su proyecto se a creado, ahora de clic derecho donde dice el nombre de su proyecto
y seleccione Properties de clic.
Se abrira una ventana emergente, como la siguiente.
INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN
WEB
3-4-2013
2. Ubiquese en la opcion de Libraries de la parte izquierda de la ventana en la seecion de
[Categories] y de clic.
3. Ahora agregaremos el conector de mysql a la BD, de clic en [Add Library]
4. Busque ahora MySQL JDBC Driver, Seleccione y de clic en [Add Library]
Una vez de que le dio clic, se mostrara la librería agregada como este.
Con esta librería tenemos ahora la posibilidad de hacer conexiones a la BD de MySQL desde
nuestro proyecto.
INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN
WEB
3-4-2013
2.2 CREANDO LA CLASE ENTIDAD
1. Ahora crearemos los paquetes donde se ubicaran las clases que crearemos con la
ayuda del IDE, de clic derecho en su proyecto y luego ubiquese en [New]>[Java
Package] y de clic.
2. En la ventana que le aparecera cambien el nombre del paquete por entidades.De clic
en [Finish]
INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN
WEB
3-4-2013
3. Ahora crearemos las clases entidades vinculadas a la BD, con ayuda de la
persistencia. De clic derecho en un proyecto Seleccione [New] y de clic en [Entity
Classes from Database]
4. Una vez abierta la ventana en la cuadro desplegable [Database Connetion:]
Seleccione la opción [New Database Connection].
16. Seleccione el tipo de Driver, seleccione MySQL (Connector/J driver) y de clic en [Next>]
INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN
WEB
3-4-2013
5. Ahora configure la conexión a la BD, para nuestra BD local el host sera localhost o
igualmente 127.0.0.1 , el puerto por default es el 3306 pero MySQL lo tenemos
configurado en el 3308 en nuestro caso. La base de datos a la que nos
conectaremos es la que explicamos al principio del documento, a dbakihabara
El usuario por default es root, la contraseña es la misma con la que accedemos a mysql.
6. De clic en [Test Connection] para comprobar la conexión a la BD sea exitosa.
INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN
WEB
3-4-2013
7. Seleccione ahora la tabla a la que desea crear una clase persistente. Ej: estudio
Tome encuenta que para esto es necesario que la table tenga llave primaria si no
solo puede existir como atributo de una clase de una tabla de entidad fuerte. De clic
en [Next>]
8. Verifique que la clase Entity se cree en el paquete de entidades, de clic en [Next>]
INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN
WEB
3-4-2013
9. De clic en [Finish]. Con esto ya tiene acceso a la Base de datos de DBAkihabara
especificamente a la tabla Estudio.
Estas son los archivos que se les debio haber creado.
INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN
WEB
3-4-2013
Estudio.java
Persistence.xml
El archivo persistence contiene los datos para realizar la conexión a la base de datos y que clases
son entidades, por las cuales podra uste hacer persistencia de sus datos en la BD.
Puede ver el codigo generado de clase Estudio
2.2.1 Estudio Class
package entidades;
import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlRootElement;
INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN
WEB
3-4-2013
/**
*
* @author Kuro
*/
@Entity
@Table(name = "estudio")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Estudio.findAll", query = "SELECT e FROM Estudio e"),
@NamedQuery(name = "Estudio.findByIdEstudio", query = "SELECT e FROM Estudio
e WHERE e.idEstudio = :idEstudio"),
@NamedQuery(name = "Estudio.findByNombre", query = "SELECT e FROM Estudio e
WHERE e.nombre = :nombre")})
public class Estudio implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "idEstudio")
private Integer idEstudio;
@Basic(optional = false)
@Column(name = "nombre")
private String nombre;
public Estudio() {
}
public Estudio(Integer idEstudio) {
this.idEstudio = idEstudio;
}
public Estudio(Integer idEstudio, String nombre) {
this.idEstudio = idEstudio;
this.nombre = nombre;
}
public Integer getIdEstudio() {
return idEstudio;
}
public void setIdEstudio(Integer idEstudio) {
this.idEstudio = idEstudio;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN
WEB
3-4-2013
@Override
public int hashCode() {
int hash = 0;
hash += (idEstudio != null ? idEstudio.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are
not set
if (!(object instanceof Estudio)) {
return false;
}
Estudio other = (Estudio) object;
if ((this.idEstudio == null && other.idEstudio != null) ||
(this.idEstudio != null && !this.idEstudio.equals(other.idEstudio))) {
return false;
}
return true;
}
@Override
public String toString() {
return "entidades.Estudio[ idEstudio=" + idEstudio + " ]";
}
}
Esta es una clase Entidad, sirve para hacer persistencia en la base de datos
INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN
WEB
3-4-2013
2.2.2 EstudioJpaController
1. Ahora agregue un controlador para la clase entidad para esto, agregue un nuevo objeto
de tipo JPAController
2. Seleccione la clase entidad, ej. Estudio. Si no aparece ninguna es que su clase entidad
no fue creada correctamente.
De clic en [Next >]
3. Seleccione el paquete en el que estará la clase controladora. De clic en [Finish]
INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN
WEB
3-4-2013
Puede ver código generado, con esta clase puede usted crea, modificar, buscar, y
eliminar registros por medio de la persistencia.
package controlador;
import controlador.exceptions.NonexistentEntityException;
import entidades.Estudio;
import java.io.Serializable;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Query;
import javax.persistence.EntityNotFoundException;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
public class EstudioJpaController implements Serializable {
public EstudioJpaController(EntityManagerFactory emf) {
this.emf = emf;
}
private EntityManagerFactory emf = null;
public EntityManager getEntityManager() {
return emf.createEntityManager();
}
2.2.2.1 Creación del Registro
public String create(Estudio estudio) {
EntityManager em = null;
try
{
em = getEntityManager();
em.getTransaction().begin();//Comienza la transaccion a la BD
em.persist(estudio);
em.getTransaction().commit();//Se vacia la transaccion a la BD
}
finally {
if (em != null) {
em.close();//Se cierra la conexion a la BD
}
return "Transaccion finalizada";
}
}
2.2.2.2 Actualización del Registro
/**
* Método para Editar un registro de la base de datos
* @param estudio
* @throws NonexistentEntityException
* @throws Exception
INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN
WEB
3-4-2013
*/
public String edit(Estudio estudio) throws NonexistentEntityException,
Exception {
EntityManager em = null;
try {
em = getEntityManager();
em.getTransaction().begin();//comenzando la transaccion
estudio = em.merge(estudio);//Actualizando datos con el metodo merge
em.getTransaction().commit();
} catch (Exception ex) {
String msg = ex.getLocalizedMessage();
if (msg == null || msg.length() == 0) {
Integer id = estudio.getIdEstudio();
if (findEstudio(id) == null) {
throw new NonexistentEntityException("The estudio with id "
+ id + " no longer exists.");
}
}
throw ex;
} finally {
if (em != null) {
em.close();
}
return "Transaccion finalizada";
}
}
2.2.2.3 Eliminación del Registro
/**
* Metodo para eliminar registros de la BD de acuerdo a su llave primaria
idEstudio
* @param id
* @throws NonexistentEntityException
*/
public String destroy(Integer id) throws NonexistentEntityException
{
EntityManager em = null;
try {
em = getEntityManager();
em.getTransaction().begin();//Comienza la tranasaccion
Estudio estudio;
try
{
estudio = em.getReference(Estudio.class, id);//Toma la
referencia del objeto de la clase estudio con el id de parametro
estudio.getIdEstudio();
em.remove(estudio);//Removiendo el registro
em.getTransaction().commit();
} catch (EntityNotFoundException enfe)
{
INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN
WEB
3-4-2013
throw new NonexistentEntityException("The estudio with id " +
id + " no longer exists.", enfe);
}
} finally {
if (em != null) {
em.close();
}
return " - Finalizada la transaccion";
}
}
public List<Estudio> findEstudioEntities() {
return findEstudioEntities(true, -1, -1);
}
public List<Estudio> findEstudioEntities(int maxResults, int firstResult) {
return findEstudioEntities(false, maxResults, firstResult);
}
private List<Estudio> findEstudioEntities(boolean all, int maxResults, int
firstResult) {
EntityManager em = getEntityManager();
try {
CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
cq.select(cq.from(Estudio.class));
Query q = em.createQuery(cq);
if (!all) {
q.setMaxResults(maxResults);
q.setFirstResult(firstResult);
}
return q.getResultList();
} finally {
em.close();
}
}
public Estudio findEstudio(Integer id) {
EntityManager em = getEntityManager();
try {
return em.find(Estudio.class, id);
} finally {
em.close();
}
}
public int getEstudioCount() {
EntityManager em = getEntityManager();
try {
CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN
WEB
3-4-2013
Root<Estudio> rt = cq.from(Estudio.class);
cq.select(em.getCriteriaBuilder().count(rt));
Query q = em.createQuery(cq);
return ((Long) q.getSingleResult()).intValue();
} finally {
em.close();
}
}
}
2.2.3 Generador
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package controlador;
import controlador.exceptions.NonexistentEntityException;
import entidades.Estudio;
import java.io.PrintWriter;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import static servlets.CrearEstudio.mostrarResult;
public class Generador
{
static final EntityManagerFactory
emf=Persistence.createEntityManagerFactory("JSPServlets_DBEJ01PU");//Persisten
ceUnitName es el nombre
// de la configuracion con la que se crea la conexion a la BD
//Es con el archivo que nos genero al crear la conexion a la BD,
//en el archivo persistence.xml
public static String crearSelect()
{
String html="<select name="idestudio" id="idestudio">";
EstudioJpaController con=new EstudioJpaController(emf);
List<Estudio> list=con.findEstudioEntities(con.getEstudioCount(), 0);
for(Estudio estudio:list)
{
html=html+"<option
value=""+estudio.getIdEstudio()+"">"+estudio.getIdEstudio()+"t"+estudio.get
Nombre()+"</option>";
}
html=html+"</select>";
return html;
}
INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN
WEB
3-4-2013
}
2.3 SERVLETS
1. Ahora cree los Servlets que harán la funciónes de creación eliminación y actualización de los
registros para esto, de la misma forma que crea las clases y los paquetes, ahora cree un
servlet. Busque [Servlet]
2. Cambie el nombre al servlet por CrearEstudio y el paquete cámbielo a servlets, si no creo el
paquete escriba el nombre y este se creara junto con la clase. De clic en [Finish]
Cree los otros dos servlets. ActualizarEstudio y EliminarEstudio
En total debe tener 3 archivos en el paquete servlets
INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN
WEB
3-4-2013
2.3.1 Crear
2.3.1.1 doPost
Una vez creado el servlet CrearEstudio busque el método doPost y modifíquelo con el
siguiente código.
/**
* Handles the HTTP
* <code>POST</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException
{
/*Creando un objeto de la Clase Estudio **/
Estudio estudio=new Estudio();
/**Comprobando que los parametros no esten vacios**/
if(request.getParameter("estudio").isEmpty())
errorNoData(response);//Si esta vacio llamamos el metodo
errorNoData(); para que muestre msg de error
else //si no
{
estudio.setNombre(request.getParameter("estudio"));
/**Manejador de entidades que nos permitiran acceder a la BD**/
EntityManager em;
EntityManagerFactory emf;
emf=Persistence.createEntityManagerFactory("JSPServlets_DBEJ01PU");//Persisten
ceUnitName es el nombre
// de la configuracion con la que se crea la conexion a la BD
INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN
WEB
3-4-2013
//Es con el archivo que nos genero al crear la conexion a la BD,
//en el archivo persistence.xml
EstudioJpaController con=new EstudioJpaController(emf);//Creamos un
objeto de tipo Controlador de estudio
//Creamos el estudio al crear se esta persitiendo en la BD
PrintWriter out = response.getWriter();
out.println("<p>"+con.create(estudio)+"</p>");
mostrarResult(out, con);
}
}
2.3.1.2 Mostrar Resultados
Agregue Este método será necesario para realizar una consulta de los registros existentes, este
método lo utilizara también en las otras clases servlets.
/**
* Metodo para mostrar los resultados de consulta de la BD
* @param out
* @param con
*/
public static void mostrarResult(PrintWriter out,EstudioJpaController con)
{
int nmax=10;
int firts=0;
List<Estudio> list=con.findEstudioEntities(nmax, firts);//Llamamos
al metodo para buscar los
//estudios en forma de lista donde podemos especificar el numero
maximo de
//resultados y desde que resultado puede comenzar a enviarnos
(bloque)
out.println("<p>Estudios</p>");
out.println("<table>"
);
out.println("<tr>n"
+ "<td>ID-Estudio</td>n");
out.println("<td>Estudio</td>n"
+ "</tr>");
for(Estudio es: list)
{
out.println("<tr>n"
+ "<td>"+es.getIdEstudio()+"</td>n");
out.println("<td>"+es.getNombre()+"</td>n"
+ "</tr>");
}
out.println( "</table>");
}
@Override
public String getServletInfo() {
return "Short description";
INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN
WEB
3-4-2013
}// </editor-fold>
2.3.1.3 ErrorNoData
Agregue el siguiente método en los 3 servlets. Con este método se imprime un mensaje de error,
puede modificarlo a su gusto.
private void errorNoData(HttpServletResponse response)
{
PrintWriter out = null;
try
{
out = response.getWriter();
out.println("<p>Error no hay datos que insertar</p>");
} catch (IOException ex)
{
} finally {
out.close();
}
}
}
2.3.2 Actualizar
Una vez creado el servlet ActualizarEstudio busque el método doPost y modifíquelo con
el siguiente código.
protected void doPost(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
try
{
/*Creando un objeto de la Clase Estudio **/
Estudio estudio=new Estudio();
/**Comprobando que los parametros no esten vacios**/
if(request.getParameter("idestudio").isEmpty() ||
request.getParameter("estudio").isEmpty())
errorNoData(response);//Si esta vacio llamamos el metodo
errorNoData(); para que muestre msg de error
else //si no
{
try
{
estudio.setIdEstudio(Integer.parseInt(request.getParameter("idestudio")));
estudio.setNombre(request.getParameter("estudio"));
/**Manejador de entidades que nos permitiran acceder a la BD**/
/// EntityManager em;
EntityManagerFactory emf;
INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN
WEB
3-4-2013
emf=Persistence.createEntityManagerFactory("JSPServlets_DBEJ01PU");//Persisten
ceUnitName es el nombre
// de la configuracion con la que se crea la conexion a la BD
//Es con el archivo que nos genero al crear la conexion a la BD,
//en el archivo persistence.xml
EstudioJpaController con=new EstudioJpaController(emf);//Creamos un
objeto de tipo Controlador de estudio
//Creamos el estudio al crear se esta persitiendo en la BD
PrintWriter out = response.getWriter();
out.println("<p>"+con.edit(estudio)+"</p>");
mostrarResult(out, con);
}
catch(NumberFormatException ex)
{
errorNoData(response);
} catch (NonexistentEntityException ex) {
errorNoData(response);
} catch (Exception ex) {
errorNoData(response);
}
}
}
catch(java.lang.NullPointerException e)
{
errorNoData(response);
}
}
2.3.3 Eliminar
Una vez creado el servlet EliminarEstudio, modifique el método post por el cual por medio de
parámetros enviado por el formulario eliminaremos el registro con el id equivalente al parámetro.
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
try
{
/*Creando un objeto de la Clase Estudio **/
Estudio estudio=new Estudio();
/**Comprobando que los parametros no esten vacios**/
if(request.getParameter("idestudio").isEmpty() )
errorNoData(response);//Si esta vacio llamamos el metodo
errorNoData(); para que muestre msg de error
else //si no
{
try
INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN
WEB
3-4-2013
{
estudio.setIdEstudio(Integer.parseInt(request.getParameter("idestudio")));
/**Manejador de entidades que nos permitiran acceder a la BD**/
/// EntityManager em;
EntityManagerFactory emf;
emf=Persistence.createEntityManagerFactory("JSPServlets_DBEJ01PU");//Persisten
ceUnitName es el nombre
// de la configuracion con la que se crea la conexion a la BD
//Es con el archivo que nos genero al crear la conexion a la BD,
//en el archivo persistence.xml
EstudioJpaController con=new EstudioJpaController(emf);//Creamos un
objeto de tipo Controlador de estudio
PrintWriter out = response.getWriter();
out.println("<p>"+con.destroy(estudio.getIdEstudio())+"</p>n"
);//Mandamos a llamar el metodo para que elimine el registro
//de la BD
mostrarResult(out, con);
}
catch(NumberFormatException ex)
{
errorNoData(response);
}
catch (NonexistentEntityException ex)
{
errorNoData(response);
} catch (Exception ex) {
errorNoData(response);
}
}
}
catch(java.lang.NullPointerException e)
{
errorNoData(response);
}
}
2.4 JSP
2.4.1 Crear
1. Cree las paginas JSP, Actualizar, Crear, Eliminar
Debe tener en total 3 archivos
INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN
WEB
3-4-2013
2. Modifique el código por el siguiente
3. El servlet al que se comunicara será el de CrearEstudio por el método post
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<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="../CrearEstudio">
<p>
<label for="Estudio">Estudio</label>
<input type="text" name="estudio" id="estudio" />
</p>
<p>
<input type="submit" name="btnInsertar" id="btnInsertar" value="Insertar"
/>
</p>
</form>
</body>
</html>
Ejecute el archivo compílelo con ctrl+mayus+f6, o con clic derecho y de clic en la opción Run File
Una vez compilado puede verlo en su navegador.
INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN
WEB
3-4-2013
De clic en el botón crear.
Resultado:
Base de datos:
2.4.2 Actualizar
<%--Imports de clases--%>
<%@page import="controlador.Generador"%>
<%@page import="servlets.CrearEstudio"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN
WEB
3-4-2013
<form id="form1" name="form1" method="post"
action="../ActualizarEstudio">
<p>
<label>ID-Estudio:</label>
<%--Llamando a metodo estico de la clase Generador--%>
<%
out.print(Generador.crearSelect());
%>
</p>
<p><label>Estudio:</label>
<input type="text" value="" name="estudio" id="estudio">
</p>
<p>
<input type="submit" name="btnActualizar" id="btnEliminar"
value="Actualizar" />
</p>
</form>
</body>
</html>
Resultado:
Base de datos:
INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN
WEB
3-4-2013
2.4.3 Eliminar
<%--Imports de clases--%>
<%@page import="controlador.Generador"%>
<%@page import="servlets.CrearEstudio"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<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="../EliminarEstudio">
<p>
<label>ID-Estudio:</label>
<%--Llamando a metodo estico de la clase Generador--%>
<%
out.print(Generador.crearSelect());
%>
</p>
<p>
<input type="submit" name="btnEliminar" id="btnEliminar" value="Eliminar"
/>
</p>
</form>
</body>
</html>
Resultado:
INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN
WEB
3-4-2013
Base de datos:

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Curso Java Avanzado 3 Js Ps
Curso Java Avanzado   3 Js PsCurso Java Avanzado   3 Js Ps
Curso Java Avanzado 3 Js Ps
 
2. Java Servlets (J2EE) - Curso 2005-2006
2. Java Servlets (J2EE) - Curso 2005-20062. Java Servlets (J2EE) - Curso 2005-2006
2. Java Servlets (J2EE) - Curso 2005-2006
 
Programación web con JSP
Programación web con JSPProgramación web con JSP
Programación web con JSP
 
Curso Jsp Mas
Curso Jsp MasCurso Jsp Mas
Curso Jsp Mas
 
Servicios web
Servicios webServicios web
Servicios web
 
Connection
ConnectionConnection
Connection
 
Bases de Datos en Java - Intro a JDBC
Bases de Datos en Java - Intro a JDBCBases de Datos en Java - Intro a JDBC
Bases de Datos en Java - Intro a JDBC
 
[ES] Conectividad de java a base de datos(jdbc)
[ES] Conectividad de java a base  de datos(jdbc)[ES] Conectividad de java a base  de datos(jdbc)
[ES] Conectividad de java a base de datos(jdbc)
 
JSP
JSPJSP
JSP
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
Como usar ajax con jquery
Como usar ajax con jqueryComo usar ajax con jquery
Como usar ajax con jquery
 
Curso Java Avanzado 3 4 Js Ps Con Java Beans
Curso Java Avanzado   3 4 Js Ps Con Java BeansCurso Java Avanzado   3 4 Js Ps Con Java Beans
Curso Java Avanzado 3 4 Js Ps Con Java Beans
 
Curso Básico de JDBC
Curso Básico de JDBCCurso Básico de JDBC
Curso Básico de JDBC
 
3. Curso Java JDBC (Bases de datos) - Curso 2005-2006
3. Curso Java JDBC (Bases de datos) - Curso 2005-20063. Curso Java JDBC (Bases de datos) - Curso 2005-2006
3. Curso Java JDBC (Bases de datos) - Curso 2005-2006
 
Unidad 9. acceso a base de datos desde java
Unidad 9. acceso a base de datos desde javaUnidad 9. acceso a base de datos desde java
Unidad 9. acceso a base de datos desde java
 
Java Web Lección 02 - JSP
Java Web Lección 02 - JSPJava Web Lección 02 - JSP
Java Web Lección 02 - JSP
 
Java WebServices JaxWS - JaxRs
Java WebServices JaxWS - JaxRsJava WebServices JaxWS - JaxRs
Java WebServices JaxWS - JaxRs
 
EJB con Eclipse y JBoss
EJB con Eclipse y JBossEJB con Eclipse y JBoss
EJB con Eclipse y JBoss
 
Diapositivas del jdbc magaly y duyen
Diapositivas del jdbc magaly y duyenDiapositivas del jdbc magaly y duyen
Diapositivas del jdbc magaly y duyen
 
Notas clase java ii
Notas clase java iiNotas clase java ii
Notas clase java ii
 

Destacado

Cómo abrir una cuenta de hushmail
Cómo abrir una cuenta de hushmailCómo abrir una cuenta de hushmail
Cómo abrir una cuenta de hushmailJorge Luis Sierra
 
Sistema endocrino fisiologia dr ocampo
Sistema endocrino fisiologia dr ocampoSistema endocrino fisiologia dr ocampo
Sistema endocrino fisiologia dr ocampojoflaco
 
LinkedIn Board Member Connect webinar
LinkedIn Board Member Connect webinarLinkedIn Board Member Connect webinar
LinkedIn Board Member Connect webinarLinkedIn for Good
 
Koga No Sato Ninjutsu Village
Koga No Sato Ninjutsu VillageKoga No Sato Ninjutsu Village
Koga No Sato Ninjutsu VillageAbel Shinobi
 
Integración de Netbeans con Ireport y SQL Server
Integración de Netbeans con Ireport y SQL ServerIntegración de Netbeans con Ireport y SQL Server
Integración de Netbeans con Ireport y SQL ServerSonGoku10
 
Curso de-jsp-avanzado by-priale
Curso de-jsp-avanzado by-prialeCurso de-jsp-avanzado by-priale
Curso de-jsp-avanzado by-prialeSttOrm sindef
 
Comunicacion entre formularios HTML y paginas JSP
Comunicacion entre formularios HTML y paginas JSPComunicacion entre formularios HTML y paginas JSP
Comunicacion entre formularios HTML y paginas JSPDanii Rodriguez
 
Manual programacion - java - jsp & xml
Manual   programacion - java - jsp & xmlManual   programacion - java - jsp & xml
Manual programacion - java - jsp & xmlgilhorak
 
DOOR CONTROL BOOK WITH STANLEY NUMBERS 8.7.15
DOOR CONTROL BOOK WITH STANLEY NUMBERS 8.7.15DOOR CONTROL BOOK WITH STANLEY NUMBERS 8.7.15
DOOR CONTROL BOOK WITH STANLEY NUMBERS 8.7.15Michael Yaeger
 
How to increase your MSP business with the right tools.
How to increase your MSP business with the right tools.How to increase your MSP business with the right tools.
How to increase your MSP business with the right tools.Matt Barton
 
router tipos de router
router tipos de routerrouter tipos de router
router tipos de routerAndres Escobar
 
Power point ucrania ana maroto=)
Power point ucrania ana maroto=)Power point ucrania ana maroto=)
Power point ucrania ana maroto=)paulaohyeah
 
Career exploration trip presentation for cdpi (1)
Career exploration trip presentation for cdpi (1)Career exploration trip presentation for cdpi (1)
Career exploration trip presentation for cdpi (1)cdpindiana
 
Newsletter Grupo Randazzo : Diciembre 2013
Newsletter Grupo Randazzo : Diciembre 2013Newsletter Grupo Randazzo : Diciembre 2013
Newsletter Grupo Randazzo : Diciembre 2013Grupo Randazzo
 
Fitness marketing plan 2015-lounge www.rapidmassage.es
Fitness marketing plan 2015-lounge www.rapidmassage.esFitness marketing plan 2015-lounge www.rapidmassage.es
Fitness marketing plan 2015-lounge www.rapidmassage.esITALY COFFEE TEA STORE
 

Destacado (19)

Cómo abrir una cuenta de hushmail
Cómo abrir una cuenta de hushmailCómo abrir una cuenta de hushmail
Cómo abrir una cuenta de hushmail
 
Sistema endocrino fisiologia dr ocampo
Sistema endocrino fisiologia dr ocampoSistema endocrino fisiologia dr ocampo
Sistema endocrino fisiologia dr ocampo
 
LinkedIn Board Member Connect webinar
LinkedIn Board Member Connect webinarLinkedIn Board Member Connect webinar
LinkedIn Board Member Connect webinar
 
Koga No Sato Ninjutsu Village
Koga No Sato Ninjutsu VillageKoga No Sato Ninjutsu Village
Koga No Sato Ninjutsu Village
 
Orm final
Orm finalOrm final
Orm final
 
Integración de Netbeans con Ireport y SQL Server
Integración de Netbeans con Ireport y SQL ServerIntegración de Netbeans con Ireport y SQL Server
Integración de Netbeans con Ireport y SQL Server
 
Curso de-jsp-avanzado by-priale
Curso de-jsp-avanzado by-prialeCurso de-jsp-avanzado by-priale
Curso de-jsp-avanzado by-priale
 
Tema4 apartado4.2
Tema4 apartado4.2Tema4 apartado4.2
Tema4 apartado4.2
 
JSP
JSP JSP
JSP
 
Comunicacion entre formularios HTML y paginas JSP
Comunicacion entre formularios HTML y paginas JSPComunicacion entre formularios HTML y paginas JSP
Comunicacion entre formularios HTML y paginas JSP
 
Manual programacion - java - jsp & xml
Manual   programacion - java - jsp & xmlManual   programacion - java - jsp & xml
Manual programacion - java - jsp & xml
 
DOOR CONTROL BOOK WITH STANLEY NUMBERS 8.7.15
DOOR CONTROL BOOK WITH STANLEY NUMBERS 8.7.15DOOR CONTROL BOOK WITH STANLEY NUMBERS 8.7.15
DOOR CONTROL BOOK WITH STANLEY NUMBERS 8.7.15
 
How to increase your MSP business with the right tools.
How to increase your MSP business with the right tools.How to increase your MSP business with the right tools.
How to increase your MSP business with the right tools.
 
router tipos de router
router tipos de routerrouter tipos de router
router tipos de router
 
Power point ucrania ana maroto=)
Power point ucrania ana maroto=)Power point ucrania ana maroto=)
Power point ucrania ana maroto=)
 
Career exploration trip presentation for cdpi (1)
Career exploration trip presentation for cdpi (1)Career exploration trip presentation for cdpi (1)
Career exploration trip presentation for cdpi (1)
 
Newsletter Grupo Randazzo : Diciembre 2013
Newsletter Grupo Randazzo : Diciembre 2013Newsletter Grupo Randazzo : Diciembre 2013
Newsletter Grupo Randazzo : Diciembre 2013
 
Fitness marketing plan 2015-lounge www.rapidmassage.es
Fitness marketing plan 2015-lounge www.rapidmassage.esFitness marketing plan 2015-lounge www.rapidmassage.es
Fitness marketing plan 2015-lounge www.rapidmassage.es
 
PGIRH san jose de las conchas
PGIRH san jose de las conchasPGIRH san jose de las conchas
PGIRH san jose de las conchas
 

Similar a Jsp servlet- Tutorial BD Conexión (20)

JDBC
JDBCJDBC
JDBC
 
Dprn3 u3 a1_rahv
Dprn3 u3 a1_rahvDprn3 u3 a1_rahv
Dprn3 u3 a1_rahv
 
Mysql java
Mysql javaMysql java
Mysql java
 
como hacer una conexion con mysql
como hacer una conexion con mysqlcomo hacer una conexion con mysql
como hacer una conexion con mysql
 
Tema 5
Tema 5Tema 5
Tema 5
 
Documentacion del proyecto
Documentacion del proyectoDocumentacion del proyecto
Documentacion del proyecto
 
Java
JavaJava
Java
 
Taller desarrollando sitios web multiplataforma
Taller desarrollando sitios web multiplataformaTaller desarrollando sitios web multiplataforma
Taller desarrollando sitios web multiplataforma
 
Jyoc java-cap16 persistencia. bases de datos
Jyoc java-cap16 persistencia. bases de datosJyoc java-cap16 persistencia. bases de datos
Jyoc java-cap16 persistencia. bases de datos
 
Trabajo de base de datos en sqlserver
Trabajo de base de datos en sqlserverTrabajo de base de datos en sqlserver
Trabajo de base de datos en sqlserver
 
Bases de datos con java
Bases de datos con javaBases de datos con java
Bases de datos con java
 
Conexion mysql con java usando netbeans
Conexion mysql con java usando netbeansConexion mysql con java usando netbeans
Conexion mysql con java usando netbeans
 
Jdbc
JdbcJdbc
Jdbc
 
Jdbc
JdbcJdbc
Jdbc
 
Video
VideoVideo
Video
 
Ac1u3
Ac1u3Ac1u3
Ac1u3
 
Practica 4
Practica 4Practica 4
Practica 4
 
P2C1 - Configuración del Entorno
P2C1 - Configuración del EntornoP2C1 - Configuración del Entorno
P2C1 - Configuración del Entorno
 
Configuracion del Entorno
Configuracion del EntornoConfiguracion del Entorno
Configuracion del Entorno
 
JBoss AS Installation -JBoss as jeap - Curso JBoss JB366 Día 2
JBoss AS Installation -JBoss as jeap - Curso JBoss JB366 Día 2 JBoss AS Installation -JBoss as jeap - Curso JBoss JB366 Día 2
JBoss AS Installation -JBoss as jeap - Curso JBoss JB366 Día 2
 

Último

CIENCIAS NATURALES 4 TO ambientes .docx
CIENCIAS NATURALES 4 TO  ambientes .docxCIENCIAS NATURALES 4 TO  ambientes .docx
CIENCIAS NATURALES 4 TO ambientes .docxAgustinaNuez21
 
Fichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdfFichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdfssuser50d1252
 
DETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIORDETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIORGonella
 
Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Angélica Soledad Vega Ramírez
 
4º SOY LECTOR PART2- MD EDUCATIVO.p df PARTE
4º SOY LECTOR PART2- MD  EDUCATIVO.p df PARTE4º SOY LECTOR PART2- MD  EDUCATIVO.p df PARTE
4º SOY LECTOR PART2- MD EDUCATIVO.p df PARTESaraNolasco4
 
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfTarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfManuel Molina
 
sesión de aprendizaje 4 E1 Exposición oral.pdf
sesión de aprendizaje 4 E1 Exposición oral.pdfsesión de aprendizaje 4 E1 Exposición oral.pdf
sesión de aprendizaje 4 E1 Exposición oral.pdfpatriciavsquezbecerr
 
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsxJuanpm27
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialpatriciaines1993
 
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOTUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOweislaco
 
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024gharce
 
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdfFichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdfssuser50d1252
 
Manejo del Dengue, generalidades, actualización marzo 2024 minsa
Manejo del Dengue, generalidades, actualización marzo 2024 minsaManejo del Dengue, generalidades, actualización marzo 2024 minsa
Manejo del Dengue, generalidades, actualización marzo 2024 minsaLuis Minaya
 
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdf
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdfFichas de MatemáticA QUINTO DE SECUNDARIA).pdf
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdfssuser50d1252
 
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALVOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALEDUCCUniversidadCatl
 

Último (20)

CIENCIAS NATURALES 4 TO ambientes .docx
CIENCIAS NATURALES 4 TO  ambientes .docxCIENCIAS NATURALES 4 TO  ambientes .docx
CIENCIAS NATURALES 4 TO ambientes .docx
 
TL/CNL – 2.ª FASE .
TL/CNL – 2.ª FASE                       .TL/CNL – 2.ª FASE                       .
TL/CNL – 2.ª FASE .
 
Fichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdfFichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdf
 
DETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIORDETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIOR
 
Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...
 
4º SOY LECTOR PART2- MD EDUCATIVO.p df PARTE
4º SOY LECTOR PART2- MD  EDUCATIVO.p df PARTE4º SOY LECTOR PART2- MD  EDUCATIVO.p df PARTE
4º SOY LECTOR PART2- MD EDUCATIVO.p df PARTE
 
Aedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptxAedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptx
 
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfTarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
 
sesión de aprendizaje 4 E1 Exposición oral.pdf
sesión de aprendizaje 4 E1 Exposición oral.pdfsesión de aprendizaje 4 E1 Exposición oral.pdf
sesión de aprendizaje 4 E1 Exposición oral.pdf
 
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx
 
DIA INTERNACIONAL DAS FLORESTAS .
DIA INTERNACIONAL DAS FLORESTAS         .DIA INTERNACIONAL DAS FLORESTAS         .
DIA INTERNACIONAL DAS FLORESTAS .
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundial
 
VISITA À PROTEÇÃO CIVIL _
VISITA À PROTEÇÃO CIVIL                  _VISITA À PROTEÇÃO CIVIL                  _
VISITA À PROTEÇÃO CIVIL _
 
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOTUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
 
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
 
Aedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptxAedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptx
 
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdfFichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
 
Manejo del Dengue, generalidades, actualización marzo 2024 minsa
Manejo del Dengue, generalidades, actualización marzo 2024 minsaManejo del Dengue, generalidades, actualización marzo 2024 minsa
Manejo del Dengue, generalidades, actualización marzo 2024 minsa
 
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdf
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdfFichas de MatemáticA QUINTO DE SECUNDARIA).pdf
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdf
 
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALVOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
 

Jsp servlet- Tutorial BD Conexión

  • 1. INSTITUTO TECNOLÓGICO DE OAXACA Base de Datos y Tecnologías Web Interconexión de una BD a una aplicación Web Alumna: Pattzy Rosario Montero García
  • 2. INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN WEB 3-4-2013 1 REQUISITOS  Tener Instalado Netbeans IDE 7.3 versión Completa o Puede descargarlo de la siguiente url https://netbeans.org/downloads/index.html.  Tener instalado Apache TomCat para la ejecución de la aplicación Web o Puede descargarlo de la siguiente url http://tomcat.apache.org/download-70.cgi. o Nota: En la instalación de Netbeans tiene disponible la instalación de TomCat  Tener instalado Mysql 5.6. http://www.mysql.com/downloads/mirror.php?id=403015  Tener una BD en Mysql, para este ejemplo usaremos la dbAkihabara y la tabla de estudio, puede crearla con el siguiente código: delimiter $$ CREATE DATABASE `dbakihabara` /*!40100 DEFAULT CHARACTER SET latin1 */$$ CREATE TABLE `estudio` ( `idEstudio` int(11) NOT NULL AUTO_INCREMENT, `nombre` varchar(45) NOT NULL, PRIMARY KEY (`idEstudio`), UNIQUE KEY `idempresa_UNIQUE` (`idEstudio`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1$$ 2 CREACIÓN DEL PROYECTO 1. Ejecute Netbeans 2. Cree un nuevo proyecto Web Application, para esto ubíquese en la opción [File] de la barra de menús 3. Busque ahora la opción [New] y de clic, se abrirá una ventana emergente.
  • 3. INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN WEB 3-4-2013 4. Seleccione la opción [Java Web] y [Web Application] y de clic en [Next>] 5. Modifique ahora el nombre del proyecto a JSPServlets_DBEJ01 esto es opcional y la localización de la ubicación donde se creara su proyecto. De clic en [Next>] 6. Es hora de selecciona el servidor en el que estará nuestra aplicación. Si instalo Netbeans con Apache incluido le saldrá como selección automática, si no puede buscar su instalación de apache TomCat con el botón de [Add] y seleccionar donde la instalo. Nota se le pedirá el nombre de usuario y contraseña para poder acceder al servidor.
  • 4. INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN WEB 3-4-2013 7. En la selccion del frameworks, no seleccionaremos ninguno para este ejemplo. De clic en [Finish] 2.1 AGREGANDO EL CONTROLADOR MYSQL 1. Su proyecto se a creado, ahora de clic derecho donde dice el nombre de su proyecto y seleccione Properties de clic. Se abrira una ventana emergente, como la siguiente.
  • 5. INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN WEB 3-4-2013 2. Ubiquese en la opcion de Libraries de la parte izquierda de la ventana en la seecion de [Categories] y de clic. 3. Ahora agregaremos el conector de mysql a la BD, de clic en [Add Library] 4. Busque ahora MySQL JDBC Driver, Seleccione y de clic en [Add Library] Una vez de que le dio clic, se mostrara la librería agregada como este. Con esta librería tenemos ahora la posibilidad de hacer conexiones a la BD de MySQL desde nuestro proyecto.
  • 6. INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN WEB 3-4-2013 2.2 CREANDO LA CLASE ENTIDAD 1. Ahora crearemos los paquetes donde se ubicaran las clases que crearemos con la ayuda del IDE, de clic derecho en su proyecto y luego ubiquese en [New]>[Java Package] y de clic. 2. En la ventana que le aparecera cambien el nombre del paquete por entidades.De clic en [Finish]
  • 7. INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN WEB 3-4-2013 3. Ahora crearemos las clases entidades vinculadas a la BD, con ayuda de la persistencia. De clic derecho en un proyecto Seleccione [New] y de clic en [Entity Classes from Database] 4. Una vez abierta la ventana en la cuadro desplegable [Database Connetion:] Seleccione la opción [New Database Connection]. 16. Seleccione el tipo de Driver, seleccione MySQL (Connector/J driver) y de clic en [Next>]
  • 8. INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN WEB 3-4-2013 5. Ahora configure la conexión a la BD, para nuestra BD local el host sera localhost o igualmente 127.0.0.1 , el puerto por default es el 3306 pero MySQL lo tenemos configurado en el 3308 en nuestro caso. La base de datos a la que nos conectaremos es la que explicamos al principio del documento, a dbakihabara El usuario por default es root, la contraseña es la misma con la que accedemos a mysql. 6. De clic en [Test Connection] para comprobar la conexión a la BD sea exitosa.
  • 9. INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN WEB 3-4-2013 7. Seleccione ahora la tabla a la que desea crear una clase persistente. Ej: estudio Tome encuenta que para esto es necesario que la table tenga llave primaria si no solo puede existir como atributo de una clase de una tabla de entidad fuerte. De clic en [Next>] 8. Verifique que la clase Entity se cree en el paquete de entidades, de clic en [Next>]
  • 10. INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN WEB 3-4-2013 9. De clic en [Finish]. Con esto ya tiene acceso a la Base de datos de DBAkihabara especificamente a la tabla Estudio. Estas son los archivos que se les debio haber creado.
  • 11. INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN WEB 3-4-2013 Estudio.java Persistence.xml El archivo persistence contiene los datos para realizar la conexión a la base de datos y que clases son entidades, por las cuales podra uste hacer persistencia de sus datos en la BD. Puede ver el codigo generado de clase Estudio 2.2.1 Estudio Class package entidades; import java.io.Serializable; import javax.persistence.Basic; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.Table; import javax.xml.bind.annotation.XmlRootElement;
  • 12. INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN WEB 3-4-2013 /** * * @author Kuro */ @Entity @Table(name = "estudio") @XmlRootElement @NamedQueries({ @NamedQuery(name = "Estudio.findAll", query = "SELECT e FROM Estudio e"), @NamedQuery(name = "Estudio.findByIdEstudio", query = "SELECT e FROM Estudio e WHERE e.idEstudio = :idEstudio"), @NamedQuery(name = "Estudio.findByNombre", query = "SELECT e FROM Estudio e WHERE e.nombre = :nombre")}) public class Estudio implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Basic(optional = false) @Column(name = "idEstudio") private Integer idEstudio; @Basic(optional = false) @Column(name = "nombre") private String nombre; public Estudio() { } public Estudio(Integer idEstudio) { this.idEstudio = idEstudio; } public Estudio(Integer idEstudio, String nombre) { this.idEstudio = idEstudio; this.nombre = nombre; } public Integer getIdEstudio() { return idEstudio; } public void setIdEstudio(Integer idEstudio) { this.idEstudio = idEstudio; } public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; }
  • 13. INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN WEB 3-4-2013 @Override public int hashCode() { int hash = 0; hash += (idEstudio != null ? idEstudio.hashCode() : 0); return hash; } @Override public boolean equals(Object object) { // TODO: Warning - this method won't work in the case the id fields are not set if (!(object instanceof Estudio)) { return false; } Estudio other = (Estudio) object; if ((this.idEstudio == null && other.idEstudio != null) || (this.idEstudio != null && !this.idEstudio.equals(other.idEstudio))) { return false; } return true; } @Override public String toString() { return "entidades.Estudio[ idEstudio=" + idEstudio + " ]"; } } Esta es una clase Entidad, sirve para hacer persistencia en la base de datos
  • 14. INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN WEB 3-4-2013 2.2.2 EstudioJpaController 1. Ahora agregue un controlador para la clase entidad para esto, agregue un nuevo objeto de tipo JPAController 2. Seleccione la clase entidad, ej. Estudio. Si no aparece ninguna es que su clase entidad no fue creada correctamente. De clic en [Next >] 3. Seleccione el paquete en el que estará la clase controladora. De clic en [Finish]
  • 15. INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN WEB 3-4-2013 Puede ver código generado, con esta clase puede usted crea, modificar, buscar, y eliminar registros por medio de la persistencia. package controlador; import controlador.exceptions.NonexistentEntityException; import entidades.Estudio; import java.io.Serializable; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Query; import javax.persistence.EntityNotFoundException; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Root; public class EstudioJpaController implements Serializable { public EstudioJpaController(EntityManagerFactory emf) { this.emf = emf; } private EntityManagerFactory emf = null; public EntityManager getEntityManager() { return emf.createEntityManager(); } 2.2.2.1 Creación del Registro public String create(Estudio estudio) { EntityManager em = null; try { em = getEntityManager(); em.getTransaction().begin();//Comienza la transaccion a la BD em.persist(estudio); em.getTransaction().commit();//Se vacia la transaccion a la BD } finally { if (em != null) { em.close();//Se cierra la conexion a la BD } return "Transaccion finalizada"; } } 2.2.2.2 Actualización del Registro /** * Método para Editar un registro de la base de datos * @param estudio * @throws NonexistentEntityException * @throws Exception
  • 16. INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN WEB 3-4-2013 */ public String edit(Estudio estudio) throws NonexistentEntityException, Exception { EntityManager em = null; try { em = getEntityManager(); em.getTransaction().begin();//comenzando la transaccion estudio = em.merge(estudio);//Actualizando datos con el metodo merge em.getTransaction().commit(); } catch (Exception ex) { String msg = ex.getLocalizedMessage(); if (msg == null || msg.length() == 0) { Integer id = estudio.getIdEstudio(); if (findEstudio(id) == null) { throw new NonexistentEntityException("The estudio with id " + id + " no longer exists."); } } throw ex; } finally { if (em != null) { em.close(); } return "Transaccion finalizada"; } } 2.2.2.3 Eliminación del Registro /** * Metodo para eliminar registros de la BD de acuerdo a su llave primaria idEstudio * @param id * @throws NonexistentEntityException */ public String destroy(Integer id) throws NonexistentEntityException { EntityManager em = null; try { em = getEntityManager(); em.getTransaction().begin();//Comienza la tranasaccion Estudio estudio; try { estudio = em.getReference(Estudio.class, id);//Toma la referencia del objeto de la clase estudio con el id de parametro estudio.getIdEstudio(); em.remove(estudio);//Removiendo el registro em.getTransaction().commit(); } catch (EntityNotFoundException enfe) {
  • 17. INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN WEB 3-4-2013 throw new NonexistentEntityException("The estudio with id " + id + " no longer exists.", enfe); } } finally { if (em != null) { em.close(); } return " - Finalizada la transaccion"; } } public List<Estudio> findEstudioEntities() { return findEstudioEntities(true, -1, -1); } public List<Estudio> findEstudioEntities(int maxResults, int firstResult) { return findEstudioEntities(false, maxResults, firstResult); } private List<Estudio> findEstudioEntities(boolean all, int maxResults, int firstResult) { EntityManager em = getEntityManager(); try { CriteriaQuery cq = em.getCriteriaBuilder().createQuery(); cq.select(cq.from(Estudio.class)); Query q = em.createQuery(cq); if (!all) { q.setMaxResults(maxResults); q.setFirstResult(firstResult); } return q.getResultList(); } finally { em.close(); } } public Estudio findEstudio(Integer id) { EntityManager em = getEntityManager(); try { return em.find(Estudio.class, id); } finally { em.close(); } } public int getEstudioCount() { EntityManager em = getEntityManager(); try { CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
  • 18. INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN WEB 3-4-2013 Root<Estudio> rt = cq.from(Estudio.class); cq.select(em.getCriteriaBuilder().count(rt)); Query q = em.createQuery(cq); return ((Long) q.getSingleResult()).intValue(); } finally { em.close(); } } } 2.2.3 Generador /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package controlador; import controlador.exceptions.NonexistentEntityException; import entidades.Estudio; import java.io.PrintWriter; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import static servlets.CrearEstudio.mostrarResult; public class Generador { static final EntityManagerFactory emf=Persistence.createEntityManagerFactory("JSPServlets_DBEJ01PU");//Persisten ceUnitName es el nombre // de la configuracion con la que se crea la conexion a la BD //Es con el archivo que nos genero al crear la conexion a la BD, //en el archivo persistence.xml public static String crearSelect() { String html="<select name="idestudio" id="idestudio">"; EstudioJpaController con=new EstudioJpaController(emf); List<Estudio> list=con.findEstudioEntities(con.getEstudioCount(), 0); for(Estudio estudio:list) { html=html+"<option value=""+estudio.getIdEstudio()+"">"+estudio.getIdEstudio()+"t"+estudio.get Nombre()+"</option>"; } html=html+"</select>"; return html; }
  • 19. INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN WEB 3-4-2013 } 2.3 SERVLETS 1. Ahora cree los Servlets que harán la funciónes de creación eliminación y actualización de los registros para esto, de la misma forma que crea las clases y los paquetes, ahora cree un servlet. Busque [Servlet] 2. Cambie el nombre al servlet por CrearEstudio y el paquete cámbielo a servlets, si no creo el paquete escriba el nombre y este se creara junto con la clase. De clic en [Finish] Cree los otros dos servlets. ActualizarEstudio y EliminarEstudio En total debe tener 3 archivos en el paquete servlets
  • 20. INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN WEB 3-4-2013 2.3.1 Crear 2.3.1.1 doPost Una vez creado el servlet CrearEstudio busque el método doPost y modifíquelo con el siguiente código. /** * Handles the HTTP * <code>POST</code> method. * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /*Creando un objeto de la Clase Estudio **/ Estudio estudio=new Estudio(); /**Comprobando que los parametros no esten vacios**/ if(request.getParameter("estudio").isEmpty()) errorNoData(response);//Si esta vacio llamamos el metodo errorNoData(); para que muestre msg de error else //si no { estudio.setNombre(request.getParameter("estudio")); /**Manejador de entidades que nos permitiran acceder a la BD**/ EntityManager em; EntityManagerFactory emf; emf=Persistence.createEntityManagerFactory("JSPServlets_DBEJ01PU");//Persisten ceUnitName es el nombre // de la configuracion con la que se crea la conexion a la BD
  • 21. INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN WEB 3-4-2013 //Es con el archivo que nos genero al crear la conexion a la BD, //en el archivo persistence.xml EstudioJpaController con=new EstudioJpaController(emf);//Creamos un objeto de tipo Controlador de estudio //Creamos el estudio al crear se esta persitiendo en la BD PrintWriter out = response.getWriter(); out.println("<p>"+con.create(estudio)+"</p>"); mostrarResult(out, con); } } 2.3.1.2 Mostrar Resultados Agregue Este método será necesario para realizar una consulta de los registros existentes, este método lo utilizara también en las otras clases servlets. /** * Metodo para mostrar los resultados de consulta de la BD * @param out * @param con */ public static void mostrarResult(PrintWriter out,EstudioJpaController con) { int nmax=10; int firts=0; List<Estudio> list=con.findEstudioEntities(nmax, firts);//Llamamos al metodo para buscar los //estudios en forma de lista donde podemos especificar el numero maximo de //resultados y desde que resultado puede comenzar a enviarnos (bloque) out.println("<p>Estudios</p>"); out.println("<table>" ); out.println("<tr>n" + "<td>ID-Estudio</td>n"); out.println("<td>Estudio</td>n" + "</tr>"); for(Estudio es: list) { out.println("<tr>n" + "<td>"+es.getIdEstudio()+"</td>n"); out.println("<td>"+es.getNombre()+"</td>n" + "</tr>"); } out.println( "</table>"); } @Override public String getServletInfo() { return "Short description";
  • 22. INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN WEB 3-4-2013 }// </editor-fold> 2.3.1.3 ErrorNoData Agregue el siguiente método en los 3 servlets. Con este método se imprime un mensaje de error, puede modificarlo a su gusto. private void errorNoData(HttpServletResponse response) { PrintWriter out = null; try { out = response.getWriter(); out.println("<p>Error no hay datos que insertar</p>"); } catch (IOException ex) { } finally { out.close(); } } } 2.3.2 Actualizar Una vez creado el servlet ActualizarEstudio busque el método doPost y modifíquelo con el siguiente código. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { /*Creando un objeto de la Clase Estudio **/ Estudio estudio=new Estudio(); /**Comprobando que los parametros no esten vacios**/ if(request.getParameter("idestudio").isEmpty() || request.getParameter("estudio").isEmpty()) errorNoData(response);//Si esta vacio llamamos el metodo errorNoData(); para que muestre msg de error else //si no { try { estudio.setIdEstudio(Integer.parseInt(request.getParameter("idestudio"))); estudio.setNombre(request.getParameter("estudio")); /**Manejador de entidades que nos permitiran acceder a la BD**/ /// EntityManager em; EntityManagerFactory emf;
  • 23. INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN WEB 3-4-2013 emf=Persistence.createEntityManagerFactory("JSPServlets_DBEJ01PU");//Persisten ceUnitName es el nombre // de la configuracion con la que se crea la conexion a la BD //Es con el archivo que nos genero al crear la conexion a la BD, //en el archivo persistence.xml EstudioJpaController con=new EstudioJpaController(emf);//Creamos un objeto de tipo Controlador de estudio //Creamos el estudio al crear se esta persitiendo en la BD PrintWriter out = response.getWriter(); out.println("<p>"+con.edit(estudio)+"</p>"); mostrarResult(out, con); } catch(NumberFormatException ex) { errorNoData(response); } catch (NonexistentEntityException ex) { errorNoData(response); } catch (Exception ex) { errorNoData(response); } } } catch(java.lang.NullPointerException e) { errorNoData(response); } } 2.3.3 Eliminar Una vez creado el servlet EliminarEstudio, modifique el método post por el cual por medio de parámetros enviado por el formulario eliminaremos el registro con el id equivalente al parámetro. @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { /*Creando un objeto de la Clase Estudio **/ Estudio estudio=new Estudio(); /**Comprobando que los parametros no esten vacios**/ if(request.getParameter("idestudio").isEmpty() ) errorNoData(response);//Si esta vacio llamamos el metodo errorNoData(); para que muestre msg de error else //si no { try
  • 24. INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN WEB 3-4-2013 { estudio.setIdEstudio(Integer.parseInt(request.getParameter("idestudio"))); /**Manejador de entidades que nos permitiran acceder a la BD**/ /// EntityManager em; EntityManagerFactory emf; emf=Persistence.createEntityManagerFactory("JSPServlets_DBEJ01PU");//Persisten ceUnitName es el nombre // de la configuracion con la que se crea la conexion a la BD //Es con el archivo que nos genero al crear la conexion a la BD, //en el archivo persistence.xml EstudioJpaController con=new EstudioJpaController(emf);//Creamos un objeto de tipo Controlador de estudio PrintWriter out = response.getWriter(); out.println("<p>"+con.destroy(estudio.getIdEstudio())+"</p>n" );//Mandamos a llamar el metodo para que elimine el registro //de la BD mostrarResult(out, con); } catch(NumberFormatException ex) { errorNoData(response); } catch (NonexistentEntityException ex) { errorNoData(response); } catch (Exception ex) { errorNoData(response); } } } catch(java.lang.NullPointerException e) { errorNoData(response); } } 2.4 JSP 2.4.1 Crear 1. Cree las paginas JSP, Actualizar, Crear, Eliminar Debe tener en total 3 archivos
  • 25. INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN WEB 3-4-2013 2. Modifique el código por el siguiente 3. El servlet al que se comunicara será el de CrearEstudio por el método post <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <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="../CrearEstudio"> <p> <label for="Estudio">Estudio</label> <input type="text" name="estudio" id="estudio" /> </p> <p> <input type="submit" name="btnInsertar" id="btnInsertar" value="Insertar" /> </p> </form> </body> </html> Ejecute el archivo compílelo con ctrl+mayus+f6, o con clic derecho y de clic en la opción Run File Una vez compilado puede verlo en su navegador.
  • 26. INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN WEB 3-4-2013 De clic en el botón crear. Resultado: Base de datos: 2.4.2 Actualizar <%--Imports de clases--%> <%@page import="controlador.Generador"%> <%@page import="servlets.CrearEstudio"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body>
  • 27. INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN WEB 3-4-2013 <form id="form1" name="form1" method="post" action="../ActualizarEstudio"> <p> <label>ID-Estudio:</label> <%--Llamando a metodo estico de la clase Generador--%> <% out.print(Generador.crearSelect()); %> </p> <p><label>Estudio:</label> <input type="text" value="" name="estudio" id="estudio"> </p> <p> <input type="submit" name="btnActualizar" id="btnEliminar" value="Actualizar" /> </p> </form> </body> </html> Resultado: Base de datos:
  • 28. INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN WEB 3-4-2013 2.4.3 Eliminar <%--Imports de clases--%> <%@page import="controlador.Generador"%> <%@page import="servlets.CrearEstudio"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <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="../EliminarEstudio"> <p> <label>ID-Estudio:</label> <%--Llamando a metodo estico de la clase Generador--%> <% out.print(Generador.crearSelect()); %> </p> <p> <input type="submit" name="btnEliminar" id="btnEliminar" value="Eliminar" /> </p> </form> </body> </html> Resultado:
  • 29. INTERCONEXIÓN DE UNA BD A UNA APLICACIÓN WEB 3-4-2013 Base de datos: