Extraer los datos de una BBDD en una pagina web.
Apuntes de repaso:
Creacion de un pequeño proyecto web en Java
BASE DE DATOS
Comenzamos creando una BBDD:
`create database proyecto;`
Usamos la base de datos que hemos creado
`use proyecto;`
y insertamos la tabla en este caso se llamara clientes con los campos: id, nombre, apellido, email.
`CREATE TABLE `cliente` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`nombre` varchar(35) DEFAULT NULL,
`apellido` varchar(35) DEFAULT NULL,
`email` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;`
Clase conexión a la BBDD
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
// response.getWriter().append("Served at: ").append(request.getContextPath());
String jdbcUrl = "jdbc:mysql://localhost:3306/proyecto?allowPublicKeyRetrieval=true&useSSL=false";
String usuario = "";
String contra = "";
String driver = "com.mysql.jdbc.Driver";
try {
// Utilizamos la clase PrintWriter para que escriba en el navegador
PrintWriter out = response.getWriter();
// Cargamos el driver
Class.forName(driver);
// Tenemos que conectar
Connection miConexion = DriverManager.getConnection(jdbcUrl, usuario, contra);
// cerramos la conexion
miConexion.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
Ahora ya en Java pasaremos a crear las clases, comenzaremos creando el controlador
- Clase: Controlador
@Controller
@RequestMapping("/cliente")
public class Controlador {
@RequestMapping("/lista")
public String listaClientes(Model modelo) {
return "lista-clientes";
}
}
Ahora tenemos que representar la entidad (entity) Cliente
Clase entidad Cliente
@Entity - esto se trata de una entidad
@Table("cliente") - tabla que hara el mapeo
@Entity
@Table(name = "cliente")
public class Cliente {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id")
private int id;
@Column(name="nombre")
private String nombre;
@Column(name="apellido")
private String apellido;
@Column(name="email")
private String email;
public Cliente() {
super();
}
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 getApellido() {
return apellido;
}
public void setApellido(String apellido) {
this.apellido = apellido;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "Cliente [id=" + id + ", nombre=" + nombre + ", apellido=" + apellido + ", email=" + email + "]";
}
}
CONTROLADOR - DAO
Creamos una clase interface ClienteDAO para acceder a la BBDD:
Al crear la interfaz nos permitirá a través de una anotación (Spring) hacer una inyección de dependencias
public interface ClienteDAO {
//Esta interfaz me devuelva una lista con todos los clientes
public List<Cliente> getClientes();
}
Creamos la clase que implementara la interface
Declaramos el SessionFactory ya configurado en nuestro fichero.
@Autowired nos hara una inyección de dependencias de tipo SessionFactory.
@Transactional Nos permite simplificar la transacción (begin,commit).
@Repository Para que sea registrado en Spring como un bean.
@Repository
public class ClienteDAOclase implements ClienteDAO {
// Crear una lista que almacene objetos de tipos clientes en este caso
// implementamos de la infertaz
@Override
@Transactional
public List<Cliente> getClientes() {
// 3 pasos:
// Obtener la sesion
Session miSession = sessionFactory.getCurrentSession();
// Crear la consulta(query) para obtener informacion de la base de datos
Query<Cliente> miQuery = miSession.createQuery("from Cliente", Cliente.class);
// Ejecutar la query y devolver los resultados
List<Cliente> clientes = miQuery.getResultList();
return clientes;
}
@Autowired
private SessionFactory sessionFactory;
Volvemos a la clase Controlador a hacer la inyeccion de dependencias
@Controller
@RequestMapping("/cliente")
public class Controlador {
// indicamos con autowired que haremos una inyeccion de dependencias
@Autowired
private ClienteDAO clienteDAO;
@RequestMapping("/lista")
public String listaClientes(Model elModelo) {
// Obtener los clientes desde el DAO
List<Cliente> losClientes = clienteDAO.getClientes();
// Agregar los clientes que hemos obtenidos del clienteDAO al modelo
elModelo.addAllAttributes(losClientes);
return "lista-clientes";
}
}
Creamos el JSP para que nos devuelva los nombres, apellidos y email de la base de datos
<body>
<table border="1">
<tr>
<th>nombre </th>
<th>apellido</th>
<th>email</th>
</tr>
<c:forEach var="clienteTemp" items="${clientes}">
<tr>
<td>${clienteTemp.nombre}</td>
<td>${clienteTemp.apellido}</td>
<td>${clienteTemp.email}</td>
</tr>
</c:forEach>
</table>
</body>
Top comments (0)