miércoles, 20 de mayo de 2015

JSP y JSTL


Procedimiento y Resultados:
1.   primer jsp
 primer.jsp
<html>
<body>
<%
String mensaje = "D.S.U.N.A.L.M - Java Web";
out.println(mensaje);
%>
</body>
</html>
2.   EXPRESIONES
expresiones.jsp
<html>
<body>
<%= new java.util.Date()%>
</body>
</html>
expresiones2.jsp
<html>
<body>
<%
String curso = "Java Web";
%>   
<%=curso%>
</body>
</html>
3.   DECLARACIÓN
      declaracion.jsp
<html> 
    <body>
<%! int count = 0; %>
<% count++; %>
Ud. es el visitante <%=count%>    
   
    </body>
</html>
4.   COMENTARIOS
      comentarios.jsp
<html> 
    <body>
     Comentarios
<%-- Comentario 1 --%>
<!-- Comentario 2 -->
<%
// Comentario 3
/* Comentario 4
 */
%>   
    </body>
</html>
5.   IMPORT
importar.jsp
<%@page import="java.util.*" %>
<html>
<body>
<%
Date fecha = new Date();
String total=fecha.getDate()+"-"+(fecha.getMonth()+1)+"-" + (fecha.getYear()+1900);
%>
<%=total%>
</body>
</html>
6.   mostrando un collection
            mostrarcollection.jsp
<%@page import="java.util.*"%>
<html>
 <body>
<%
Collection<String> c = new ArrayList<String>();
c.add("servlets");
c.add("jsp");
c.add("beans");
c.add("tags");
for(String x : c){
       out.print(x);
}
%>
</body>
</html>
  1. Ejercicio: Enviar un Collection de un Servlet a un JSP
Persona.java
package ejercicio;
public class Persona {
   
    private String nombre;
    private String apellidos;
   
    public Persona(){
    }
    public Persona(String pNombre, String pApellidos) {
        this.nombre = pNombre;
        this.apellidos = pApellidos;
    }
   
    public String getNombre() {
        return this.nombre;
    }
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
    public String getApellidos() {
        return this.apellidos;
    }
    public void setApellidos(String apellidos) {
        this.apellidos = apellidos;
    }   
}
MostrarPersonasServlet.java
package ejercicio.servlets;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {       
        Persona p1 = new Persona("erasmo", "saavedra robles");
        Persona p2 = new Persona("juan", "rodriguez condezo");
        Persona p3 = new Persona("jose", "rodriguez condezo");
       
        Collection<Persona> c = new ArrayList<Persona>();
        c.add(p1);
        c.add(p2);
        c.add(p3);
       
        request.setAttribute("personas", c);
       
        RequestDispatcher rd = request.getRequestDispatcher("personas.jsp");
        rd.forward(request, response);
}
            personas.jsp
<%@page import="ejercicio.Persona, java.util.*"%>
<html>
    <body>
   
    <table border="1">
      <tr><th>Nombre</th><th>Apellidos</th></tr>
<%
Collection<Persona> c = (ArrayList<Persona>)request.getAttribute("personas");
for(Persona p : c) {
    out.println("<tr><td>");
    out.println(p.getNombre());
    out.println("</td><td>");
    out.println(p.getApellidos());
    out.println("</td></tr>");
}
%>    </table>
   
    </body>
</html>
8.   EJERCICIO INCLUDe
inclusion.jsp
<html>
<body>
<h3>Inclusión en compilación</h3>
<%@include file="tabla.jsp" %>
<h3>Inclusión en ejecución</h3>
<jsp:include page="tabla.jsp"/>
</body>
</html>
     tabla.jsp
<table border="1">
<tr><td colspan="2">Tabla de Prueba</td></tr>
<tr><td>Celda 1</td><td>Celda 2</td></tr>
<tr><td>Celda 3</td><td>Celda 4</td></tr>
<tr><td>Celda 5</td><td>Celda 6</td></tr>
</table>
9.   VARIABLE implicita request
formulario.jsp
<html>
<body>
<form action="autentifica.jsp" method="post">
         Codigo: <input type="text" name="cod"><br>
         Clave:   <input type="password" name="cla"><br>
         <input type="Submit" value="Aceptar">
</form>
</body>
­</html>


