Introduction : Routage, controllers, services, entities, views
| Méthode | Route | Action | Vue retournée |
|---|---|---|---|
| GET | / | Page d'accueil | index.html |
| GET | /films | Liste tous les films | liste.html |
| GET | /films/nouveau | Affiche formulaire ajout | formulaire.html |
| POST | /films | Enregistre un nouveau film | Redirection → /films |
| GET | /films/{id} | Détail d'un film | detail.html |
| POST | /films/{id}/supprimer | Supprime un film | Redirection → /films |
Attributs :
id : Long (identifiant unique)titre : String (obligatoire)realisateur : Stringannee : Integer (entre 1900 et 2100)note : Integer (entre 1 et 5)Méthodes :
Annotation : @Service
Attributs :
films : List<Film> (stockage en mémoire)nextId : Long (compteur pour générer les IDs)Constructeur :
Initialiser la liste avec 3-4 films de démo Exemples : - Inception, Nolan, 2010, note 5 - Matrix, Wachowski, 1999, note 5 - Pulp Fiction, Tarantino, 1994, note 5
Méthodes :
null si non trouvéfilm.id == null → nouveau film → assigner nextId++films.removeIf(f → f.getId().equals(id))
Annotation : @Controller
Injection de dépendance :
@Autowired private FilmService filmService;
Méthodes à implémenter :
Méthode : home() Retour : "index"
Méthode : liste(Model model)
- Récupérer tous les films via le service
- Ajouter au modèle : model.addAttribute("films", ...)
Retour : "liste"
Méthode : formulaireAjout(Model model)
- Créer un film vide
- Ajouter au modèle : model.addAttribute("film", new Film())
Retour : "formulaire"
Méthode : ajouterFilm(@ModelAttribute Film film) - Sauvegarder via le service - Redirection : "redirect:/films"
Méthode : detail(@PathVariable Long id, Model model) - Récupérer le film par ID - Ajouter au modèle Retour : "detail"
Méthode : supprimer(@PathVariable Long id) - Supprimer via le service - Redirection : "redirect:/films"
Contenu :
/films (“Voir tous les films”)Contenu :
{{#films}} pour afficher chaque film/films/{{id}}/films/{{id}}/supprimer/films/nouveauContenu :
/filmstitre (text, required)realisateur (text)annee (number)note (number, min=1, max=5)/filmsContenu :
{{titre}}{{realisateur}}{{annee}}{{note}}/5/films/films/{{id}}/supprimer
# Port du serveur (optionnel) server.port=8080 #Mustache configuration spring.mustache.charset=UTF-8 spring.mustache.prefix=classpath:/templates/ spring.mustache.suffix=.html
Fonctionnel :
Architecture :
Bonus :