sábado, 16 de mayo de 2015

Tutoriales para Principiantes

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