autentifica.jsp
<html>
<body>
<%
String codigo = request.getParameter("cod");
String clave = request.getParameter("cla");
String mensaje="";
if("tecsup".equals(codigo) && "javaweb".equals(clave)) {
    mensaje="Bienvenido "+codigo;
} else {
    mensaje="Codigo o Clave Incorrecta";
}
%>
<%=mensaje%>
</body>
</html>
10.                VARIABLES IMPLICITA session
iniciar-contador.jsp
<html>
<body>
<% session.setAttribute("visitas","0"); %>
<h1>Contador de visitas iniciado!</h1>
<a href="contador.jsp">Continuar</a>
</body>
</html>
  
      contador.jsp
<html>
<body>
<%
int nro = Integer.parseInt((String)session.getAttribute("visitas"));
nro++;
session.setAttribute("visitas",""+nro);
%>
<h1>Página visitada <%=nro%> veces (sólo en esta sesión).</h1>
</body>
</html>


  1. EJERCICIO: AREA

<html>
<body>
Usando PI igual a <%=pi%>, el área del círculo<br>
con un radio de 3 es  <%=area(3)%>
<%!
double area(double r) {
   return r*r*pi;
}
%>
<%! final double pi=3.14159; %>
</body>
</html>


JSTL
Copiar las librerías jstl.jar y standard.jar
1.    Test1.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<body>
<c:set scope="session" var="name" value="<b>David</b>"/>
Bienvenido <c:out value="Hola ${sessionScope.name}"
default="Invitado" escapeXml="false"/>
</body>
</html>
2.    Test2.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
  String nombre = "david desde variable de clase";
%>
<c:set var="nom" value="<%=nombre %>"/>
<c:out value="${pageScope.nom}"/>
<%
session.setAttribute("nombre", "david");
pageContext.setAttribute("nombre", "juan");
request.setAttribute("nombre", "jose");
application.setAttribute("nombre", "toti");
%>
<html>
    <body>
    <c:out value="${sessionScope.nombre}" />
    <br/>
    <c:out value="${pageScope.nombre}" />
    <br/>
    <c:out value="${requestScope.nombre}" />
    <br/>   
    <c:out value="${applicationScope.nombre}" />
    <br/>
    1 <c:out value="${pageContext}" />
    <br/>
    2 <c:out value="${pageContext.request.method}"/>
    <br/>
    3 <c:out value="${pageContext.request.queryString}"/>
     <br/>
    4 <c:out value="${pageContext.servletContext.serverInfo}"/>  
    </body>
</html>


Pregunta.java
package tarea04.vo;
public class Pregunta {
            private int idPregunta;
            private String texto;
// Generar sus métodos set y get
}
3.    Test3.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page import="tarea04.vo.Pregunta,java.util.*"%>
<html>
    <body>
        <%
        Pregunta p1 = new Pregunta();
        p1.setIdPregunta(1);
        p1.setTexto("¿Qué es jstl?");
        Pregunta p2 = new Pregunta();
        p2.setIdPregunta(2);
        p2.setTexto("¿Qué es EL?");
       
        Collection<Pregunta> c = new ArrayList<Pregunta>();
        c.add(p1);
        c.add(p2);       
        request.setAttribute("preguntas", c);
        %>     
        <c:forEach items="${requestScope.preguntas}"
        var="p" varStatus="i" >
            ${i.count}.- ${p.texto} <br/>
        </c:forEach>
       
    </body>
</html>
4.    Test4.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<html>
<body>
<c:set var="titulo" value="Este es el TITULO de la PAGINA"/>
${fn:toUpperCase(titulo)}
<br/>
${fn:substring(titulo, 2,10)}
<br/>
${fn:replace(titulo, "TITULO", "TITLE")}
<br/>
${fn:escapeXml("<foo>body of foo</foo>")}
</body>
</html>
5.    Test5.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
    <body>
        <h3>IF</h3>
        <c:if test='${param.ok == "yes"}'>
            Hola <c:out value="${param.name}!"/>
        </c:if>
       
        <h3>CHOOSE</h3>
        <c:choose>
            <c:when test='${param.curso == "java"}'>
            Curso de Java
            </c:when>
            <c:when test='${param.curso == "php"}'>
            Curso de PHP
            </c:when>
        </c:choose>
        
        <h3>FOREACH</h3>
        <table>
            <tr><th>Value</th>
            <th>Square</th></tr>
            <c:forEach var="x" begin="0" end="10" step="2">
                <tr><td><c:out value="${x}"/></td>
                <td><c:out value="${x * x}"/></td></tr>
            </c:forEach>
        </table>
        <c:set var="minombre" value="${param.minombre}Rodriguez"/>
        <a href="<c:url value="mock.jsp?a=${minombre}"/>">hazme click</a>
       
        <br/>
        <c:import url="http://www.gooogle.com"/>
       
    </body>
