Développement Web avec Java (et Spring)
Introduction
Il faire du Web en Java, il ya plusieurs possibilités les principales sont :
- JakartaEE (anciennement JavaEE) : un ensemble de spécification pour des APIs de développement d'applications d'entreprise en Java
- Spring : un framework Java pour faciliter le développement de tout types d'applications
Ici, nous allons utiliser Spring car il est très facile à aborder et on est très rapidement productif avec. Il est très utilisé dans l'industrie. JakartaEE est aussi intéressant à connaître, vous aurez un cours d'introduction dessus au S4.
Spring est un très grand framework avec beaucoup de fonctionnalités, dont des fonctionnalités de développement d'application web MVC, que nous allons utiliser dans ce tutoriel.
Mettre en place un environnement de développement Java
Installer un JDK
Avec Winget
winget install Microsoft.OpenJDK.17
Avec Chocolatey
choco install openjdk17
Avec APT
sudo apt install openjdk-17-jdk
Avec Homebrew
brew install --cask oracle-jdk
Manuellement
Suivez ce lien, téléchargez et exécutez l'installeur correspondant à votre plateforme.
Environnement de développement
Ce tutoial n'est pas dépendant d'un IDE particulier, il utilise la CLI Maven pour exécuter les projets. Ainsi, vous pouvez utiliser n'importe quel IDE ou éditeur de texte. Je recommande les suivants :
- Jetbrains IDEA : IDE Jetbrains dédié au développement Java
- Visual Studio Code avec le pack de plugins Java" de RedHat
Présentation de Spring et Spring Boot
Spring Boot ?
Spring Boot est une des fonctionnalités de Spring qui permet de créer une application "stand-alone" (sans avoir besoin de serveur d'application) et de l'autoconfigurer pour des besoin simple. Cela permet de démarrer rapidement sans passer trop de temps à configurer son projet.
Le pattern MVC
Comme son nom l'indique, ce framework se base sur le pattern MVC, qui divise l'architecture de l'application en trois parties :
- Modèle : les données de l'application
- Vue : les pages web de l'application
- Controlleur : gestion des actions des utilisateurs, coordonne données et pages
Créer un projet Web
D'abord rendez vous sur start.spring.io, il s'agit d'un configurateur de projets spring, très utile pour démarrer un projet rapidement.
Voici les différence options à prendre :
- Project : Maven Project
- Language : Java
- Spring Boot : 2.6.0
- Projet Metadata :
- Group : sous la forme
fr.<votre pseudo>
(c'est une convention) - Artifact : nom de votre projet
- Name : nom de votre projet
- Description : un texte libre décrivant votre projet
- Package Name : laissez la valeur générée
- Packaging : JAR
- Java : 17 (vérifiez bien que vous avez Java 17 si vous l'aviez déjà avant ce tuto)
- Group : sous la forme
- Dépendencies : cliquez sur "Add Dependencies" et séléctionnez "Spring Web"
Explication du layout du projet
- Dossier
.mvn
: wrapper Maven qui nous permet d'utiliser Maven (le build tool du projet) sans avoir besoin de l'installer sur notre système (on ne va jamais y toucher). - Dossier
src/main/java/<package name de votre projet>
: package racine de nos source, on vas y mettre nos packages et nos classes Java. -
src/main/java/<nom du projet>Application.java
: fichier Java qui contient la méthodemain
de notre application Spring - Dossier
src/main/resources/static
: fichiers servis statiquement par notre application - Dossier
src/main/resources/templates
: c'est ici qu'on va ranger nos templates de vues - Fichier
src/main/resources/application.properties
: dans ce fichier on va définir la configuration de notre application - Dossier
src/main/test
: Dossier contenant les classes de tests. Nous ne couvrirons pas le sujet des tets dans ce tuto - Fichier
mvnw
etmvnw.cmd
: script du wrapper maven, on va l'appeler pour lancer et construire notre projet (mvnw
pour mac/linux etmvw.cmd
pour windows). - Ficheir
pom.xml
: descripteur Maven de notre projet, il contient les méta-données du projet, ainsi que les dépendances
Controlleurs & Routes
Commencez par créer un nouveau package controller
(sous src/main/java/<package name de votre projet>
).
Pour créer un controlleur, créez une classe dont le nom finit par "Controller" dans ce package. Par exemple, "HelloWorldController", et annotez cette classe avec @Controller
par exemple :
package fr.arsenelapostolet.springmvcapptuto.controller;
import org.springframework.stereotype.Controller;
@Controller
public class HelloWorldController {
}
Pour ajouter un préfixe de route à votre controleur, mettez lui l'attribut [RequestMapping("maroute")], par exemple :
@RequestMapping("/hello-world")
@Controller
public class HelloWorldController {
}
Ensuite, vous pouvez créer une méthode endpoint, avec l'annotation @GetMapping
:
@GetMapping
@ResponseBody
public String HelloWorld()
{
return "Hello world !";
}
Ici, on doit également ajouter
@ResponseBody
pour que notre string soit utilisée telle qu'elle et non comme un nom de template. Nous n'aurons plus besoin de la rajouter quand nous utiliserons les templates.
La route de ce endpoint est donc GET /hello-world
. On peut constater en lançant l'application avec un :
./mvnw.cmd spring-boot:run
Et en en allant à https://localhost:8080/hello-world
On peut donner des suites de route particulières aux méthodes endpoint :
@GetMapping("fr")
@ResponseBody
public string HelloWorldFr()
{
return "Bonjour, le monde";
}
@GetMapping("en"))
@ResponseBody
public string HelloWorldEn()
{
return "Hello, world";
}