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