<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: olver team</title>
    <description>The latest articles on DEV Community by olver team (@learnspringtools).</description>
    <link>https://dev.to/learnspringtools</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3120477%2F9fc52b2a-2af9-4e55-9dc2-c1fffd4d76e0.png</url>
      <title>DEV Community: olver team</title>
      <link>https://dev.to/learnspringtools</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/learnspringtools"/>
    <language>en</language>
    <item>
      <title>springboot.firststeps(P1)</title>
      <dc:creator>olver team</dc:creator>
      <pubDate>Mon, 23 Jun 2025 21:06:55 +0000</pubDate>
      <link>https://dev.to/learnspringtools/springbootfirststepsp1-56na</link>
      <guid>https://dev.to/learnspringtools/springbootfirststepsp1-56na</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvmk0ouzr88m72j79048c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvmk0ouzr88m72j79048c.png" alt="Image description" width="628" height="171"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;personaController.java&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;no perfe + @DateTimeFormat
@Controller
public class PersonaController {

    @Autowired
    PeopleRepository peopleRepository;
    @Autowired
    MoviesRepository moviesRepository;
    @Autowired
    GenresRepository genresRepository;


    protected String listarConFiltro(Filtro filtro, Model model){
        List&amp;lt;People&amp;gt; personas;
//        boolean mostrarReparto = false;
//        boolean mostrarTrabajos = false;
        if(filtro==null){
           filtro = new Filtro();
           personas = peopleRepository.findAll();
       } else if (filtro.getTipo().equalsIgnoreCase("reparto")) {
            personas = peopleRepository.findByCadenaYReparto(filtro.getCadena());
        }else {
            personas = peopleRepository.findByCadenaYTrabajos(filtro.getCadena());
        }
        model.addAttribute("personas", personas);
        model.addAttribute("filtro", filtro);
        return "personas";
    }

    @GetMapping("/")
    public String doListar(Model model){
        return listarConFiltro(null, model);
    }


    @GetMapping("/editar")
    public String doEditar(@RequestParam("id")Integer id, Model model){
        Movies pelicula = moviesRepository.findById(id).orElse(null);
        model.addAttribute("pelicula", pelicula);
        model.addAttribute("generos", genresRepository.findAll());

        return "pelicula";
    }

    @PostMapping("/guardar")
    public String doGuardar(@ModelAttribute("pelicula")Movies modelPelicula){
        Movies pelicula = moviesRepository.findById(modelPelicula.getId()).orElse(null);
        pelicula.setTitle(modelPelicula.getTitle());
        pelicula.setRuntime(modelPelicula.getRuntime());
        pelicula.setRevenue(modelPelicula.getRevenue());
        pelicula.setGenresList(modelPelicula.getGenresList());
        moviesRepository.save(pelicula);
        return "redirect:/";
    }