</html>
6.    Test6.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
    <body>
<a href="<c:url value="mock.jsp"><c:param name="n" value="a"/></c:url>">ir a</a>
<c:out value="<h3>"  escapeXml="true"/>
    </body>
</html>


ETIQUETAS PERSONALIZADAS
  1. PRIMERA ETIQUETA
PrimerTag.java
package laboratorio6.tag;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
public class PrimerTag extends TagSupport {
   public int doStartTag() throws JspException {
        try {
            pageContext.getOut().print("Esta es mi primera etiqueta.");
        } catch (Exception ex) {
            throw new JspException("Error al crear la primera etiqueta");
        }
        return SKIP_BODY;
    }
}
/WEB-INF/tld/EtiquetasPersonalizadas.tld
<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.0">
  <tlib-version>1.0</tlib-version>
  <short-name>EtiquetasPersonalizadas</short-name>
  <uri>/WEB-INF/EtiquetasPersonalizadas</uri>
  <tag>
    <name>mensaje</name>
    <tag-class>laboratorio6.tag.PrimerTag</tag-class>
    <body-content>empty</body-content>
  </tag>
 
</taglib>
test1.jsp
<%@taglib uri="/WEB-INF/EtiquetasPersonalizadas" prefix="mistag" %>
<html>
<body>
<mistag:mensaje/>
</body>
</html>


  1. ETIQUETA PONER EN MAYÚSCULA

PonerEnMayusculaTag.java
package laboratorio6.tag;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyTagSupport;
public class PonerEnMayusculaTag extends BodyTagSupport {
  
    public int doStartTag() throws JspException {
        return EVAL_BODY_BUFFERED;
    }
   
    public int doAfterBody() throws JspException {
        try {
            JspWriter out = bodyContent.getEnclosingWriter();
            String text = bodyContent.getString();
            out.print(text.toUpperCase());
        } catch (IOException e){
            throw new JspException(e.getMessage());
        }
        return SKIP_BODY;
    }
}
            /WEB-INF/tld/EtiquetasPersonalizadas.tld
  <tag>
    <name>PonerEnMayuscula</name>
    <tag-class>laboratorio6.tag.PonerEnMayusculaTag</tag-class>
    <body-content>JSP</body-content>
  </tag> 
test2.jsp
<%@taglib uri="/WEB-INF/EtiquetasPersonalizadas" prefix="mistag" %>
<html>
<body>
<mistag:PonerEnMayuscula>Curso de Java</mistag:PonerEnMayuscula>
</body>
</html>


  1. ETIQUETA QUE MUESTRA UN ARREGLO COMO TABLA

            MostrarArregloComoTablaTag.java
package laboratorio6.tag;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.TagSupport;
public class MostrarArregloComoTablaTag extends TagSupport {
   
    private String nombreAtributo;
    private String nombreScope;
  
    public void setNombreAtributo(String nombreAtributo){
        this.nombreAtributo = nombreAtributo;
    }
   
    public void setNombreScope(String nombreScope){
        this.nombreScope = nombreScope;
    }
    private int getScopeAsInt(){
        if("request".equals(nombreScope)){
            return PageContext.REQUEST_SCOPE;
        }
        if("session".equals(nombreScope)){
            return PageContext.SESSION_SCOPE;
        }
        if("application".equals(nombreScope)){
            return PageContext.APPLICATION_SCOPE;
        }
        return PageContext.PAGE_SCOPE;
    }
   
