Tutoriel d’application Web Java pour débutants

Application Web Java est utilisée pour créer des sites web dynamiques. Java offre un support pour les applications web à travers les Servlets et les JSPs. Nous pouvons créer un site web avec des pages HTML statiques, mais lorsque nous voulons que les informations soient dynamiques, nous avons besoin d’une application web.

Application Web Java

L’objectif de cet article est de fournir des détails de base sur les différents composants de l’application web et comment nous pouvons utiliser Servlet et JSP pour créer notre première application web Java.

  1. Serveur et client Web
  2. HTML et HTTP
  3. Compréhension des URL
  4. Pourquoi avons-nous besoin de Servlet et de JSPs?
  5. Première application web avec Servlet et JSP
  6. Conteneur Web
  7. Structure de répertoire de l’application web
  8. Descripteur de déploiement

Serveur et client Web

Un serveur web est un logiciel qui peut traiter la demande du client et renvoyer la réponse au client. Par exemple, Apache est l’un des serveurs web les plus utilisés. Le serveur web s’exécute sur une machine physique et écoute les demandes des clients sur un port spécifique. Un client web est un logiciel qui aide à communiquer avec le serveur. Certains des clients web les plus utilisés sont Firefox, Google Chrome, Safari, etc. Lorsque nous demandons quelque chose au serveur (via une URL), le client web se charge de créer une demande, de l’envoyer au serveur, puis d’analyser la réponse du serveur et de la présenter à l’utilisateur.

HTML et HTTP

Le serveur web et le client web sont deux logiciels distincts, il doit donc exister un langage commun pour la communication. HTML est le langage commun entre le serveur et le client et signifie HyperTexte Markup Language. Le serveur web et le client web ont besoin d’un protocole de communication commun, HTTP (HyperTexte Transfer Protocol) est le protocole de communication entre le serveur et le client. HTTP fonctionne sur le protocole de communication TCP/IP. Certaines parties importantes de la demande HTTP sont :

  • Méthode HTTP – action à effectuer, généralement GET, POST, PUT, etc.
  • URL – Page à accéder
  • Paramètres de formulaire – similaires aux arguments dans une méthode Java, par exemple les détails d’utilisateur et de mot de passe d’une page de connexion.

Requête HTTP d’exemple:

GET /FirstServletProject/jsps/hello.jsp HTTP/1.1
Host: localhost:8080
Cache-Control: no-cache

Certaines des parties importantes de la réponse HTTP sont:

  • Code d’état – un entier pour indiquer si la requête a réussi ou non. Certains des codes d’état bien connus sont 200 pour succès, 404 pour Non trouvé et 403 pour Accès interdit.
  • Type de contenu – texte, html, image, pdf etc. Aussi connu sous le nom de type MIME
  • Contenu – données réelles qui sont rendues par le client et affichées à l’utilisateur.

Réponse HTTP d’exemple:

200 OK
Date: Wed, 07 Aug 2013 19:55:50 GMT
Server: Apache-Coyote/1.1
Content-Length: 309
Content-Type: text/html;charset=US-ASCII

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Hello</title>
</head>
<body>
<h2>Hi There!</h2>
<br>
<h3>Date=Wed Aug 07 12:57:55 PDT 2013
</h3>
</body>
</html>

Type MIME ou type de contenu: Si vous voyez l’en-tête de réponse HTTP d’exemple ci-dessus, il contient la balise « Content-Type ». Il est également appelé type MIME et le serveur l’envoie au client pour lui permettre de savoir le type de données qu’il envoie. Cela aide le client à rendre les données pour l’utilisateur. Certains des types MIME les plus utilisés sont text/html, text/xml, application/xml etc.

Comprendre l’URL

URL est l’acronyme de Localisateur de Ressource Universel et il est utilisé pour localiser le serveur et la ressource. Chaque ressource sur le web a son adresse unique. Examinons des parties de l’URL avec un exemple. https://localhost:8080/FirstServletProject/jsps/hello.jsp https:// – C’est la première partie de l’URL et fournit le protocole de communication à utiliser dans la communication entre le serveur et le client. localhost – L’adresse unique du serveur, la plupart du temps c’est le nom d’hôte du serveur qui est associé à une adresse IP unique. Parfois, plusieurs noms d’hôte pointent vers les mêmes adresses IP et le serveur virtuel web se charge d’envoyer une requête à l’instance de serveur particulière. 8080 – C’est le port sur lequel le serveur écoute, il est facultatif et si nous ne le fournissons pas dans l’URL, la requête va sur le port par défaut du protocole. Les numéros de port de 0 à 1023 sont des ports réservés pour des services bien connus, par exemple, 80 pour HTTP, 443 pour HTTPS, 21 pour FTP, etc. FirstServletProject/jsps/hello.jsp – Ressource demandée au serveur. Il peut s’agir d’html statique, de pdf, de JSP, de servlets, de PHP, etc.

Pourquoi avons-nous besoin de Servlet et JSP?

