springboot.firststeps(lib)
libroControlador.java Catálogo de libros disponibles Catálogo de libros disponibles Contiene: y pertenece a los siguientes generos: Filtrar ID NOMBRE AÑO PUBLICACIÓN EDITORIAL Generos Borrar loginController.java @Controller public class LoginController { @Autowired UsuarioRepository usuarioRepository; @GetMapping("/") public String doInit(Model model){ model.addAttribute("modelUsuario", new UsuarioEntity()); return "login"; } @PostMapping("/autentica") public String doAutentica(@ModelAttribute("modelUsuario")UsuarioEntity usuario, Model model, HttpSession session){ UsuarioEntity usuarioAut = usuarioRepository.findByApellidoYContrasenya(usuario.getUsuariosurname(), usuario.getUsuariopassword()); if(usuarioAut==null){ model.addAttribute("error", "Error de autentificacion"); return "login"; }else{ session.setAttribute("user", usuarioAut); return "redirect:/libros/"; } } @GetMapping("/salir") public String doSalir(HttpSession session){ //session.removeAttribute("user"); session.invalidate(); return "redirect:/"; } } Vista libros.jsp Catálogo de libros disponibles Catálogo de libros disponibles Contiene: y pertenece a los siguientes generos: Filtrar ID NOMBRE AÑO PUBLICACIÓN EDITORIAL Generos Borrar libro.jsp libro libro Nombre: Año de publicación: Editorial: Géneros: Escritores: login.jsp Login Login Usuario: Contraseña: Enviar cabecera.jsp Cabecera Libros Editoriales Bienvenido, ( Salir ) ui(Filtro) package es.uma.taw.libroswebapp.ui; import es.uma.taw.libroswebapp.entity.GeneroEntity; import lombok.Data; import java.util.List; @Data public class Filtro { String cadena; List generosList; } Repos public interface LibroRepository extends JpaRepository { @Query("select l from LibroEntity l where l.libroname like concat('%',:cadena,'%')") public List findByCadena(@Param("cadena")String cadena); @Query("select l from LibroEntity l where l.usuarioid.usuarioid = :id ") public List findByUsuarioId(@Param("id")Integer id); @Query("select l from LibroEntity l join l.generoList g where (l.libroname like concat('%',:cadena,'%')) and (g in :generos)") public List findByCadenaYGeneros(@Param("cadena")String cadena, @Param("generos")List generos); }

libroControlador.java
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ page import="es.uma.taw.libroswebapp.entity.LibroEntity" %>
<%@ page import="java.util.List" %>
<%@ page import="es.uma.taw.libroswebapp.entity.GeneroEntity" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Catálogo de libros disponibles
<%
List lista = (List) request.getAttribute("libros");
%>
Catálogo de libros disponibles
Contiene: y pertenece a los siguientes generos:
Filtrar
ID
NOMBRE
AÑO PUBLICACIÓN
EDITORIAL
Generos
<%
for (LibroEntity libro: lista) {
%>
<%= libro.getLibroid() %>
<%= libro.getLibroname() %>
<%= libro.getYearreleased() %>
<%= libro.getEditorialid().getEditorialname() %>
<%
List generos = libro.getGeneroList();
for (int i = 0; i < generos.size(); i++) {
out.print(generos.get(i).getGeneroname());
if (i < generos.size() - 1) out.print(", ");
}
%>
Borrar
<%
}
%>
loginController.java
@Controller
public class LoginController {
@Autowired
UsuarioRepository usuarioRepository;
@GetMapping("/")
public String doInit(Model model){
model.addAttribute("modelUsuario", new UsuarioEntity());
return "login";
}
@PostMapping("/autentica")
public String doAutentica(@ModelAttribute("modelUsuario")UsuarioEntity usuario, Model model, HttpSession session){
UsuarioEntity usuarioAut = usuarioRepository.findByApellidoYContrasenya(usuario.getUsuariosurname(), usuario.getUsuariopassword());
if(usuarioAut==null){
model.addAttribute("error", "Error de autentificacion");
return "login";
}else{
session.setAttribute("user", usuarioAut);
return "redirect:/libros/";
}
}
@GetMapping("/salir")
public String doSalir(HttpSession session){
//session.removeAttribute("user");
session.invalidate();
return "redirect:/";
}
}
Vista
libros.jsp
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ page import="es.uma.taw.libroswebapp.entity.LibroEntity" %>
<%@ page import="java.util.List" %>
<%@ page import="es.uma.taw.libroswebapp.entity.GeneroEntity" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Catálogo de libros disponibles
<%
List lista = (List) request.getAttribute("libros");
%>
Catálogo de libros disponibles
Contiene: y pertenece a los siguientes generos:
Filtrar
ID
NOMBRE
AÑO PUBLICACIÓN
EDITORIAL
Generos
<%
for (LibroEntity libro: lista) {
%>
<%= libro.getLibroid() %>
<%= libro.getLibroname() %>
<%= libro.getYearreleased() %>
<%= libro.getEditorialid().getEditorialname() %>
<%
List generos = libro.getGeneroList();
for (int i = 0; i < generos.size(); i++) {
out.print(generos.get(i).getGeneroname());
if (i < generos.size() - 1) out.print(", ");
}
%>
Borrar
<%
}
%>
libro.jsp
<%@ page import="es.uma.taw.libroswebapp.entity.LibroEntity" %>
<%@ page import="es.uma.taw.libroswebapp.entity.EditorialEntity" %>
<%@ page import="java.util.List" %>
<%@ page import="es.uma.taw.libroswebapp.entity.GeneroEntity" %>
<%@ page import="es.uma.taw.libroswebapp.entity.EscritorEntity" %><%--
Created by IntelliJ IDEA.
User: guzman
Date: 26/3/25
Time: 11:40
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
boolean esEditar = true;
LibroEntity libro = (LibroEntity)request.getAttribute("libro");
if (libro.getLibroid() == null) esEditar = false;
List editoriales = (List) request.getAttribute("editoriales");
List generos = (List) request.getAttribute("generos");
List escritores = (List)request.getAttribute("escritores");
%>
<%= (esEditar? "Edición del" : "Nuevo") %> libro
<%= (esEditar? "Editar" : "Nuevo") %> libro
login.jsp
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Login
<%
String error = (String) request.getAttribute("error");
%>
Login
<%
if(error!=null){
%>
<%=error%>
<%
}
%>
Usuario:
Contraseña:
Enviar
cabecera.jsp
<%@ page import="es.uma.taw.libroswebapp.entity.UsuarioEntity" %>
<%@ page import="es.uma.taw.libroswebapp.entity.LibroEntity" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Cabecera
<%
UsuarioEntity user = (UsuarioEntity) session.getAttribute("user");
List lista = (List) request.getAttribute("libros");
%>
Libros
<%=lista.get(0).getLibroname()%>
Editoriales
Bienvenido, <%=user.getUsuariosurname()%> ( Salir )
ui(Filtro)
package es.uma.taw.libroswebapp.ui;
import es.uma.taw.libroswebapp.entity.GeneroEntity;
import lombok.Data;
import java.util.List;
@Data
public class Filtro {
String cadena;
List generosList;
}
Repos
public interface LibroRepository extends JpaRepository {
@Query("select l from LibroEntity l where l.libroname like concat('%',:cadena,'%')")
public List findByCadena(@Param("cadena")String cadena);
@Query("select l from LibroEntity l where l.usuarioid.usuarioid = :id ")
public List findByUsuarioId(@Param("id")Integer id);
@Query("select l from LibroEntity l join l.generoList g where (l.libroname like concat('%',:cadena,'%')) and (g in :generos)")
public List findByCadenaYGeneros(@Param("cadena")String cadena, @Param("generos")List generos);
}