Table des matières

TD3 - Spring Film

Introduction : Routage, controllers, services, entities, views

1. Architecture Générale

siofilmsmodelsservicescontrollersFilmLong idString titreString realisateurInteger anneeInteger notegetters/settersFilm()Film(Long, String, String, Integer, Integer)FilmServiceList<Film> filmsLong nextIdList<Film> findAll()Film findById(Long id)void save(Film film)void deleteById(Long id)FilmControllerFilmService filmServiceString home()String liste(Model)String formulaireAjout(Model)String ajouterFilm(Film)String detail(Long, Model)String supprimer(Long)utilisegère

2. Fonctionnalités à implémenter

Routes à créer

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

3. Modèle de données

Classe Film

Attributs :

Méthodes :

4. Service FilmService

Annotation : @Service

Attributs :

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 :

findAll() : List<Film>

findById(Long id) : Film

save(Film film) : void

deleteById(Long id) : void

5. Contrôleur FilmController

Annotation : @Controller

Injection de dépendance :

@Autowired
private FilmService filmService;

Méthodes à implémenter :

@GetMapping("/")

Méthode : home()
Retour : "index"

@GetMapping("/films")

Méthode : liste(Model model)
- Récupérer tous les films via le service
- Ajouter au modèle : model.addAttribute("films", ...)
Retour : "liste"

@GetMapping("/films/nouveau")

Méthode : formulaireAjout(Model model)
- Créer un film vide
- Ajouter au modèle : model.addAttribute("film", new Film())
Retour : "formulaire"

@PostMapping("/films")

Méthode : ajouterFilm(@ModelAttribute Film film)
- Sauvegarder via le service
- Redirection : "redirect:/films"

@GetMapping("/films/{id}")

Méthode : detail(@PathVariable Long id, Model model)
- Récupérer le film par ID
- Ajouter au modèle
Retour : "detail"

@PostMapping("/films/{id}/supprimer")

Méthode : supprimer(@PathVariable Long id)
- Supprimer via le service
- Redirection : "redirect:/films"

6. Vues Mustache

index.html

Contenu :

liste.html

Contenu :

formulaire.html

Contenu :

detail.html

Contenu :

7. Configuration

application.properties

# Port du serveur (optionnel)
server.port=8080

#Mustache configuration
spring.mustache.charset=UTF-8
spring.mustache.prefix=classpath:/templates/
spring.mustache.suffix=.html

8. Dod

Fonctionnel :

Architecture :

Bonus :