Les serveurs Web sont bons pour les pages HTML de contenu statique, mais ils ne savent pas comment générer de contenu dynamique ou comment sauvegarder des données dans des bases de données, donc nous avons besoin d’un autre outil que nous pouvons utiliser pour générer du contenu dynamique. Il existe plusieurs langages de programmation pour du contenu dynamique comme PHP, Python, Ruby on Rails, les servlets Java et les JSP. Les servlets Java et les JSP sont des technologies côté serveur pour étendre les capacités des serveurs Web en fournissant un support pour les réponses dynamiques et la persistance des données.

Développement Web Java

Première application Web avec Servlet et JSP

Nous utiliserons « Eclipse IDE for Java EE Developers » pour créer notre première application servlet. Comme le servlet est une technologie côté serveur, nous aurons besoin d’un conteneur web qui prend en charge la technologie Servlet, nous utiliserons donc le serveur Apache Tomcat. C’est très facile à configurer et je laisse cette partie à vous-même. Pour faciliter le développement, nous pouvons configurer Tomcat avec Eclipse, cela aide au déploiement facile et à l’exécution des applications. Allez dans les préférences d’Eclipse et sélectionnez les environnements d’exécution du serveur, puis sélectionnez la version de votre serveur Tomcat, la mienne est Tomcat 7. Fournissez l’emplacement du répertoire Apache Tomcat et les informations JRE pour ajouter l’environnement d’exécution. Maintenant, allez dans la vue des serveurs et créez un nouveau serveur comme indiqué dans l’image ci-dessous, en pointant vers l’environnement d’exécution ajouté précédemment. Remarque: Si l’onglet Serveurs n’est pas visible, vous pouvez sélectionner Fenêtre > Afficher la vue > Serveurs pour qu’il soit visible dans la fenêtre Eclipse. Essayez d’arrêter et de redémarrer le serveur pour vous assurer qu’il fonctionne correctement. Si vous avez déjà démarré le serveur depuis le terminal, vous devrez l’arrêter depuis le terminal puis le démarrer depuis Eclipse sinon cela ne fonctionnera pas parfaitement. Maintenant, nous sommes prêts avec notre configuration pour créer le premier servlet et l’exécuter sur le serveur Tomcat. Sélectionnez Fichier > Nouveau > Projet Web Dynamique et utilisez l’image ci-dessous pour fournir l’environnement d’exécution comme le serveur que nous avons ajouté à la dernière étape et la version du module comme 3.0 pour créer notre servlet en utilisant les spécifications Servlet 3.0. Vous pouvez directement cliquer sur le bouton Terminer pour créer le projet ou vous pouvez cliquer sur les boutons Suivant pour vérifier d’autres options. Maintenant, sélectionnez Fichier > Nouveau > Servlet et utilisez l’image ci-dessous pour créer notre premier servlet. Encore une fois, nous pouvons cliquer sur Terminer ou nous pouvons vérifier d’autres options via le bouton Suivant. Lorsque nous cliquons sur le bouton Terminer, il génère le squelette de notre servlet, donc nous n’avons pas besoin de taper tous les différents méthodes et imports dans le servlet et cela nous fait gagner du temps. Maintenant, nous allons ajouter un peu de code HTML avec des données dynamiques dans la méthode doGet() qui sera invoquée pour la requête HTTP GET. Notre premier servlet ressemble à ceci.

package com.journaldev.first;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class FirstServlet
 */
