Ing. Pablo Almeida Haro Msc.

N CAPAS UTILIZANDO JSP (n tier)

CONCEPTO

División de la aplicación en varias capas. Cada capa se especializa en algo en particular

 

Capa de presentación.- Se especializa en la presentación de la interfase

Capa de negocio.- Posee el código relacionado a los procesos específicos

Capa de persistencia.- Gestiona la transaccionalidad de la base de datos

Recurso.- Utiliza un conjunto de conexión

Conjunto de conexión.- Mantiene la configuración de conexión a la base de datos

 

CAPA DE PRESENTACION

*Ingresar a netbeans

*Crear un nuevo proyecto: file/new/Project/web application

 

*Ingresar nombre de proyecto y ubicación

*Seleccionar servidor y versión jee

*No seleccionar ningún framework

*Crear un nuevo paquete: click derecho sobre source packages/new/java package

 

*Crear el servlet: click derecho sobre el nuevo paquete new/servlet

*Ingresar el nombre del servlet

 

 

*Dejar por defecto los datos que siguen a continuación:

 

 

*El IDE por defecto creará un código el cual debe ser reemplazado por lo que sigue a continuación:

package pack_servlet_n_capas;

 

import java.io.IOException;

import java.io.PrintWriter;

import javax.persistence.Query;

import java.util.List;

import javax.persistence.EntityManager;

import javax.persistence.EntityManagerFactory;

import javax.persistence.EntityTransaction;

import javax.persistence.Persistence;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

@WebServlet(name = "servlet_n_capas", urlPatterns = {"/servlet_n_capas"})

public class servlet_n_capas extends HttpServlet

{

    String ls_mensaje="";

    negocio_cliente ncli=new negocio_cliente();

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)

        throws ServletException, IOException {

        response.setContentType("text/html;charset=UTF-8");

        PrintWriter out = response.getWriter();

        String is_pantalla="";

        ls_mensaje="";

            String is_boton="";

            String ls_codigo="";

            String ls_nombre="";

            is_boton=request.getParameter("boton");

            ls_codigo=request.getParameter("codigo");

 

            ls_nombre=request.getParameter("nombre");

            if (is_boton==null || is_boton =="")

            {  

                is_pantalla=desplegar_pantalla("","");

            }   

 

 

            if (is_boton!=null && is_boton !="")

            {

 

                if(is_boton.equals("Insertar"))

                {  if (ncli.insertar(ls_codigo, ls_nombre)==1)

                    {

                        ls_mensaje="Se insertó";

                    }

                   else

                    {

                        ls_mensaje="No se pudo insertar";

                    }

                   is_pantalla=desplegar_pantalla("","");                 

                   is_pantalla+=ls_mensaje;

                }

                if(is_boton.equals("Eliminar"))

                {

                   if (ncli.eliminar(ls_codigo)==1)

                   {

                       ls_mensaje="Se eliminó";

                   }

                   else

                   {

                       ls_mensaje="No se pudo eliminar";

                   }

                   is_pantalla=desplegar_pantalla("","");                 

                    is_pantalla+=ls_mensaje;

 

                }

                if(is_boton.equals("Modificar"))

                {

                   if (ncli.modificar(ls_codigo, ls_nombre)==1)

                   {

                       ls_mensaje="Se modificó";

                   }

                   else

                   {

                       ls_mensaje="No se pudo modificar";

                   }   

                   is_pantalla=desplegar_pantalla("","");                 

                   is_pantalla+=ls_mensaje;

                }

                if(is_boton.equals("Buscar"))

                {  ls_nombre=ncli.buscar(ls_codigo);

                   if(ls_nombre!=null)

                   {

                       ls_mensaje="Se encontró";

                   }

                   else

                   {

                       ls_mensaje="No se encontró";

                   }

                   is_pantalla=desplegar_pantalla(ls_codigo,ls_nombre);                 

                   is_pantalla+=ls_mensaje;

                   

                }

               

            }

                    out.println(is_pantalla);

                 

       

    }  

 

    public String desplegar_pantalla(String as_codigo, String as_nombre)

    {       String ls_pantalla="";

            ls_pantalla+="<html>";

            ls_pantalla+="<head>";

            ls_pantalla+="</head>";

            ls_pantalla+="<body>";

            ls_pantalla+="<h2>SERVLETS - Ing. Pablo Almeida Haro </h2>";

           

            ls_pantalla+="<form action='servlet_n_capas' method='post'>";

            ls_pantalla+="Codigo:<input type='text' name='codigo'"+" value='"+as_codigo +"'></input>";

            ls_pantalla+="<br>";

            ls_pantalla+="Nombre:<input type='text' name='nombre'"+" value='"+as_nombre+"'></input>"; 

            ls_pantalla+="<br>";

            ls_pantalla+="<input type='submit' value='Insertar' name='boton'></input>";

            ls_pantalla+="<input type='submit' value='Eliminar' name='boton' ></input>";

            ls_pantalla+="<input type='submit' value='Modificar' name='boton'></input>";

            ls_pantalla+="<input type='submit' value='Buscar' name='boton'></input>";           

            ls_pantalla+="</form>";           

            ls_pantalla+="</body>";

            ls_pantalla+="</html>";

       

        return ls_pantalla;

    }

   

    @Override

    protected void doGet(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

        processRequest(request, response);

    }

 

    @Override

    protected void doPost(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

        processRequest(request, response);

    }

 

}

 

CAPA DE PERSISTENCIA

*Agregar el framework Hibernate al proyecto: click derecho sobre el proyecto/propiedades

