Creaţi o aplicaţie folosind Spring Boot unde un utilizator ȋşi poate rezerva un zbor către o destinaţie aleasă. Descărcaţi arhiva resources şi inlocuiţi folderele src/main/resources/template şi src/main/resources/static din proiectul vostru. Dacă utilizatorul are deja cont acesta se va putea loga ȋn aplicaţie. În cazul ȋn care utilizatorul nu are cont acesta va trebui să acceseze pagina de register şi să ȋşi creeze un cont. După crearea contului el va fi redirecţionat către pagina de logare. Username-ul utilizatorului trebuie să fie o adresă de mail unică ȋn baza de date. Odată logat utilizatorul este redirecţionat către pagina de home unde ȋşi va alege destinaţia, data de plecare, data de sosire şi numărul de adulţi/ copii. Când a dat click pe butonul de “Check availability” va apărea lista cu zborurile din baza de date care corespund selecţiei. Utilizatorul va bifa zborurile dorite, iar butonul “Get Flights” va prelua aceste zboruri şi va creea o rezervare a lor pentru userul curent. Puteţi modifica afişare zborurilor ca să cuprindă mai multe detalii ale zborului. Sugestii de implementare: Acestea sunt doar nişte sugestii, poţi face aplicaţia aşa cum doreşti. Fişierele html ataşate sunt modificate astfel ȋncât să poată fi construită aplicaţia folosind aceste sugestii, dar , bineȋnţeles , orice poate fi schimbat. Se va aplica metoda de construire a proiectului ȋnvăţată anterior la creearea aplicatiei Cinema (modelul MVC). Vom avea următoarele clase: User -> pentru utilizatorii aplicaţiei unde se vor regăsi ca şi atribute id, username-ul şi parola (pentru parolă poţi face ca aceasta să fie salvată encriptată ȋn baza de date) Flights -> zborurile vor avea ca atribute:id, city, departure date, arrival date, airline; Reservation -> atributele vor fi idUser, idZbor, numberOfChildrens, numberOfAdults; În cotroleri poţi crea următoarele atribute pentru a le folosi ȋn metodele hadler. private List<Flight> flightList; private User currentUser; private int noChildren; private int noAdults; Taguri folosite : th:text=”${attributename}” -> tag folosit pentru a afişa valoarea unui atribut al modelului th:each=”value : ${listName}” -> folosim acest tag pentru a itera o listă th:href=”@{/value}” -> creeaza un link th:name=”valueName” -> folosită pentru a trimite o valoare a unui field de input din html către controler th:action=”@/value” -> folosită petru a define url-ul formularului Model- interfaţă folosită pe post de container pentru atributele pe care vrem să le trimitem către pagina html RedirectAttributes -> un tip specializat al interfeţei Model pe controller, ȋl pot folosi pentru a selecta atribute pentru redirecţionare. @ModelAttribute -> utilizată pentru legarea datelor De exemplu pentru metoda care se va ocupa de requestul pentru logarea userului va avea ca parametrii uname şi psw pe care ȋi primeşte din formularul de ȋnregistrare. @GetMapping("/login") public String logIn(@RequestParam(value = "uname", required = false) String uname, @RequestParam(value = "psw", required = false) String psw, RedirectAttributes redirectAttributes){ redirectAttributes.addAttribute("user", uname); …………………………………………………………………………………………………………………………………………………………………………………………………….. <div> <label ><b>Username</b></label> <input th:name="uname" type="text" class ="form-group" placeholder="Enter Username" name="uname" required> </div> <div> <label ><b>Password</b></label> <input th:name="psw" type="password" class ="form-group" placeholder="Enter Password" name="psw" required> </div> Putem folosi şi RedirectAttributes dacă vrem să redirecţionăm un atribut către altă metoda hadler. În exemplul de mai sus usernameul va fi trimis ca atribut al modelului când redirecţionăm pagina. Petru a redirecţiona vom folosi return “redirect: pageName”; Articole utile: https://www.baeldung.com/thymeleaf-in-spring-mvc https://www.baeldung.com/spring-mvc-and-the-modelattribute-annotation https://www.baeldung.com/spring-new-requestmapping-shortcuts