    public int doStartTag() throws JspException {
        try {
            String[] cadenas = (String[])pageContext.getAttribute(nombreAtributo, getScopeAsInt());
            JspWriter out = pageContext.getOut();
            out.print("<table border=\"1\">");
            for(int i=0; i<cadenas.length; i++){
                out.print("<tr><td>"+cadenas[i]+"</td></tr>");
            }
            out.print("</table>");            
        } catch (Exception e){
            throw new JspException(e.getMessage());
        }
        return SKIP_BODY;
    }
}
           
            /WEB-INF/tld/EtiquetasPersonalizadas.tld
  <tag>
    <name>MostrarArregloComoTabla</name>
    <tag-class>laboratorio6.tag.MostrarArregloComoTablaTag</tag-class>
    <body-content>empty</body-content>
    <attribute>
        <name>nombreAtributo</name>
        <required>true</required>
        <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
        <name>nombreScope</name>
        <required>true</required>
        <rtexprvalue>false</rtexprvalue>
    </attribute>
  </tag>
test3.jsp
<%@taglib uri="/WEB-INF/EtiquetasPersonalizadas" prefix="mistag" %>
<html>
<body>
   <%
   String[] cadenas = {"uno", "dos", "tres"};
   request.setAttribute("cadenas", cadenas);
   %>  
   <mistag:MostrarArregloComoTabla nombreAtributo="cadenas" nombreScope="request"/>
</body>
</html>
  1. EJERCICIO: ETIQUETA PERSONALIZADA
Escribir una etiqueta que realice lo siguiente:
Página JSP:
<%@taglib prefix="c" uri="/WEB-INF/tags/CabeceraTag.tld"%>
<%@taglib prefix="t" uri="/WEB-INF/tags/TablaTag.tld"%>
<%@taglib prefix="p" uri="/WEB-INF/tags/PieTag.tld"%>
<c:cabecera titulo="Tecsup" keyword="Programación en Java">
  Esta es la página principal
</c:cabecera>
<h1>Contenido de mi página</h1>
<%
String[][] productos = { {"1","libro"},
                                       {"2","borrador"},
                                       {"3","lapicero"}};
pageContext.setAttribute("productos", productos);
%>
<t:tabla arreglo="productos"/>
<p:pie contenido="Copyright @ 2005 por Tecsup"/>
Resultado en HTML:
<html>
   <head>
      <title>Tecsup</title>
      <meta name=”keyword” content=”Programación en Java”/>
   </head>
   <body>
      <b>E</b>sta <b>E</b>s <b>L</b>a <b>P</b>ágina <b>P</b>rincipal
      <br/>
      <h1>Contenido de mi página</h1>
      <table border=”1”>
         <tr><th>Id</th><th>Descripción</th>
         <tr><td>1</td><td>Libro</td></tr>               
         <tr><td>2</td><td>Libro</td></tr>
         <tr><td>3</td><td>Lapicero</td></tr>
      </table>
      <h3>Copyright @ 2005 por Tecsup</h3>
   </body>
</html>
Conclusiones:
En la presente sesión, se detalló los elementos y las directivas más importantes de los JSP. Las páginas JSP permiten crear contenido dinámico. Los JSP y los Servlets trabajan en conjunto para crear páginas dinámicas.

sábado, 16 de mayo de 2015

Reporte con itext con servlet


Crear una nuevo servlet en el paquete abcsac.servlet y el nombre Reporte.java  a continuacion escribe el codigo


import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;

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 abcsac.dao.ProductoDao;
import abcsac.excepcion.DAOExcepcion;
import abcsac.modelo.Producto;

import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;


@WebServlet("/Reporte")
public class Reporte extends HttpServlet {
    private static final long serialVersionUID = 1L;