*Colocar click en add

 

 

 

*Crear la unidad de persistencia: file /new file/persistence/persistence unit

*Colocar el nombre de la unidad de persistencia y el origen de datos

*Crear las clases de persistencia a partir de las tablas de la base de datos: Click derecho new/ entity clases from database

 

 

 

 

*Se generará el código automático que sigue a continuación:

package pack_servlet_n_capas;

 

import java.io.Serializable;

import javax.persistence.Basic;

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.Id;

import javax.persistence.NamedQueries;

import javax.persistence.NamedQuery;

import javax.persistence.Table;

import javax.validation.constraints.NotNull;

import javax.validation.constraints.Size;

import javax.xml.bind.annotation.XmlRootElement;

 

/**

 *

 * @author administrador

 */

@Entity

@Table(name = "CLIENTE")

@XmlRootElement

@NamedQueries({

    @NamedQuery(name = "Cliente.findAll", query = "SELECT c FROM Cliente c"),

    @NamedQuery(name = "Cliente.findByCodigo", query = "SELECT c FROM Cliente c WHERE c.codigo = :codigo"),

    @NamedQuery(name = "Cliente.findByNombre", query = "SELECT c FROM Cliente c WHERE c.nombre = :nombre")})

public class Cliente implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id

    @Basic(optional = false)

    @NotNull

    @Size(min = 1, max = 4)

    @Column(name = "CODIGO")

    private String codigo;

    @Size(max = 20)

    @Column(name = "NOMBRE")

    private String nombre;

 

    public Cliente() {

    }

 

    public Cliente(String codigo) {

        this.codigo = codigo;

    }

 

    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;

    }

 

    @Override

    public int hashCode() {

        int hash = 0;

        hash += (codigo != null ? codigo.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 Cliente)) {

            return false;

        }

        Cliente other = (Cliente) object;

        if ((this.codigo == null && other.codigo != null) || (this.codigo != null && !this.codigo.equals(other.codigo))) {

            return false;

        }

        return true;

    }

 

    @Override

    public String toString() {

        return "pack_servlet_n_capas.Cliente[ codigo=" + codigo + " ]";

    }

   

}

CAPA DE NEGOCIO

*Click derecho sobre el paquete/new java class

 

*Reemplazar el código con lo que sigue a continuación:

 

package pack_servlet_n_capas;

 

import javax.faces.bean.ManagedBean;

import javax.faces.bean.SessionScoped;

import javax.persistence.EntityManager;

import javax.persistence.EntityManagerFactory;

import javax.persistence.Persistence;

 

 

@ManagedBean()

@SessionScoped

public class negocio_cliente

{

    int ii_retorno;

    public int insertar(String as_codigo, String as_nombre)

    {

        EntityManagerFactory factory=Persistence.createEntityManagerFactory("prj_servlet_n_capasPU");

        EntityManager em1=factory.createEntityManager();  

        pack_servlet_n_capas.Cliente c1=new pack_servlet_n_capas.Cliente(as_codigo);                 

        c1.setCodigo(as_codigo);

        c1.setNombre(as_nombre);

    

        try

           {   em1.getTransaction().begin();

               em1.persist(c1);

               em1.getTransaction().commit();

               ii_retorno=1;

           }

        catch (Exception ex)

           {         

               ii_retorno=-1;

           }

       

         em1.close();

         factory.close();

         return ii_retorno;

    }

    public int eliminar(String as_codigo)

    {

          EntityManagerFactory factory=Persistence.createEntityManagerFactory("prj_servlet_n_capasPU");

          EntityManager em1=factory.createEntityManager();          

          pack_servlet_n_capas.Cliente c1=new pack_servlet_n_capas.Cliente();                 

          c1.setCodigo(as_codigo);           

          try

            {

                c1=em1.find(Cliente.class,as_codigo);

                em1.getTransaction().begin();

           

                em1.remove(c1);

                em1.getTransaction().commit();

                ii_retorno=1;

            }

         catch (Exception ex)

            {  

                ii_retorno=-1;

            }

          em1.close();

          factory.close();

          return ii_retorno;

     }

     public int modificar(String as_codigo, String as_nombre)

      {

         

        EntityManagerFactory factory=Persistence.createEntityManagerFactory("prj_servlet_n_capasPU");

        EntityManager em1=factory.createEntityManager();            

        pack_servlet_n_capas.Cliente c1=new pack_servlet_n_capas.Cliente();                 

 

         try

         {

           c1=em1.find(Cliente.class,as_codigo);

           em1.getTransaction().begin();

           c1.setNombre(as_nombre);

                                   

           em1.persist(c1);

           em1.getTransaction().commit();

           ii_retorno=1;

         }

         catch (Exception ex)

         {  

           ii_retorno=-1;

         }

         em1.close();

         factory.close();

         return ii_retorno;

      }

     public String buscar(String as_codigo)

     {  String ls_nombre;

        EntityManagerFactory factory=Persistence.createEntityManagerFactory("prj_servlet_n_capasPU");

        EntityManager em1=factory.createEntityManager();       

        pack_servlet_n_capas.Cliente c1=new pack_servlet_n_capas.Cliente();                 

       

        try

        {

            c1=em1.find(Cliente.class,as_codigo);

            ls_nombre=c1.getNombre();

         

        }

        catch (Exception ex)

        {  

            ls_nombre=null;

        }

        em1.close();

        factory.close();

        return ls_nombre;

     }

     public void procesar()

     {

                // programar el código de la regla de negocio        

     }

 

}

 

*Correr la aplicación: click derecho servlet_n_capas y run