@WebServlet(description = "My First Servlet", urlPatterns = { "/FirstServlet" , "/FirstServlet.do"}, initParams = {@WebInitParam(name="id",value="1"),@WebInitParam(name="name",value="pankaj")})
public class FirstServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	public static final String HTML_START="";
	public static final String HTML_END="";
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public FirstServlet() {
        super();
        // TODO Constructeur généré automatiquement
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		PrintWriter out = response.getWriter();
		Date date = new Date();
		out.println(HTML_START + "

Hi There!


Date="+date +"

"+HTML_END); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Méthode générée automatiquement } }

Avant Servlet 3, nous devons fournir les informations sur le modèle d’URL dans le descripteur de déploiement de l’application Web, mais Servlet 3.0 utilise les annotations Java qui sont faciles à comprendre et les risques d’erreurs sont moindres. Maintenant, choisissez l’option Exécuter > Exécuter sur le serveur à partir de la fenêtre de l’éditeur Servlet et utilisez les images ci-dessous pour les options. Après avoir cliqué sur Terminer, le navigateur s’ouvrira dans Eclipse et nous obtiendrons la page HTML suivante. Vous pouvez la rafraîchir pour vérifier que la date est dynamique et change constamment. Vous pouvez également l’ouvrir en dehors d’Eclipse dans n’importe quel autre navigateur. Donc, le servlet est utilisé pour générer du HTML et l’envoyer en réponse. Si vous regardez l’implémentation de doGet(), nous créons en réalité un document HTML que nous écrivons dans l’objet PrintWriter de réponse, et nous ajoutons des informations dynamiques là où nous en avons besoin. C’est bien pour commencer, mais si la réponse est énorme avec beaucoup de données dynamiques, c’est sujet aux erreurs et difficile à lire et à maintenir. C’est la principale raison de l’introduction des JSP. Les JSP sont également une technologie côté serveur et ressemblent à de l’HTML avec des fonctionnalités supplémentaires pour ajouter du contenu dynamique là où nous en avons besoin. Les JSP sont adaptées à la présentation car elles sont faciles à écrire grâce à leur ressemblance avec l’HTML. Voici notre premier programme JSP qui fait la même chose que le servlet ci-dessus.

<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=US-ASCII"
    pageEncoding="US-ASCII"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Hello</title>
</head>
<body>
<h2>Hi There!</h2>
<br>
<h3>Date=<%= new Date() %>
</h3>
</body>
</html>

Si nous exécutons le JSP ci-dessus, nous obtenons une sortie comme sur l’image ci-dessous. La hiérarchie finale du projet ressemble à l’image ci-dessous dans Eclipse.

Télécharger le projet FirstServlet

Télécharger le projet d’exemple Servlet Hello World

Nous examinerons les Servlets et JSPs plus en détail dans les prochains articles, mais avant de conclure cet article, nous devrions avoir une bonne compréhension de certains aspects des applications Web Java.

Conteneur Web

Tomcat est un conteneur web, lorsque une requête est faite du client vers le serveur web, elle passe la requête au conteneur web et c’est le travail du conteneur web de trouver la ressource correcte pour gérer la requête (servlet ou JSP) et ensuite d’utiliser la réponse de la ressource pour générer la réponse et la fournir au serveur web. Ensuite, le serveur web envoie la réponse de retour au client. Lorsque le conteneur web reçoit la requête et si c’est pour une servlet, alors le conteneur crée deux objets HTTPServletRequest et HTTPServletResponse. Ensuite, il trouve la servlet correcte en fonction de l’URL et crée un thread pour la requête. Ensuite, il invoque la méthode de service de la servlet et en fonction de la méthode HTTP, la méthode de service invoque les méthodes doGet() ou doPost(). Les méthodes de servlet génèrent la page dynamique et l’écrivent dans la réponse. Une fois que le thread de la servlet est terminé, le conteneur convertit la réponse en réponse HTTP et l’envoie de retour au client. Certains des travaux importants effectués par le conteneur web sont :

  • Support de communication – Le conteneur fournit un moyen facile de communication entre le serveur web et les servlets et JSP. Grâce au conteneur, nous n’avons pas besoin de construire un socket serveur pour écouter toute demande du serveur web, analyser la demande et générer une réponse. Toutes ces tâches importantes et complexes sont effectuées par le conteneur et tout ce dont nous avons besoin de nous concentrer est sur notre logique métier pour nos applications.
  • Gestion du cycle de vie et des ressources – Le conteneur se charge de gérer le cycle de vie de la servlet. Le conteneur se charge de charger les servlets en mémoire, d’initialiser les servlets, d’invoquer les méthodes de servlet et de les détruire. Le conteneur fournit également des utilitaires comme JNDI pour le regroupement et la gestion des ressources.
  • Support de multithreading – Le conteneur crée un nouveau thread pour chaque requête au servlet et lorsque celle-ci est traitée, le thread se termine. Ainsi, les servlets ne sont pas initialisés pour chaque requête et économisent du temps et de la mémoire.
  • Support JSP – Les JSP ne ressemblent pas aux classes Java normales et le conteneur web fournit un support pour les JSP. Chaque JSP dans l’application est compilée par le conteneur, convertie en Servlet, puis le conteneur les gère comme les autres servlets.
  • Tâche diverses – Le conteneur web gère le pool de ressources, effectue des optimisations de mémoire, exécute le ramasse-miettes, fournit des configurations de sécurité, prend en charge plusieurs applications, le déploiement à chaud et plusieurs autres tâches en arrière-plan qui rendent notre vie plus facile.

Structure de répertoire de l’application Web

Les applications Web Java sont empaquetées sous forme d’archive Web (WAR) et ont une structure définie. Vous pouvez exporter le projet web dynamique ci-dessus sous forme de fichier WAR et le décompresser pour vérifier la hiérarchie. Cela ressemblera quelque chose à l’image ci-dessous.

Descripteur de déploiement

Le fichier web.xml est le descripteur de déploiement de l’application web et contient une correspondance pour les servlets (avant la version 3.0), les pages de bienvenue, les configurations de sécurité, les paramètres de temps d’expiration de session, etc. C’est tout pour le tutoriel de démarrage de l’application web Java, nous explorerons les Servlets et les JSPs davantage dans les prochains articles. Mise à jour: Le prochain tutoriel de cette série est Tutoriel sur les Servlets Java

Source:
https://www.digitalocean.com/community/tutorials/java-web-application-tutorial-for-beginners