    public Reporte() {
        super();
        // TODO Auto-generated constructor stub
    }

    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {

        response.setContentType("application/pdf");
        //response.setHeader("Content-disposition", "attachment");

        Document document = new Document();
        try{
        PdfWriter.getInstance(document, response.getOutputStream());
        document.open();
        document.add(new Paragraph(" Reporte General de Productos \n"
                + "\n"));
          Date date = Calendar.getInstance().getTime();
          DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy, hh:mm:ss a");
            String today = formatter.format(date);
            document.add(new Paragraph("Fecha Actual: "+ today));
           
        document.add(new Paragraph(" "));
        PdfPTable table = new PdfPTable(6);
        table.setTotalWidth(new float[]{ 20,110, 110, 95, 72, 72 });
        table.setLockedWidth(true);
       
        PdfPCell cell;
       
        cell = new PdfPCell(new Paragraph("Id"));
        cell.setBackgroundColor(BaseColor.LIGHT_GRAY);
        table.addCell(cell);
       
       
        cell = new PdfPCell(new Paragraph("Descripcion"));
        cell.setBackgroundColor(BaseColor.LIGHT_GRAY);
        table.addCell(cell);
       
        cell = new PdfPCell(new Paragraph("Calidad"));
        cell.setBackgroundColor(BaseColor.LIGHT_GRAY);
        table.addCell(cell);
       
       
        cell = new PdfPCell(new Paragraph("Metrado"));
        cell.setBackgroundColor(BaseColor.LIGHT_GRAY);
        table.addCell(cell);
       
       
       
        cell = new PdfPCell(new Paragraph("Stock Min"  ));
        cell.setBackgroundColor(BaseColor.LIGHT_GRAY);
        table.addCell(cell);
       
        cell = new PdfPCell(new Paragraph("Stock Max"));
        cell.setBackgroundColor(BaseColor.LIGHT_GRAY);
        table.addCell(cell);
       
       
       
       

         ProductoDao dao= new ProductoDao();
         Collection<Producto> pro = dao.listar();
         for (Iterator<Producto> iterator = pro.iterator(); iterator.hasNext();) {
            Producto producto = (Producto) iterator.next();
            table.addCell(String.valueOf(producto.getIdProducto()));
            table.addCell(producto.getDescripcion());
            table.addCell(producto.getCalidad());
            table.addCell(producto.getMetrado());
            table.addCell(String.valueOf(producto.getStock_minimo()));
            table.addCell(String.valueOf(producto.getStock_maximo()));
        }
       
       
        document.add(table);
        document.close();
        }catch(DocumentException e){
        e.printStackTrace();
        } catch (DAOExcepcion e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {

    }

}
 

Probar el ejemplo

<a href="Reporte">Reporte general</a>

 tal como se muestra

 

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>





 

jueves, 16 de abril de 2015

Introduccion al Luenguaje de Java

1. EL LENGUAJE JAVA

Java es un lenguaje de programación de alto nivel con el que se pueden escribir programas de cualquier tipo. Se dice que es un lenguaje de alto nivel porque se asemeja más al lenguaje humano, a diferencia de los lenguajes de bajo nivel que se asemejan más al lenguaje de las computadoras (conocidos como lenguajes máquina). Los programas escritos en Java no son comprensibles en forma directa por el procesador, por lo que requieren de pasos intermedios de traducción al lenguaje del
computador conocido como lenguaje máquina.

2. ETAPAS DE DESARROLLO DE UN PROGRAMA JAVA

Para desarrollar un programa en Java sigue las siguientes etapas:

2.1 Edición

En esta etapa, se escriben las instrucciones del programa usando el lenguaje Java y se guarda en un archivo cuyo nombre debe terminar con la extensión .java. Así, por ejemplo, el archivo podría llamarse Saludo.java. A este programa escrito en Java se denomina código fuente y para escribirlo se puede recurrir a cualquier editor de texto.

2.2 Compilación

En esta etapa, se compila el código fuente usando el compilador de Java, que es un programa denominado javac.exe, con lo que se obtiene un nuevo código conocido como código de bytes, que queda guardado en un archivo con el mismo nombre que el archivo de código fuente, pero con la extensión .class. Así, si el archivo de código fuente se denomina Saludo.java, el código de bytes quedará almacenado automáticamente en un archivo denominado Saludo.class.

2.3 Ejecución

En esta etapa, el código de bytes es ejecutado por la Máquina Virtual de Java (JVM, siglas en inglés de Java Virtual Machine). El código de bytes es el lenguaje de la JVM. Existe una JVM para cada plataforma (para cada sistema operativo); pero, todas las  JVM pueden ejecutar el mismo código de bytes. Así, el código de bytes es independiente de la plataforma. Esto hace que los programas Java puedan ser ejecutados en cualquier máquina que disponga de una JVM. Actualmente, existe una
JVM para la mayor parte de las plataformas, lo que garantiza que los programas Java sean ampliamente portables.