Tutorial JavaBeans e Hibernate

Primeros pasos con JavaBeans  haciendo uso del MVC. Explicaré como utilizar Beans para enviar informacion de un JSP a otro mediante el uso de un controlador.

No explicare como funciona el MVC ni abarcaré la conexión a base de datos, el ejemplo se ajusta a los principios básicos para poder trabajar con JavaBeans mediante un Servlet y archivos JSP.

Proyecto realizado con Netbeans 7.1.2, Hibernate 3.2.5, Java EE 6 Web. Disponible para descargar: JBeans_WebApplication.zip


Creando nuestra aplicación

Creamos un nuevo proyecto web en Netbeans, Java Web -> Web Application.
Seleccionamos en Framework Hibernate, para este ejemplo en database connection seleccionamos jdbc:derby://localhost:1527/sample o la conexión a nuestra base de datos.


En caso de no tener disponible la opción Sample database y de no poseer ninguna otra conexión podemos hablitar esta última  en la pestaña Servicios Java DB -> Sample -> Botón derecho [Connect...]





Procedemos a crear un nuevo Servlet: File->New File...->Web->Servlet 


Para efectos de este tutorial le nombraremos mainController. 
Básicamente utilizaremos el Servlet como el controllador para las demás páginas que hemos creado:


Creando nuestro JavaBean 

Procedemos a crear un nuevo JavaBeans:  File->New File...->JavaBeans Component
para efectos del ejemplo lo nombraremos DataBean.

Una vez creado este genera los métodos Get y Set de forma automática, para este ejemplo bastará con renombrar la variable sampleProperty por skill.

MainController Servlet

En nuestro nuevo servlet y buscamos el método processRequest eliminamos el  contenido y pegamos el siguiente código obteniendo como resultado::

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        //crea el Bean
        DataBean reqData = new DataBean();
        //le da accesibilidad desde los JSPs
        request.getSession().setAttribute("refData", reqData);
        //copia el parametro del request al bean
        reqData.setSkill(request.getParameter("skill"));
        
        //determina que boton fué pusado y a que
        //pagina debe redirigir
        String address;
        if (request.getParameter("processButton") != null){
            address = "process.jsp";
        }else if (request.getParameter("confirmButton") != null){
            address = "confirm.jsp";
        }else if (request.getParameter("returnButton") != null){
            address = "index.jsp";
        }else{
            address = "edit.jsp";
        }        
        RequestDispatcher dispatcher = request.getRequestDispatcher(address);
        dispatcher.forward(request, response);

    }


Creando los ficheros JSPs

Ademas del archivo index.jsp crearemos 3 archivos JSP adicionales con los siguientes nombres:
  • process.jsp
  • confirm.jsp
  • edit.jsp

A continuación los bloques de código para cada archivo JSP.

Index.jsp

Ejemplo de uso, JavaBean.

Java Netbeans 7.1.2

Presione el botón de Ingresar para registrar un elemento.  
Edit.jsp
        
Ingrese una tecnología Java con la que este familiarizado.
Tecnología:
Confirm.jsp
La tecnología reportada a esta página es:
    ${refData.skill}


 
En caso de error presione el botón Editar, 
    caso contrario el botón Procesar.



Process.jsp
 
Se ha agregado la tecnología ${refData.skill}.
    Gracias!



Algunas notas importantes

Como se puede observar nuestro objeto refData fue creado en el MainController y  representa nuestro JavaBean.

Cada form html posee un parametro action el cual hace un llamado a nuestro MainController, una vez allí nuestro Bean recibe el valor enviado mediante el request en el servlet:

reqData.setSkill(request.getParameter("skill"));

Con esto estará disponible para luego obtener su valor desde los JSPs mediante:

${refData.skill}

La instrucción: 
input name="skill" type="hidden" value="${refData.skill}" 

se utiliza para reenviar el valor al Servlet desde el JSP, tal es el caso de Confirm.jsp que recibe el valor y luego lo reenvia a Edit o Process.