Créer et déployer une application Java / Web
Cette quête va te permettre de découvrir les composants de base d'une application Java Web et de te familiariser avec ton environnement de développement (IDE, Serveur, etc..).
Objectifs
-
- Créer ta première application Java/Web
- Comprendre le cycle d'une requête http dans un contexte Java
- Découvrir l'API Servlet et JSP de Java
- Réaliser le déploiement de ton application sur un serveur d'application
Ressources
Télécharger le serveur d'application Tomcat
Comme tu le sais peut être, Java en est à sa version 10 depuis peu de temps, et quel que soit l'outil ou la librairie que tu utiliseras à l'avenir dans le monde Java/JEE, il faut toujours t'assurer de sa bonne compatibilité avec la version Java que tu cibles.
Télécharge une version de tomcat "Java 9 compatible". Par ici http://tomcat.apache.org/whichversion.html
Installe tomcat dans le répertoire /opt
Créer un nouveau projet Web
Lance IntelliJ et crée un nouveau projet web qui cible la version 8 de Java et le serveur tomcat que tu viens d'installer. N'oublie pas de cocher "Web Application" lors de la création.
Pour faire original, tu peux l'appeler HelloApp.

Créer une servlet
Tu vas à présent créer une servlet qui va également renvoyer un "Hello" à l'utilisateur.
-
Affiche la vue Web d'IntelliJ et fais un clic droit sur Web, puis New > Servlet.
-
Crée la servlet SimpleHelloServlet dans le nouveau package org.wcs.hello. La classe SimpleHelloServlet est créée dans l'arborescence du dossier src du projet. Elle étend la classe abstraite HttpServlet, type issu de l'api JEE, qui permet d'interagir avec les requêtes et les réponses HTTP. Elle implémente par défaut les 2 méthodes doPost et doGet qui permettent de répondre aux 2 types de requêtes HTTP correspondantes. Ces 2 méthodes prennent pour paramètres la requête http envoyée par le client et la réponse à lui retourner.
-
Ajoute maintenant le code suivant dans le corps de la méthode doGet pour implémenter un nouvel "hello"PrintWriter out = response.getWriter(); out.print("Simple hello!");
-
Reste maintenant à associer ce code avec une url appelable par l'utilisateur. Pour ce faire, rajoute l'attribut urlPatterns à l'annotation WebServlet avec pour valeur {"/simple-hello"} comme ci-dessous @WebServlet(name = "SimpleHelloServlet", urlPatterns = {"/simple-hello"})
L'attribut urlPatterns de l'annotation @WebServlet permet au serveur d'associer l'url "/simple-hello" au code de ta nouvelle Servlet.
Tente à présent de lancer l'url http://localhost:8080/simple-hello depuis ton navigateur pour voir si tout est ok. Comme tu le vois, le serveur te retourne malgré tout une erreur 404, pour te signifier qu'il ne trouve pas de ressource associée à cette url. Ceci est simplement dû au fait que tous les changements de code que tu viens d'apporter ont été réalisés pendant que le serveur Tomcat "tournait", et qu'ils n'ont pas été pris en compte à chaud par celui-ci. Pour valider tes changements, redémarre le serveur Tomcat et teste à nouveau l'url.
Challenge
Renvoyer un Hello personnalisé à partir d'infos saisies par l'utilisateur
Pour que ton appli renvoie un Hello un peu plus adapté à l'utilisateur, tu vas maintenant :
- construire un formulaire html dans une nouvelle jsp (hello-form.jsp), afin d'envoyer une requête post contenant les infos suivantes à ta servlet SimpleHelloServlet: prénom, nom, heure de la journée.
- récupérer ces nouveaux paramètres dans la Servlet et créer un message adapté à l'utilisateur et à l'heure de la journée saisie (Good morning, Good afternoon ou Good night).
- dans un second temps, pour respecter le pattern MVC que l'on abordera plus tard, et pour pouvoir facilement appliquer un style css à notre message, fais en sorte que ta servlet passe ce message à une nouvelle jsp (custom-hello.jsp) qui sera chargée de l'afficher à l'utilisateur.
Critères de validation
-
- Pouvoir saisir son nom, prénom et l'heure de la journée dans un formulaire html accessible depuis l'url http://localhost:8080/hello-form.jsp Recevoir en retour un hello personnalisé, adapté à l'heure saisie, et amélioré par css.
- Ton code est accessible sur un dépôt github
Ressources
stackedit_data: eyJoaXN0b3J5IjpbLTEyMDc4OTc4ODAsLTk3MjQyODU2LDE4MD UwNzk2NjMsMTA2MzQ5MjI3MywtMTAxMDI3MzY4LC0xMTcyNjMy MzU3LC01OTY5OTUyNzQsLTE5MDE3MDY5ODMsMTQ5MTk4NzM2Ni wtODA2NTkzODM5LDE5OTU0NzA1MzYsMTM5ODk5NTc2N119