simple usando JSP, Servlet y MySQL
En este tutorial, vamos a crear un simple CRUD (Crear Lee Actualización Borrar) Aplicación Web de gestión de usuarios utilizando JSP, Servlet y MySQL.Para este tutorial, vamos a necesitar las siguientes herramientas: (La versión anterior o posterior debe también funciona). Por otra parte, se supone que el conocimiento básico de Java.
. Eclipse IDE for Java EE Developers (Indigo – ver. 3.7)
2. Apache Tomcat ver 7.0
3. MySQL Community Server and MySQL Workbench (GUI Tool)
4. MySQL Connector for Java
5. jstl.jar y standard.jar. Usted puede obtener estos tarros de su Tomcat. Compruebe en este directorio: (su gato directory)—>apache-tomcat-7.0.26-windows-x86—>apache-tomcat-7.0.26—>webapps—>examples—>WEB-INF—>lib
Te diré donde debes poner estos frascos más tarde.
6. jQuery JavaScript capacidad. En este caso, sólo la utilizamos para el componente datepicker
En primer lugar, vamos a crear la base de datos y la tabla de usuario utilizando los siguientes scripts SQL:
DROP TABLE IF EXISTS `producto`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `producto` (
`idProducto` int(11) NOT NULL AUTO_INCREMENT,
`descripcion` varchar(45) DEFAULT NULL,
`calidad` varchar(45) DEFAULT NULL,
`Metrado` varchar(45) DEFAULT NULL,
`Precio_venta` decimal(8,2) DEFAULT NULL,
`Precio_compra` decimal(8,2) DEFAULT NULL,
`Proveedor` varchar(45) DEFAULT NULL,
`Stock_minimo` int(11) DEFAULT NULL,
`stokc_maximo` int(11) DEFAULT NULL,
`fotografia` varchar(45) DEFAULT NULL,
PRIMARY KEY (`idProducto`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
A continuación, cree una nueva clase Java. en la carpeta abcsac.modelo. El nombre de "Producto.java" e insertar estos códigos siguientes. Cada una de las variables en esta clase representa el campo en la tabla USERS en nuestra base de datos.
public class Producto {
private int idProducto;
private String descripcion;
private String calidad;
private String metrado;
private double precio_venta;
private double precio_compra;
private String proveedor;
private Integer stock_minimo;
private Integer stock_maximo;
private String fotografia;
public Producto() {
// TODO Auto-generated constructor stub
}
//Crear get y set
}
Crear una nueva clase en el paquete abcsac.dao y el nombre BaseDAO.java
Esta clase se encarga cerrar las conexiónes de base de datos a nuestro servidor MySQL.
public class BaseDAO {
protected void cerrarConexion(Connection con) throws RuntimeException {
try {
if (con != null && !con.isClosed()) {
con.close();
}
} catch (SQLException se) {
System.err.println("Error: cerrarConexion: " + se);
}
}
protected void cerrarResultSet(ResultSet rs) throws RuntimeException {
try {
if (rs != null) {
rs.close();
}
} catch (SQLException se) {
System.err.println("Error: cerrarResultSet: " + se);
}
}
protected void cerrarStatement(PreparedStatement stmt)
throws RuntimeException {
try {
if (stmt != null) {
stmt.close();
}
} catch (SQLException se) {
System.err.println("Error: cerrarStatement: " + se);
}
}
protected void cerrarCallable(CallableStatement callstmt)
throws RuntimeException {
try {
if (callstmt != null) {
callstmt.close();
}
} catch (SQLException se) {
System.err.println("Error: cerrarCallable: " + se);
}
}
}
Crear una nueva clase en el paquete abcsac.dao y el nombre ProductoDao.java
Esta clase se encarga de hacer el crud leer, insertar, modificar y eliminar
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import abcsac.excepcion.DAOExcepcion;
import abcsac.modelo.Producto;
import abcsac.util.ConexionBD;
public class ProductoDao extends BaseDAO {
public Producto insertar(Producto vo) throws DAOExcepcion {
String query = "INSERT INTO producto(descripcion,calidad,Metrado,"
+ "Precio_venta,Precio_compra,"
+ "Proveedor,Stock_minimo,"
+ "stokc_maximo,fotografia) VALUES (?,?,?,?,?,?,?,?,?)";
Connection con = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
con =ConexionBD.obtenerConexion();
stmt = con.prepareStatement(query);
stmt.setString(1, vo.getDescripcion());
stmt.setString(2, vo.getCalidad());
stmt.setString(3, vo.getMetrado());
stmt.setDouble(4, vo.getPrecio_venta());
stmt.setDouble(5, vo.getPrecio_compra());
stmt.setString(6, vo.getProveedor());
stmt.setInt(7, vo.getStock_minimo());
stmt.setInt(8, vo.getStock_maximo());
stmt.setString(9, vo.getFotografia());
int i = stmt.executeUpdate();
if (i != 1) {
throw new SQLException("No se pudo insertar");
}
} catch (SQLException e) {
System.err.println(e.getMessage());
throw new DAOExcepcion(e.getMessage());
}finally {
this.cerrarResultSet(rs);
this.cerrarStatement(stmt);
this.cerrarConexion(con);
}
return vo;
}
public Collection<Producto> listar() throws DAOExcepcion {
Collection<Producto> c = new ArrayList<Producto>();
Connection con = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
con = ConexionBD.obtenerConexion();
System.err.println(con);
String query = "SELECT * FROM producto";
stmt = con.prepareStatement(query);
rs = stmt.executeQuery();
while (rs.next()) {
Producto vo = new Producto();
vo.setIdProducto(rs.getInt("idProducto"));
vo.setDescripcion(rs.getString("descripcion"));
vo.setCalidad(rs.getString("calidad"));
vo.setMetrado(rs.getString("metrado"));
vo.setPrecio_venta(rs.getDouble("precio_venta"));
vo.setPrecio_compra(rs.getDouble("Precio_compra"));
vo.setStock_maximo(rs.getInt("stokc_maximo"));
vo.setStock_minimo(rs.getInt("Stock_minimo"));
c.add(vo);
}
} catch (SQLException e) {
System.err.println(e.getMessage());
throw new DAOExcepcion(e.getMessage());
}finally {
this.cerrarResultSet(rs);
this.cerrarStatement(stmt);
this.cerrarConexion(con);
}
System.out.println(c.size());
return c;
}
public Producto obtener(Integer idProducto) throws DAOExcepcion {
Producto vo = new Producto();
Connection con = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
String query = "select * from producto where idProducto=?";
con = ConexionBD.obtenerConexion();
stmt = con.prepareStatement(query);
stmt.setInt(1, idProducto);
rs = stmt.executeQuery();
if (rs.next()) {
vo.setIdProducto(rs.getInt("idProducto"));
vo.setDescripcion(rs.getString("descripcion"));
vo.setCalidad(rs.getString("calidad"));
vo.setMetrado(rs.getString("metrado"));
vo.setPrecio_venta(rs.getDouble("precio_venta"));
vo.setPrecio_compra(rs.getDouble("Precio_compra"));
vo.setProveedor(rs.getString("Proveedor"));
vo.setStock_minimo(rs.getInt("Stock_minimo"));
vo.setStock_maximo(rs.getInt("stokc_maximo"));
vo.setFotografia(rs.getString("fotografia"));
}
} catch (SQLException e) {
System.err.println(e.getMessage());
throw new DAOExcepcion(e.getMessage());
}finally {
this.cerrarResultSet(rs);
this.cerrarStatement(stmt);
this.cerrarConexion(con);
}
return vo;
}
public Producto actualizar(Producto vo) throws DAOExcepcion {
String query = "UPDATE producto set descripcion=?,calidad=?,Metrado=?,"
+ "Precio_venta=?,Precio_compra=?,"
+ "Proveedor=?,Stock_minimo=?,"
+ "stokc_maximo=?,fotografia=? where idProducto=?";
Connection con = null;
PreparedStatement stmt = null;
try {
con = ConexionBD.obtenerConexion();
stmt = con.prepareStatement(query);
stmt.setString(1, vo.getDescripcion());
stmt.setString(2, vo.getCalidad());
stmt.setString(3, vo.getMetrado());
stmt.setDouble(4, vo.getPrecio_venta());
stmt.setDouble(5, vo.getPrecio_compra());
stmt.setString(6, vo.getProveedor());
stmt.setInt(7, vo.getStock_minimo());
stmt.setInt(8, vo.getStock_maximo());
stmt.setString(9, vo.getFotografia());
stmt.setInt(10, vo.getIdProducto());
int i = stmt.executeUpdate();
if (i != 1) {
throw new SQLException("No se pudo actualizar");
}
} catch (SQLException e) {
System.err.println(e.getMessage());
throw new DAOExcepcion(e.getMessage());
} finally {
this.cerrarStatement(stmt);
this.cerrarConexion(con);
}
return vo;
}
public void eliminar(Integer idUsuario) throws DAOExcepcion {
String query = "DELETE FROM producto where idProducto=?";
Connection con = null;
PreparedStatement stmt = null;
try {
con = ConexionBD.obtenerConexion();
stmt = con.prepareStatement(query);
stmt.setInt(1, idUsuario);
int i = stmt.executeUpdate();
if (i != 1) {
throw new SQLException("No se pudo eliminar");
}
} catch (SQLException e) {
System.err.println(e.getMessage());
throw new DAOExcepcion(e.getMessage());
} finally {
this.cerrarStatement(stmt);
this.cerrarConexion(con);
}
}
}
.
Crear una nuevo servlet en el paquete abcsac.servlet y el nombre ProductoListarServlet.java
Esta servlet encarga de hacer un peticion al dao y traer los datos y luego mostrar en un jsp con RequestDispatcher
@WebServlet("/ProductoListarServlet")
public class ProductoListarServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public ProductoListarServlet() {
super();
// TODO Auto-generated constructor stub
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("dentro de listar");
try {
ProductoDao dao = new ProductoDao();
Collection<Producto> listaProducto = new ArrayList<Producto>();
listaProducto = dao.listar();
request.setAttribute("listaProducto", listaProducto);
RequestDispatcher reqdis = request.getRequestDispatcher("listado.jsp");
reqdis.forward(request, response);
} catch (Exception e) {
// TODO: handle exception
}
}
Crear una nuevo jsp con el nombre de listado.jsp dentro de la carpeta WebContent
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap-theme.min.css">
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script
src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
<title>sistema ABCSAC</title>
</head>
<body>
<br><br><br>
<div class="container">
<nav id="myNavbar" class="navbar navbar-default" role="navigation">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="container">
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<li class="dropdown">
<a href="#" data-toggle="dropdown" class="dropdown-toggle">Productos <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="Nuevo.jsp">Nuevo</a></li>
<li><a href="producto.jsp">Listar</a></li>
<li><a href="#">Buscar</a></li>
</ul>
</li>
<li class="dropdown"> <a href="#" data-toggle="dropdown" class="dropdown-toggle">Reporte <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="Reporte">Reporte general</a></li>
<li><a href="ServletSemaforizacion">Reporte Semaforizacion</a></li>
</ul>
</li>
<li><a href="#">Stoct</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li class="dropdown">
</li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li class="dropdown">
<a href="#" data-toggle="dropdown" class="dropdown-toggle">Admin <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="#">Modificar Usuario</a></li>
<li><a href="index.jsp">Salir del sistema</a></li>
</ul>
</li>
</ul>
</div><!-- /.navbar-collapse -->
</div>
</nav>
</div>
<div class="container">
<table class="table table-bordered table table-hover ">
<thead>
<tr>
<th>Codigo</th>
<th>Descripcion</th>
<th>Calidad</th>
<th>metrado</th>
<th>Precio Ve</th>
<th>Precio com</th>
<th>Accion</th>
</tr>
</thead>
<tbody>
<c:forEach items="${listaProducto}" var="listaProducto">
<tr>
<td><c:out value="${listaProducto.idProducto}" /></td>
<td><c:out value="${listaProducto.descripcion}" /></td>
<td><c:out value="${listaProducto.calidad}" /></td>
<td><c:out value="${listaProducto.metrado}" /></td>
<td><c:out value="${listaProducto.precio_venta}" /></td>
<td><c:out value="${listaProducto.precio_compra}" /></td>
<td> <a href="EtitarProductoServlet?idProducto=${listaProducto.idProducto}" class="btn btn-primary" role="button">Editar</a>
<a href="<%=request.getContextPath()%>/ProductoEliminarServlet?idProducto=${listaProducto.idProducto}" onclick="return confirm('¿Está seguro que desea eliminar');" class="btn btn-danger" role="button">Eliminar</a>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</body>
</html>
No hay comentarios:
Publicar un comentario