    @PostMapping("/filtrar")
    public String doFiltrar(@ModelAttribute("filtro")Filtro filtro, Model model){
//        List&amp;lt;People&amp;gt; personas;
//        if(filtro.getTipo().equalsIgnoreCase("reparto")){
//            personas = peopleRepository.findByCadenaYReparto(filtro.getCadena());
//        }else{
//            personas = peopleRepository.findAll();
//        }
//        model.addAttribute("filtro", filtro);
//        model.addAttribute("personas", personas);
        //return "personas";
        return listarConFiltro(filtro, model);
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;@DateTimeFormat(pattern = "yyyy-mm-dd")&lt;br&gt;
    @Temporal(TemporalType.DATE)&lt;br&gt;
    private Date releaseDate;&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Vista
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;personas.jsp&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %&amp;gt;
&amp;lt;%@ page import="es.taw.movies.entity.People" %&amp;gt;
&amp;lt;%@ page import="java.util.List" %&amp;gt;
&amp;lt;%@ page import="es.taw.movies.entity.MovieCast" %&amp;gt;
&amp;lt;%@ page import="es.taw.movies.entity.MovieCrew" %&amp;gt;
&amp;lt;%@ page import="es.taw.movies.ui.Filtro" %&amp;gt;
&amp;lt;%@ page contentType="text/html;charset=UTF-8" language="java" %&amp;gt;
&amp;lt;html&amp;gt;

&amp;lt;%
    String title = "Listado de personas";
    List&amp;lt;People&amp;gt; personas = (List&amp;lt;People&amp;gt;) request.getAttribute("personas");
    Filtro filtro = (Filtro) request.getAttribute("filtro");
    boolean mostrarReparto = filtro.getTipo().isBlank() || filtro.getTipo().equalsIgnoreCase("reparto");
    boolean mostrarTrabajador = filtro.getTipo().isEmpty() || "trabajador".equalsIgnoreCase(filtro.getTipo());
%&amp;gt;

&amp;lt;head&amp;gt;
    &amp;lt;title&amp;gt;&amp;lt;%=title%&amp;gt;&amp;gt;&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;h1&amp;gt;&amp;lt;%=title%&amp;gt;&amp;lt;/h1&amp;gt;

&amp;lt;form:form modelAttribute="filtro" action="/filtrar" method="post"&amp;gt;
    &amp;lt;form:radiobutton path="tipo" label="Reparto" value="reparto"/&amp;gt;
    &amp;lt;form:radiobutton path="tipo" label="Trabajador" value="trabajador"/&amp;gt; &amp;lt;br&amp;gt;
    y contiene: &amp;lt;form:input path="cadena"/&amp;gt; &amp;lt;form:button&amp;gt;Filtrar&amp;lt;/form:button&amp;gt; &amp;lt;a href="/"&amp;gt;Borrar Filtro&amp;lt;/a&amp;gt;
&amp;lt;/form:form&amp;gt;


&amp;lt;table border="1"&amp;gt;
    &amp;lt;tr&amp;gt;
        &amp;lt;th&amp;gt;NOMBRE&amp;lt;/th&amp;gt;
&amp;lt;%
    if(mostrarReparto){
%&amp;gt;
        &amp;lt;th&amp;gt;PELÍCULAS - PERSONAJES&amp;lt;/th&amp;gt;
&amp;lt;%
    }

    if(mostrarTrabajador){
%&amp;gt;
        &amp;lt;th&amp;gt;PELÍCULAS - CARGOS&amp;lt;/th&amp;gt;
&amp;lt;%
    }
%&amp;gt;
    &amp;lt;/tr&amp;gt;
&amp;lt;%
for(People p: personas){
%&amp;gt;
    &amp;lt;tr&amp;gt;
        &amp;lt;td&amp;gt;
            &amp;lt;%=p.getName()%&amp;gt;
        &amp;lt;/td&amp;gt;
&amp;lt;%
    if(mostrarReparto){
%&amp;gt;
        &amp;lt;td&amp;gt;
    &amp;lt;%
        for(MovieCast cast : p.getMovieCastList()){
    %&amp;gt;
            &amp;lt;a href="/editar?id=&amp;lt;%=cast.getMovieId().getId()%&amp;gt;"&amp;gt; &amp;lt;%=cast.getMovieId().getTitle()%&amp;gt; &amp;lt;/a&amp;gt; - &amp;lt;%=cast.getCharacterName()%&amp;gt; &amp;lt;br&amp;gt;
    &amp;lt;%
        }
    %&amp;gt;
        &amp;lt;/td&amp;gt;
&amp;lt;%
    }

    if(mostrarTrabajador){
%&amp;gt;
        &amp;lt;td&amp;gt;
    &amp;lt;%
        for(MovieCrew crew : p.getMovieCrewList()){
    %&amp;gt;
            &amp;lt;a href="/editar?id=&amp;lt;%=crew.getMovieId().getId()%&amp;gt;"&amp;gt; &amp;lt;%=crew.getMovieId().getTitle()%&amp;gt; &amp;lt;/a&amp;gt; - &amp;lt;%=crew.getJob()%&amp;gt; &amp;lt;br&amp;gt;
    &amp;lt;%
        }
    %&amp;gt;
        &amp;lt;/td&amp;gt;
&amp;lt;%
    }
%&amp;gt;
    &amp;lt;/tr&amp;gt;
&amp;lt;%
}
%&amp;gt;

&amp;lt;/table&amp;gt;


&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;pelicula.jsp&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %&amp;gt;
&amp;lt;%@ page import="es.taw.movies.entity.People" %&amp;gt;
&amp;lt;%@ page import="java.util.List" %&amp;gt;
&amp;lt;%@ page import="es.taw.movies.entity.MovieCast" %&amp;gt;
&amp;lt;%@ page import="es.taw.movies.entity.MovieCrew" %&amp;gt;
&amp;lt;%@ page contentType="text/html;charset=UTF-8" language="java" %&amp;gt;
&amp;lt;html&amp;gt;

&amp;lt;%
    String title = "Ficha de la película";
%&amp;gt;

&amp;lt;head&amp;gt;
    &amp;lt;title&amp;gt;&amp;lt;%=title%&amp;gt;&amp;gt;&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;h1&amp;gt;&amp;lt;%=title%&amp;gt;&amp;lt;/h1&amp;gt;

&amp;lt;form:form modelAttribute="pelicula" action="/guardar" method="post"&amp;gt;
    &amp;lt;table&amp;gt;
        &amp;lt;tr&amp;gt;
            &amp;lt;form:hidden path="id"/&amp;gt;
            &amp;lt;td&amp;gt;Título:&amp;lt;/td&amp;gt;
            &amp;lt;td&amp;gt;&amp;lt;form:input path="title"/&amp;gt;&amp;lt;/td&amp;gt;
        &amp;lt;/tr&amp;gt;
        &amp;lt;tr&amp;gt;
            &amp;lt;td&amp;gt;Duración:&amp;lt;/td&amp;gt;
            &amp;lt;td&amp;gt;&amp;lt;form:input path="runtime"/&amp;gt;&amp;lt;/td&amp;gt;
        &amp;lt;/tr&amp;gt;
        &amp;lt;tr&amp;gt;
            &amp;lt;td&amp;gt;Recaudación:&amp;lt;/td&amp;gt;
            &amp;lt;td&amp;gt;&amp;lt;form:input path="revenue"/&amp;gt;&amp;lt;/td&amp;gt;
        &amp;lt;/tr&amp;gt;
        &amp;lt;tr&amp;gt;
            &amp;lt;td&amp;gt;Generos:&amp;lt;/td&amp;gt;
            &amp;lt;td&amp;gt;&amp;lt;form:checkboxes path="genresList" items="${generos}" itemLabel="name"/&amp;gt;&amp;lt;/td&amp;gt;
        &amp;lt;/tr&amp;gt;
    &amp;lt;/table&amp;gt;
    &amp;lt;form:button&amp;gt;Guardar&amp;lt;/form:button&amp;gt;
&amp;lt;/form:form&amp;gt;


&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Repo
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public interface PeopleRepository extends JpaRepository&amp;lt;People, Integer&amp;gt; {

    @Query("select p from People p join p.movieCastList cast where cast.characterName like concat('%',:cadena,'%') ")
    public List&amp;lt;People&amp;gt; findByCadenaYReparto(@Param("cadena")String cadena);

    @Query("select p from People p join p.movieCrewList crew where crew.job like concat('%',:cadena,'%') ")
    public List&amp;lt;People&amp;gt; findByCadenaYTrabajos(@Param("cadena")String cadena);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Filtro&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;package es.taw.movies.ui;

import lombok.Data;

@Data
public class Filtro {
    String cadena;
    String tipo="";
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>springboot.firststeps(P2)</title>
      <dc:creator>olver team</dc:creator>
      <pubDate>Mon, 23 Jun 2025 21:06:38 +0000</pubDate>
      <link>https://dev.to/learnspringtools/springbootfirststepsp2-4o52</link>
      <guid>https://dev.to/learnspringtools/springbootfirststepsp2-4o52</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq9rmanv07t2h8q8z663i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq9rmanv07t2h8q8z663i.png" alt="Image description" width="636" height="102"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;peliculaController.java&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;package es.taw.movies.controller;


import es.taw.movies.dao.*;
import es.taw.movies.entity.MovieCast;
import es.taw.movies.entity.MovieCrew;
import es.taw.movies.entity.Movies;
import es.taw.movies.ui.Filtro;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

@Controller
public class PeliculaController {

    @Autowired
    ProductionCompaniesRepository productionCompaniesRepository;
    @Autowired
    MoviesRepository moviesRepository;
    @Autowired
    SpokenLanguagesRepository spokenLanguagesRepository;
    @Autowired
    MovieCastRepository movieCastRepository;
    @Autowired
    MovieCrewRepository movieCrewRepository;

    protected String listarConFiltro(Filtro filtro, Model model){
        List&amp;lt;Movies&amp;gt; peliculas;
        if(filtro== null || filtro.getProductoras().isEmpty()){
            filtro = new Filtro();
            peliculas = moviesRepository.findAll();
        } else {
            peliculas = moviesRepository.findByProductionCompaniesList(filtro.getProductoras());
        }
        model.addAttribute("peliculas", peliculas);
        model.addAttribute("productoras", productionCompaniesRepository.findAll());
        model.addAttribute("filtro", filtro);
        return "peliculas";
    }

    @GetMapping("/")
    public String doListar(Model model){
        return listarConFiltro(null, model);

//        model.addAttribute("productoras", productionCompaniesRepository.findAll());
//        model.addAttribute("filtro", new Filtro());
//        model.addAttribute("peliculas", moviesRepository.findAll());
//
//        return "peliculas";
    }

    @PostMapping("/filtrar")
    public String doFiltrar(Model model, @ModelAttribute("filtro")Filtro filtro){
        return listarConFiltro(filtro, model);
//        List&amp;lt;Movies&amp;gt; peliculas;
//        if(!filtro.getProductoras().isEmpty()){
//            peliculas = moviesRepository.findByProductionCompaniesList(filtro.getProductoras());
//        }else {
//            peliculas = moviesRepository.findAll();
//        }
//
//        model.addAttribute("peliculas", peliculas);
//        model.addAttribute("productoras", productionCompaniesRepository.findAll());
//        model.addAttribute("filtro", filtro);
//        return "peliculas";
    }

    @GetMapping("/editar")
    public String doEditar(@RequestParam("id")Integer id, Model model){
        Movies pelicula = moviesRepository.findById(id).orElse(null);
        model.addAttribute("pelicula", pelicula);

        model.addAttribute("idiomas", spokenLanguagesRepository.findAll());

        return "pelicula";
    }

    @PostMapping("/guardar")
    public String doGuardar(Model model, @ModelAttribute("pelicula")Movies pelicula){
        Movies peliculaEdit = moviesRepository.findById(pelicula.getId()).orElse(null);
        peliculaEdit.setTitle(pelicula.getTitle());
        peliculaEdit.setReleaseDate(pelicula.getReleaseDate());
        peliculaEdit.setSpokenLanguagesList(pelicula.getSpokenLanguagesList());
        peliculaEdit.setOverview(pelicula.getOverview());
        moviesRepository.save(peliculaEdit);
        return "redirect:/";
    }

    @GetMapping("/reparto")
    public String doReparto(@RequestParam("id")Integer id, Model model){
        Movies pelicula = moviesRepository.findById(id).orElse(null);

        List&amp;lt;MovieCast&amp;gt; reparto = movieCastRepository.findByPeliculaId(id);

        model.addAttribute("reparto", reparto);
        model.addAttribute("pelicula", pelicula);
        model.addAttribute("idiomas", spokenLanguagesRepository.findAll());

        return "pelicula";
    }

    @GetMapping("/trabajadores")
    public String doTrabajos(@RequestParam("id")Integer id, Model model){
        Movies pelicula = moviesRepository.findById(id).orElse(null);

        List&amp;lt;MovieCrew&amp;gt; trabajos = movieCrewRepository.findByPeliculaId(id);

        model.addAttribute("trabajos", trabajos);
        model.addAttribute("pelicula", pelicula);
        model.addAttribute("idiomas", spokenLanguagesRepository.findAll());

        return "pelicula";
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Vista
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;pelicula.jsp&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;%@ page import="es.taw.movies.entity.Movies" %&amp;gt;
&amp;lt;%@ page import="java.util.List" %&amp;gt;
&amp;lt;%@ page import="es.taw.movies.entity.MovieCast" %&amp;gt;
&amp;lt;%@ page import="es.taw.movies.entity.MovieCrew" %&amp;gt;
&amp;lt;%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %&amp;gt;
&amp;lt;%@ page contentType="text/html;charset=UTF-8" language="java" %&amp;gt;
&amp;lt;html&amp;gt;

&amp;lt;%
    String title = "Ficha de la Película";
    Movies pelicula = (Movies) request.getAttribute("pelicula");
%&amp;gt;

&amp;lt;head&amp;gt;
    &amp;lt;title&amp;gt;&amp;lt;%=title%&amp;gt;&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;h1&amp;gt;&amp;lt;%=title%&amp;gt;&amp;lt;/h1&amp;gt;

&amp;lt;table border="1"&amp;gt;
    &amp;lt;tr&amp;gt;
        &amp;lt;td&amp;gt;
            &amp;lt;form:form modelAttribute="pelicula" method="post" action="/guardar"&amp;gt;
                &amp;lt;table&amp;gt;
                    &amp;lt;form:hidden path="id"/&amp;gt;
                    &amp;lt;tr&amp;gt;
                        &amp;lt;td&amp;gt;Título:&amp;lt;/td&amp;gt;
                        &amp;lt;td&amp;gt;&amp;lt;form:input path="title"/&amp;gt;&amp;lt;/td&amp;gt;
                    &amp;lt;/tr&amp;gt;
                    &amp;lt;tr&amp;gt;
                        &amp;lt;td&amp;gt;Fecha:&amp;lt;/td&amp;gt;
                        &amp;lt;td&amp;gt;&amp;lt;form:input path="releaseDate"/&amp;gt;&amp;lt;/td&amp;gt;
                    &amp;lt;/tr&amp;gt;
                    &amp;lt;tr&amp;gt;
                        &amp;lt;td&amp;gt;Idiomas:&amp;lt;/td&amp;gt;
                        &amp;lt;td&amp;gt;&amp;lt;form:checkboxes path="spokenLanguagesList" items="${idiomas}" itemLabel="name"/&amp;gt;&amp;lt;/td&amp;gt;
                    &amp;lt;/tr&amp;gt;
                    &amp;lt;tr&amp;gt;
                        &amp;lt;td&amp;gt;Sinopsis:&amp;lt;/td&amp;gt;
                        &amp;lt;td&amp;gt;&amp;lt;form:textarea path="overview" cols="100" rows="5"/&amp;gt;&amp;lt;/td&amp;gt;
                    &amp;lt;/tr&amp;gt;
                &amp;lt;/table&amp;gt;
                &amp;lt;form:button&amp;gt;Guardar&amp;lt;/form:button&amp;gt;
            &amp;lt;/form:form&amp;gt;
        &amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;
            &amp;lt;a href="/reparto?id=&amp;lt;%=pelicula.getId()%&amp;gt;" &amp;gt;Reparto&amp;lt;/a&amp;gt; -
            &amp;lt;a href="/trabajadores?id=&amp;lt;%=pelicula.getId()%&amp;gt;" &amp;gt;Trabajadores&amp;lt;/a&amp;gt; &amp;lt;br&amp;gt;

            &amp;lt;%
                List&amp;lt;MovieCast&amp;gt; reparto = (List&amp;lt;MovieCast&amp;gt;) request.getAttribute("reparto");
                List&amp;lt;MovieCrew&amp;gt; trabajos = (List&amp;lt;MovieCrew&amp;gt;) request.getAttribute("trabajos");
                if(reparto!=null){
                    %&amp;gt;
            &amp;lt;h1&amp;gt;Reparto&amp;lt;/h1&amp;gt; &amp;lt;br&amp;gt;
            &amp;lt;%
                    for (MovieCast r : reparto){
            %&amp;gt;

                        &amp;lt;%=r.getCharacterName()%&amp;gt; - &amp;lt;%=r.getPersonId().getName()%&amp;gt; &amp;lt;br&amp;gt;
            &amp;lt;%
                    }
                } else if (trabajos!=null) {
                    %&amp;gt;
            &amp;lt;h1&amp;gt;Trabajadores&amp;lt;/h1&amp;gt; &amp;lt;br&amp;gt;
            &amp;lt;%
                    for (MovieCrew t : trabajos){
            %&amp;gt;

                        &amp;lt;%=t.getJob()%&amp;gt; - &amp;lt;%=t.getPersonId().getName()%&amp;gt; &amp;lt;br&amp;gt;
            &amp;lt;%
                    }
                }
            %&amp;gt;

        &amp;lt;/td&amp;gt;
    &amp;lt;/tr&amp;gt;
&amp;lt;/table&amp;gt;



&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;peliculas.jsp&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;%@ page import="es.taw.movies.entity.Movies" %&amp;gt;
&amp;lt;%@ page import="java.util.List" %&amp;gt;
&amp;lt;%@ page import="es.taw.movies.entity.SpokenLanguages" %&amp;gt;
&amp;lt;%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %&amp;gt;
&amp;lt;%@ page contentType="text/html;charset=UTF-8" language="java" %&amp;gt;
&amp;lt;html&amp;gt;

&amp;lt;%
    String title = "Peliculas";
    List&amp;lt;Movies&amp;gt; peliculas = (List&amp;lt;Movies&amp;gt;) request.getAttribute("peliculas");
%&amp;gt;

&amp;lt;head&amp;gt;
    &amp;lt;title&amp;gt;&amp;lt;%=title%&amp;gt;&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;h1&amp;gt;&amp;lt;%=title%&amp;gt;&amp;lt;/h1&amp;gt;

&amp;lt;form:form modelAttribute="filtro" method="post" action="/filtrar"&amp;gt;
    &amp;lt;table border="1"&amp;gt;
        &amp;lt;tr&amp;gt;
            &amp;lt;th&amp;gt;PRODUCTORAS&amp;lt;/th&amp;gt;
            &amp;lt;th&amp;gt;PELÍCULAS&amp;lt;/th&amp;gt;
        &amp;lt;/tr&amp;gt;
        &amp;lt;tr&amp;gt;
            &amp;lt;td&amp;gt;
                &amp;lt;form:checkboxes path="productoras" items="${productoras}" itemLabel="name" delimiter="&amp;lt;br&amp;gt;"/&amp;gt;
            &amp;lt;/td&amp;gt;
            &amp;lt;td&amp;gt;
                &amp;lt;%
                for(Movies p : peliculas){
                %&amp;gt;
                &amp;lt;a href="/editar?id=&amp;lt;%=p.getId()%&amp;gt;"&amp;gt; &amp;lt;%=p.getTitle()%&amp;gt; &amp;lt;/a&amp;gt; - (
                &amp;lt;%
                    for(SpokenLanguages s : p.getSpokenLanguagesList()){
                    %&amp;gt;

                    &amp;lt;%=s.getName()%&amp;gt;

                    &amp;lt;%
                    }
                    %&amp;gt;
                    )&amp;lt;br&amp;gt;
                &amp;lt;%
                }
                %&amp;gt;
            &amp;lt;/td&amp;gt;

        &amp;lt;/tr&amp;gt;
    &amp;lt;/table&amp;gt;
    &amp;lt;form:button&amp;gt;Filtrar&amp;lt;/form:button&amp;gt;
&amp;lt;/form:form&amp;gt;

&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Repos
&lt;/h2&gt;

&lt;p&gt;buscar una lista en una lista&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;package es.taw.movies.dao;

import es.taw.movies.entity.Movies;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import java.util.List;

public interface MoviesRepository extends JpaRepository&amp;lt;Movies, Integer&amp;gt; {

    @Query("select m from Movies m join m.productionCompaniesList p where p.id in :productoras")
    public List&amp;lt;Movies&amp;gt; findByProductionCompaniesList(@Param("productoras")List&amp;lt;Integer&amp;gt; productoras);

}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public interface MovieCrewRepository extends JpaRepository&amp;lt;MovieCrew, Integer&amp;gt; {

    @Query("select crew from MovieCrew crew where crew.movieId.id = :id")
    public List&amp;lt;MovieCrew&amp;gt; findByPeliculaId(@Param("id")Integer id);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ui(Filtro)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;package es.taw.movies.ui;


import lombok.Data;

import java.util.List;

@Data
public class Filtro {
    List&amp;lt;Integer&amp;gt; productoras;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>springboot.firststeps(lib)</title>
      <dc:creator>olver team</dc:creator>
      <pubDate>Mon, 23 Jun 2025 21:05:23 +0000</pubDate>
      <link>https://dev.to/learnspringtools/springbootfirststepslib-54ki</link>
      <guid>https://dev.to/learnspringtools/springbootfirststepslib-54ki</guid>
      <description>&lt;p&gt;&lt;strong&gt;libroControlador.java&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %&amp;gt;
&amp;lt;%@ page import="es.uma.taw.libroswebapp.entity.LibroEntity" %&amp;gt;
&amp;lt;%@ page import="java.util.List" %&amp;gt;
&amp;lt;%@ page import="es.uma.taw.libroswebapp.entity.GeneroEntity" %&amp;gt;
&amp;lt;%@ page contentType="text/html;charset=UTF-8" language="java" %&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;title&amp;gt;Catálogo de libros disponibles&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;%
    List&amp;lt;LibroEntity&amp;gt; lista = (List&amp;lt;LibroEntity&amp;gt;) request.getAttribute("libros");
%&amp;gt;
&amp;lt;body&amp;gt;

&amp;lt;jsp:include page="cabecera.jsp"/&amp;gt;

&amp;lt;h1&amp;gt;Catálogo de libros disponibles&amp;lt;/h1&amp;gt;

&amp;lt;form:form modelAttribute="filtro" method="post" action="/libros/filtrar"&amp;gt;
    Contiene:&amp;lt;form:input path="cadena"/&amp;gt; y pertenece a los siguientes generos:&amp;lt;br&amp;gt;
    &amp;lt;form:checkboxes path="generosList" items="${generos}" itemLabel="generoname"/&amp;gt; &amp;lt;br&amp;gt;
    &amp;lt;form:button&amp;gt;Filtrar&amp;lt;/form:button&amp;gt;
&amp;lt;/form:form&amp;gt;

&amp;lt;table border="1"&amp;gt;
    &amp;lt;tr&amp;gt;
        &amp;lt;th&amp;gt;ID&amp;lt;/th&amp;gt;
        &amp;lt;th&amp;gt;NOMBRE&amp;lt;/th&amp;gt;
        &amp;lt;th&amp;gt;AÑO PUBLICACIÓN&amp;lt;/th&amp;gt;
        &amp;lt;th&amp;gt;EDITORIAL&amp;lt;/th&amp;gt;
        &amp;lt;th&amp;gt;Generos&amp;lt;/th&amp;gt;
        &amp;lt;th&amp;gt;&amp;lt;/th&amp;gt;
        &amp;lt;th&amp;gt;&amp;lt;/th&amp;gt;
    &amp;lt;/tr&amp;gt;
&amp;lt;%
    for (LibroEntity libro: lista) {
%&amp;gt;
    &amp;lt;tr&amp;gt;
        &amp;lt;td&amp;gt;&amp;lt;%= libro.getLibroid() %&amp;gt;&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;&amp;lt;%= libro.getLibroname() %&amp;gt;&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;&amp;lt;%= libro.getYearreleased() %&amp;gt;&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;&amp;lt;%= libro.getEditorialid().getEditorialname() %&amp;gt;&amp;lt;/td&amp;gt;

        &amp;lt;td&amp;gt;
            &amp;lt;%
                List&amp;lt;GeneroEntity&amp;gt; generos = libro.getGeneroList();
                for (int i = 0; i &amp;lt; generos.size(); i++) {
                    out.print(generos.get(i).getGeneroname());
                    if (i &amp;lt; generos.size() - 1) out.print(", ");
                }
            %&amp;gt;
        &amp;lt;/td&amp;gt;

        &amp;lt;td&amp;gt;&amp;lt;form method="post" action="/libros/editar"&amp;gt;
            &amp;lt;input type="hidden" name="id" value="&amp;lt;%= libro.getLibroid() %&amp;gt;"&amp;gt;
            &amp;lt;input type="submit" value="Editar"/&amp;gt;
        &amp;lt;/form&amp;gt;&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;&amp;lt;a href="/libros/borrar?id=&amp;lt;%= libro.getLibroid() %&amp;gt;"  onclick="return confirm('¿Está seguro de que quiere borrar el libro &amp;lt;%=libro.getLibroname() %&amp;gt;?')"&amp;gt;Borrar&amp;lt;/a&amp;gt; &amp;lt;/td&amp;gt;
    &amp;lt;/tr&amp;gt;
&amp;lt;%
    }
%&amp;gt;
&amp;lt;/table&amp;gt;
&amp;lt;form method="post" action="/libros/editar"&amp;gt;
    &amp;lt;input type="submit" value="Nuevo libro"&amp;gt;
&amp;lt;/form&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;loginController.java&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@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:/";
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Vista
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;libros.jsp&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %&amp;gt;
&amp;lt;%@ page import="es.uma.taw.libroswebapp.entity.LibroEntity" %&amp;gt;
&amp;lt;%@ page import="java.util.List" %&amp;gt;
&amp;lt;%@ page import="es.uma.taw.libroswebapp.entity.GeneroEntity" %&amp;gt;
&amp;lt;%@ page contentType="text/html;charset=UTF-8" language="java" %&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;title&amp;gt;Catálogo de libros disponibles&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;%
    List&amp;lt;LibroEntity&amp;gt; lista = (List&amp;lt;LibroEntity&amp;gt;) request.getAttribute("libros");
%&amp;gt;
&amp;lt;body&amp;gt;

&amp;lt;jsp:include page="cabecera.jsp"/&amp;gt;

&amp;lt;h1&amp;gt;Catálogo de libros disponibles&amp;lt;/h1&amp;gt;

&amp;lt;form:form modelAttribute="filtro" method="post" action="/libros/filtrar"&amp;gt;
    Contiene:&amp;lt;form:input path="cadena"/&amp;gt; y pertenece a los siguientes generos:&amp;lt;br&amp;gt;
    &amp;lt;form:checkboxes path="generosList" items="${generos}" itemLabel="generoname"/&amp;gt; &amp;lt;br&amp;gt;
    &amp;lt;form:button&amp;gt;Filtrar&amp;lt;/form:button&amp;gt;
&amp;lt;/form:form&amp;gt;

&amp;lt;table border="1"&amp;gt;
    &amp;lt;tr&amp;gt;
        &amp;lt;th&amp;gt;ID&amp;lt;/th&amp;gt;
        &amp;lt;th&amp;gt;NOMBRE&amp;lt;/th&amp;gt;
        &amp;lt;th&amp;gt;AÑO PUBLICACIÓN&amp;lt;/th&amp;gt;
        &amp;lt;th&amp;gt;EDITORIAL&amp;lt;/th&amp;gt;
        &amp;lt;th&amp;gt;Generos&amp;lt;/th&amp;gt;
        &amp;lt;th&amp;gt;&amp;lt;/th&amp;gt;
        &amp;lt;th&amp;gt;&amp;lt;/th&amp;gt;
    &amp;lt;/tr&amp;gt;
&amp;lt;%
    for (LibroEntity libro: lista) {
%&amp;gt;
    &amp;lt;tr&amp;gt;
        &amp;lt;td&amp;gt;&amp;lt;%= libro.getLibroid() %&amp;gt;&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;&amp;lt;%= libro.getLibroname() %&amp;gt;&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;&amp;lt;%= libro.getYearreleased() %&amp;gt;&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;&amp;lt;%= libro.getEditorialid().getEditorialname() %&amp;gt;&amp;lt;/td&amp;gt;

        &amp;lt;td&amp;gt;
            &amp;lt;%
                List&amp;lt;GeneroEntity&amp;gt; generos = libro.getGeneroList();
                for (int i = 0; i &amp;lt; generos.size(); i++) {
                    out.print(generos.get(i).getGeneroname());
                    if (i &amp;lt; generos.size() - 1) out.print(", ");
                }
            %&amp;gt;
        &amp;lt;/td&amp;gt;

        &amp;lt;td&amp;gt;&amp;lt;form method="post" action="/libros/editar"&amp;gt;
            &amp;lt;input type="hidden" name="id" value="&amp;lt;%= libro.getLibroid() %&amp;gt;"&amp;gt;
            &amp;lt;input type="submit" value="Editar"/&amp;gt;
        &amp;lt;/form&amp;gt;&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;&amp;lt;a href="/libros/borrar?id=&amp;lt;%= libro.getLibroid() %&amp;gt;"  onclick="return confirm('¿Está seguro de que quiere borrar el libro &amp;lt;%=libro.getLibroname() %&amp;gt;?')"&amp;gt;Borrar&amp;lt;/a&amp;gt; &amp;lt;/td&amp;gt;
    &amp;lt;/tr&amp;gt;
&amp;lt;%
    }
%&amp;gt;
&amp;lt;/table&amp;gt;
&amp;lt;form method="post" action="/libros/editar"&amp;gt;
    &amp;lt;input type="submit" value="Nuevo libro"&amp;gt;
&amp;lt;/form&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;libro.jsp&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;%@ page import="es.uma.taw.libroswebapp.entity.LibroEntity" %&amp;gt;
&amp;lt;%@ page import="es.uma.taw.libroswebapp.entity.EditorialEntity" %&amp;gt;
&amp;lt;%@ page import="java.util.List" %&amp;gt;
&amp;lt;%@ page import="es.uma.taw.libroswebapp.entity.GeneroEntity" %&amp;gt;
&amp;lt;%@ page import="es.uma.taw.libroswebapp.entity.EscritorEntity" %&amp;gt;&amp;lt;%--
  Created by IntelliJ IDEA.
  User: guzman
  Date: 26/3/25
  Time: 11:40
  To change this template use File | Settings | File Templates.
--%&amp;gt;
&amp;lt;%@ page contentType="text/html;charset=UTF-8" language="java" %&amp;gt;
&amp;lt;html&amp;gt;

&amp;lt;%
  boolean esEditar = true;
  LibroEntity libro = (LibroEntity)request.getAttribute("libro");
  if (libro.getLibroid() == null) esEditar = false;
  List&amp;lt;EditorialEntity&amp;gt; editoriales = (List&amp;lt;EditorialEntity&amp;gt;) request.getAttribute("editoriales");
  List&amp;lt;GeneroEntity&amp;gt; generos = (List&amp;lt;GeneroEntity&amp;gt;) request.getAttribute("generos");
  List&amp;lt;EscritorEntity&amp;gt; escritores = (List&amp;lt;EscritorEntity&amp;gt;)request.getAttribute("escritores");
%&amp;gt;

&amp;lt;head&amp;gt;
  &amp;lt;title&amp;gt;&amp;lt;%= (esEditar? "Edición del" : "Nuevo") %&amp;gt; libro&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;h1&amp;gt;&amp;lt;%= (esEditar? "Editar" : "Nuevo") %&amp;gt; libro&amp;lt;/h1&amp;gt;

&amp;lt;form method="post" action="/libros/guardar"&amp;gt;
  &amp;lt;input type="hidden" name="id" value="&amp;lt;%= (libro.getLibroid()==null? -1: libro.getLibroid()) %&amp;gt;"&amp;gt;
  Nombre: &amp;lt;input type="text" name="nombre" value="&amp;lt;%= (libro.getLibroname()!=null?libro.getLibroname() :"") %&amp;gt;"&amp;gt; &amp;lt;br/&amp;gt;
  Año de publicación: &amp;lt;input type="text" name="anyo" value="&amp;lt;%= (libro.getYearreleased()==0? "" : libro.getYearreleased()) %&amp;gt;"&amp;gt; &amp;lt;br/&amp;gt;
  Editorial:
  &amp;lt;select name="editorial"&amp;gt;
  &amp;lt;%
    for (EditorialEntity laeditorial: editoriales) {
      String seleccionado = "";
      if (esEditar &amp;amp;&amp;amp; laeditorial.getEditorialid() == libro.getEditorialid().getEditorialid()) {
        seleccionado = "selected";
      }

  %&amp;gt;

      &amp;lt;option value="&amp;lt;%= laeditorial.getEditorialid() %&amp;gt;" &amp;lt;%=seleccionado%&amp;gt;  &amp;gt;&amp;lt;%= laeditorial.getEditorialname() %&amp;gt;&amp;lt;/option&amp;gt;
  &amp;lt;% } %&amp;gt;
  &amp;lt;/select&amp;gt;
  &amp;lt;br/&amp;gt;
  Géneros:
  &amp;lt;%
    for (GeneroEntity genero: generos) {
      String seleccionado = "";
      if (esEditar &amp;amp;&amp;amp; libro.getGeneroList().contains(genero)) {
        seleccionado = "checked";
      }
  %&amp;gt;
  &amp;lt;input type="checkbox" &amp;lt;%= seleccionado  %&amp;gt; name="generos" value="&amp;lt;%= genero.getGeneroid() %&amp;gt;"&amp;gt; &amp;lt;%= genero.getGeneroname() %&amp;gt;
  &amp;lt;%
    }
  %&amp;gt;
  &amp;lt;br/&amp;gt;
  Escritores:
  &amp;lt;select name="escritores" multiple&amp;gt;
  &amp;lt;%
    for (EscritorEntity escritor: escritores) {
      String seleccionado = "";
      if (esEditar &amp;amp;&amp;amp; libro.getEscritorList().contains(escritor)) {
        seleccionado = "selected";
      }
  %&amp;gt;
  &amp;lt;option &amp;lt;%= seleccionado  %&amp;gt; value="&amp;lt;%= escritor.getEscritorid() %&amp;gt;"&amp;gt; &amp;lt;%= escritor.getEscritorname() %&amp;gt;
  &amp;lt;%
    }
  %&amp;gt;
  &amp;lt;/select&amp;gt;
  &amp;lt;br/&amp;gt;
  &amp;lt;input type="submit" value="Guardar"&amp;gt;
&amp;lt;/form&amp;gt;


&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;login.jsp&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %&amp;gt;

&amp;lt;%@ page contentType="text/html;charset=UTF-8" language="java" %&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;title&amp;gt;Login&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;%
    String error = (String) request.getAttribute("error");
%&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;h1&amp;gt;Login&amp;lt;/h1&amp;gt;

&amp;lt;%
    if(error!=null){
%&amp;gt;
    &amp;lt;%=error%&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;
&amp;lt;%
    }
%&amp;gt;

&amp;lt;form:form action="/autentica" method="post" modelAttribute="modelUsuario"&amp;gt;
    Usuario: &amp;lt;form:input path="usuariosurname"/&amp;gt; &amp;lt;br&amp;gt;
    Contraseña: &amp;lt;form:password path="usuariopassword"/&amp;gt; &amp;lt;br&amp;gt;
    &amp;lt;form:button&amp;gt;Enviar&amp;lt;/form:button&amp;gt;
&amp;lt;/form:form&amp;gt;

&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;cabecera.jsp&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;%@ page import="es.uma.taw.libroswebapp.entity.UsuarioEntity" %&amp;gt;
&amp;lt;%@ page import="es.uma.taw.libroswebapp.entity.LibroEntity" %&amp;gt;
&amp;lt;%@ page import="java.util.List" %&amp;gt;
&amp;lt;%@ page contentType="text/html;charset=UTF-8" language="java" %&amp;gt;

&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;title&amp;gt;Cabecera&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;%
    UsuarioEntity user = (UsuarioEntity) session.getAttribute("user");
    List&amp;lt;LibroEntity&amp;gt; lista = (List&amp;lt;LibroEntity&amp;gt;) request.getAttribute("libros");
%&amp;gt;

&amp;lt;body&amp;gt;
&amp;lt;table width="100%"&amp;gt;
    &amp;lt;tr&amp;gt;
        &amp;lt;td&amp;gt; &amp;lt;a href="/libros"&amp;gt;Libros&amp;lt;/a&amp;gt; &amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt; &amp;lt;%=lista.get(0).getLibroname()%&amp;gt; &amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;Editoriales&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;Bienvenido, &amp;lt;%=user.getUsuariosurname()%&amp;gt; ( &amp;lt;a href="/salir"&amp;gt;Salir&amp;lt;/a&amp;gt; ) &amp;lt;/td&amp;gt;
    &amp;lt;/tr&amp;gt;
&amp;lt;/table&amp;gt;


&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ui(Filtro)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;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&amp;lt;GeneroEntity&amp;gt; generosList;

}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Repos&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public interface LibroRepository extends JpaRepository&amp;lt;LibroEntity, Integer&amp;gt; {

    @Query("select l from LibroEntity l where l.libroname like concat('%',:cadena,'%')")
    public List&amp;lt;LibroEntity&amp;gt; findByCadena(@Param("cadena")String cadena);

    @Query("select l from LibroEntity l where l.usuarioid.usuarioid = :id ")
    public List&amp;lt;LibroEntity&amp;gt; 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&amp;lt;LibroEntity&amp;gt; findByCadenaYGeneros(@Param("cadena")String cadena, @Param("generos")List&amp;lt;GeneroEntity&amp;gt; generos);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
  </channel>
</rss>
