Un Javabeans es una clase plana (POJO – Plain Old Java Objects) con atributos privados, constructor y métodos get y set. En JSP se usan para pasar datos de un lado a otro y sustituye a los servlets que se han visto en entradas anteriores, para hacer más claro y eficiente el código y contribuye a la separación entre lógica de negocio y presentación.
Por ejemplo, usando el ejemplo de inicio de sesión de usuarios que se vió en la agenda personal, el equivalente simplificado sería este:
Por ejemplo, usando el ejemplo de inicio de sesión de usuarios que se vió en la agenda personal, el equivalente simplificado sería este:
- Se crea un clase Javabean llamada Usuario.java. En ella se definen los atributos y los métodos get y set.
package org; public class Usuario implements java.io.Serializable { private int id; private String nombre; private String email; private String clave; public int getId() { return id; } public void setId(int id){ this.id=id; } public String getNombre() { return nombre; } public void setNombre(String nombre){ this.nombre=nombre; } public String getEmail() { return email; } public void setEmail(String email){ this.email=email; } public String getClave() { return clave; } public void setClave(String clave){ this.clave=clave; } }
- Después, en el index.jsp, se crea el formulario igual que en casos anterior. Los campos tienen que tener el mismo ‘name’ que el del atributo de la clase:
<%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <jsp:useBean id="usuario" scope="session" /> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Inicio sesión</title> </head> <body> <div align="center" style="background-color:gainsboro"> <form method="POST" action="IniciarSesionBeans.jsp" name="frm" id="idForm"> <table style="background-color: gainsboro"> <tr> <td> <label>Nombre:</label> </td> <td> <input type="text" id="txtNombre" name="nombre"/> </td> </tr> <tr> <td> <label>Password:</label> </td> <td> <input type="password" id="txtPassword" name="clave"/> </td> </tr> <tr align="right"> <td> <input type="button" name="BtnEnviar" id="BtnEnviarId" value="ENVIAR" onclick="Validar();" /> </td> </tr> </table> </form> </div> </body> </html>
- En IniciarSesionBeans.jsp se va a usar el bean creado mediante el tag de acción: <jsp:useBean id=”usuario” scope=”session” />
Se usa la visibilidad ‘session’ para hacer que los atributos de usuario se puedan usar en cualquier parte del proyecto.
Mediante
<jsp:setProperty name=”usuario” property=”*” />
se obtiene todos los valores del formulario de index.jsp y se le asignan a los atributos de la clase usuario.
<%@page contentType="text/html" pageEncoding="UTF-8"%> <%@page import="java.sql.ResultSet"%> <%@page import="java.sql.SQLException"%> <%@page import="java.sql.DriverManager"%> <%@page import="java.sql.Statement"%> <%@page import="java.sql.Connection"%> <%@page import="java.lang.String"%> <%@page import="java.lang.Object"%> <!DOCTYPE html> <jsp:useBean id="usuario" scope="session" /> <jsp:setProperty name="usuario" property="*" /> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <% Connection conn=null; Statement stm= null; String nombre,password; try { nombre=usuario.getNombre(); password=usuario.getClave(); //crear el driver Class.forName("com.mysql.jdbc.Driver").newInstance(); //obtener el manejador conn=DriverManager.getConnection("jdbc:mysql://localhost/banco", "root", "forman"); //obtener el statement stm= conn.createStatement(); String sql; //consulta sql="SELECT idusuario FROM usuario WHERE nombre='"+nombre+"' AND clave='"+password+"';"; //ejecutar la consulta ResultSet rst = stm.executeQuery(sql); if(rst.next()){ usuario.setId(Integer.parseInt(rst.getString("idusuario"))); usuario.setNombre(nombre); }else{ usuario.setId(-1); } request.getRequestDispatcher( "/index.jsp" ).forward( request, response ); stm.close(); }catch(SQLException err){ System.out.println("Error SQLException: "+err.getMessage() +"\n"+err.toString()); }catch(Exception e){ System.out.println(e.getMessage()); }finally{ //cerrar la conexion if (conn!=null){ try{ conn.close(); }catch(Exception e){} } out.close(); } %> </body> </html>
En rojo se puede ver como se obtienen los valores que se guardaron en los atributos de usuario desde el formulario. En naranja se muestra como establecer los atributos id y nombre a usuario, de forma que, como se puso scope=”session”, pueda ser utilizado en otros jsp del proyecto, simplemente poniendo al principio del código el <jsp:useBean id=”usuario” scope=”session” /> y recogiendo las varibles con usuario.getId().
Si no se pone scope=”session” los valores de los atributos del Javabean solo se podrán manipular dentro de ese mismo jsp.
Por último, cuando sea necesario cerrar la sesión y borrar todos las variables, se hace igual que en servlets:
Si no se pone scope=”session” los valores de los atributos del Javabean solo se podrán manipular dentro de ese mismo jsp.
Por último, cuando sea necesario cerrar la sesión y borrar todos las variables, se hace igual que en servlets:
<%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <jsp:useBean id="usuario" scope="session" /> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <% usuario.setId(0); HttpSession sesion = request.getSession(false); sesion.invalidate(); request.getRequestDispatcher( "/index.jsp" ).forward( request, response ); %> </body> </html>
No hay comentarios:
Publicar un comentario