Proyecto Con Servlets BD JSP
Proyecto Con Servlets BD JSP
Proyecto Con Servlets BD JSP
1. Crear en el disco C una carpeta llamada Java Web, dentro de ella una carpeta llamada
Sesion 04, dentro de ella una carpeta llamada Laboratorio y dentro de ella una carpeta
llamada Articulos-JSP-Servlet.
2. Ejecutar el Apache NetBeans.
3. Elija el menú File, opción New Project, en categories seleccione Java with Maven para
crear un proyecto web dinámico y permitir por medio de maven, la descarga de las
librerías de dependencia y en Projects Web Application. Luego pulsar el botón Next.
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.30</version>
</dependency>
Dependencias
Declaradas
8. Pulsar el botón derecho del mouse sobre el proyecto, opción New / opción Others, elija
Categories Web, File Type Standard Deployment Descriptor (web.xml) y pulsar el
botón Next y luego Finish.
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
</web-app>
https://www.apachefriends.org/es/download.html
11. Ejecutar el Panel de Control de XAMPP y active los servicios de Apache y MySQL:
http://localhost:8080/
13. Hacer clic en el enlace Nueva de phpMyAdmin para crear la base de datos, para el
nombre de la base de datos asuma: javaweb_crud y pulse el botón Crear.
14. Seleccione la base de datos haciendo clic, luego ir a la ficha SQL y ejecutar el siguiente
código para crear la tabla: (Debe pulsar el botón Continuar para procesar el comando
y crear la tabla)
15. Ingresar los siguientes registros a la tabla pulsando la ficha SQL y escriba el siguiente
código y botón Continuar:
16. Hacer clic sobre la tabla articulos en la base de datos y muestra los siguientes
registros:
18. Modificar la tabla para que el campo id acepte valores con incremento en forma
automática.
Considere que para lograr una conexión con una base de datos en MySQL, se usa el
puerto 3306.
Esta clase lo que hace es crear la conexión con los parámetros pasados desde el
archivo web.xml, la clase contiene dos métodos, uno para conectar y otro para
desconectar, se añade también el acceso a la variable de la conexión jdbcConnection,
de manera que se la pueda obtener desde cualquier parte del DAO, la clase debe estar
dentro del paquete com.ecodeup.articulos.model.
19. Para crear la clase de conexión, sobre la carpeta Source Packages del proyecto pulsar
el botón derecho del mouse y elija la opción New, opción Java Class..y en nombre de
la clase ingrese Conexión. Para el paquete ingrese com.ecodeup.articulos.model y
pulsar el botón Finish.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
*
* @author Dante
*/
public class Conexion {
private Connection jdbcConnection;
private String jdbcURL;
private String jdbcUsername;
private String jdbcPassword;
21. Para crear la clase Articulo para el modelo, sobre la carpeta Source Packages del
proyecto pulsar el botón derecho del mouse y elija la opción New, opción Java Class..y
en nombre de la clase ingrese Articulo. Para el paquete ingrese
com.ecodeup.articulos.model y pulsar el botón Finish.
22. El código para esta clase es el siguiente:
package com.ecodeup.articulos.model;
/**
*
* @author Dante
*/
public class Articulo {
private int id;
private String codigo;
private String nombre;
private String descripcion;
private double existencia;
private double precio;
public Articulo(int id, String codigo, String nombre, String descripcion, double
existencia, double precio) {
this.id = id;
this.codigo = codigo;
this.nombre = nombre;
this.descripcion = descripcion;
this.existencia = existencia;
this.precio = precio;
}
//getters y setters
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getCodigo() {
return codigo;
}
public void setCodigo(String codigo) {
this.codigo = codigo;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getDescripcion() {
return descripcion;
}
public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}
public double getExistencia() {
return existencia;
}
Esta clase contiene todos los métodos CRUD para la tabla artículos, debe estar dentro
del paquete com.ecodeup.articulos.dao.
23. Para crear la clase ArticuloDAO para el modelo, sobre la carpeta Source Packages del
proyecto pulsar el botón derecho del mouse y elija la opción New, opción Java Class..y
en nombre de la clase ingrese ArticuloDAO. Para el paquete ingrese com.ecodeup.
articulos.dao y pulsar el botón Finish.
24. El código para esta clase es el siguiente:
package com.ecodeup.articulos.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import com.ecodeup.articulos.model.Articulo;
import com.ecodeup.articulos.model.Conexion;
/**
*
* @author Dante
*/
public class ArticuloDAO {
private Conexion con;
private Connection connection;
// insertar artículo
public boolean insertar(Articulo articulo) throws SQLException {
String sql = "INSERT INTO articulos (id, codigo, nombre, descripcion,
existencia, precio) VALUES (?, ?, ?,?,?,?)";
System.out.println(articulo.getDescripcion());
con.conectar();
connection = con.getJdbcConnection();
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1, null);
statement.setString(2, articulo.getCodigo());
statement.setString(3, articulo.getNombre());
statement.setString(4, articulo.getDescripcion());
statement.setDouble(5, articulo.getExistencia());
statement.setDouble(6, articulo.getPrecio());
while (resulSet.next()) {
int id = resulSet.getInt("id");
String codigo = resulSet.getString("codigo");
String nombre = resulSet.getString("nombre");
String descripcion = resulSet.getString("descripcion");
Double existencia = resulSet.getDouble("existencia");
Double precio = resulSet.getDouble("precio");
Articulo articulo = new Articulo(id, codigo, nombre, descripcion,
existencia, precio);
listaArticulos.add(articulo);
}
con.desconectar();
return listaArticulos;
}
// obtener por id
public Articulo obtenerPorId(int id) throws SQLException {
Articulo articulo = null;
return articulo;
}
// actualizar
public boolean actualizar(Articulo articulo) throws SQLException {
boolean rowActualizar = false;
String sql = "UPDATE articulos SET
codigo=?,nombre=?,descripcion=?,existencia=?, precio=? WHERE id=?";
con.conectar();
connection = con.getJdbcConnection();
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1, articulo.getCodigo());
//eliminar
public boolean eliminar(Articulo articulo) throws SQLException {
boolean rowEliminar = false;
String sql = "DELETE FROM articulos WHERE ID=?";
con.conectar();
connection = con.getJdbcConnection();
PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1, articulo.getId());
return rowEliminar;
}
}
25. Para crear el servlet AdminArticulo, sobre la carpeta Source Packages del proyecto
pulsar el botón derecho del mouse y elija la opción New, opción Servlet y en nombre
de la clase ingrese AdminArticulo. Para el paquete ingrese
com.ecodeup.articulos.controller y pulsar el botón Next.
package com.ecodeup.articulos.controller;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.ecodeup.articulos.dao.ArticuloDAO;
import com.ecodeup.articulos.model.Articulo;
/**
* Servlet implementation class AdminArticulo
*/
@WebServlet("/adminArticulo")
public class AdminArticulo extends HttpServlet {
private static final long serialVersionUID = 1L;
ArticuloDAO articuloDAO;
/**
* @see HttpServlet#HttpServlet()
*/
public AdminArticulo() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
System.out.println("Hola Servlet..");
String action = request.getParameter("action");
System.out.println(action);
try {
switch (action) {
case "index":
index(request, response);
break;
case "nuevo":
nuevo(request, response);
break;
case "register":
System.out.println("entro");
registrar(request, response);
break;
case "mostrar":
mostrar(request, response);
break;
case "showedit":
showEditar(request, response);
break;
case "editar":
editar(request, response);
break;
case "eliminar":
eliminar(request, response);
break;
default:
break;
}
} catch (SQLException e) {
e.getStackTrace();
}
/**
* @see HttpServlet#doPost(HttpServletRequest request,
HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
System.out.println("Hola Servlet..");
doGet(request, response);
RequestDispatcher dispatcher =
request.getRequestDispatcher("index.jsp");
dispatcher.forward(request, response);
}
RequestDispatcher dispatcher =
request.getRequestDispatcher("/vista/editar.jsp");
dispatcher.forward(request, response);
}
}
}
Las vistas son simples archivos con extensión. jsp, en las cuales usamos JSTL (Java
Server Pages Tag Library) que no son más que etiquetas y que nos permiten
manipular o embeber código java dentro de una página JSP.
Para poder hacer uso de estas etiquetas, se debe incluir una declaración en el inicio de
la página JSP donde vayamos a usarlas (línea 4), en este caso como ejemplo la página
mostrar.jsp que está dentro de la carpeta vista y que muestra todos los artículos,
finalmente recordar que (a excepción de la página index.jsp) las páginas JSP están dentro
de la carpeta vista
28. Dentro de la carpeta Web Pages crear la carpeta vista. Botón derecho sobre Web
Pages, elija la opción New, opción Folder. En Folder Name ingrese vista y luego el
botón Finish.
29. Para crear la página mostrar.jsp, pulsar el botón derecho del mouse sobre la carpeta
vista, elija la opción New y luego la opción jsp. En nombre ingrese mostrar y pulsar el
botón Finish.
30. Hacer lo mismo para crear las páginas editar.jsp y register.jsp.
PAGINA mostrar.jsp
</body>
</html>
PAGINA register.jsp
</table>
<br>
<table border="0" align="center">
<tr>
<td><input type="submit" value="Agregar" name="agregar"></td>
</tr>
</form>
</body>
</html>
<tr>
<td><label>Precio</label></td>
<td><input type="text" name="precio" value='<c:out
value="${articulo.precio }"></c:out>' ></td>
</tr>
</table>
</body>
</html>
34. Borrar la página index.html, para ello sobre esta página, pulsar el botón derecho del
mouse, elija la opción Delete y botón Yes.
35. Sobre la carpeta Web Pages, pulsar el botón derecho del mouse, elija la opción New,
opción JSP, en File Name, ingresar indexy botón Finish.
</body>
</html>
Editar el Articulo: