Java Servlet est un programme qui génère des pages WEB dynamiques dans des applications WEB implémentées en Java. L'application WEB est un système serveur / client et, comme le montre la figure ci-dessous, le client envoie une demande au serveur et le serveur renvoie une réponse au client pour qu'il fonctionne.
Java Servlet ne fonctionne pas seul, mais avec un logiciel appelé conteneur Servlet. Jetty correspond à ce conteneur de servlet. Jetty est léger et facile à installer. Lorsque vous envoyez une demande de votre navigateur Web à votre serveur Web, Jetty reçoit cette demande. Le servlet génère une page WEB dynamique en fonction du type de requête, et Jetty envoie cette page WEB dynamique au navigateur WEB en tant que réponse. Le navigateur WEB affiche cette page WEB dynamique.
JRE (Java Runtime Environment) est requis pour exécuter Java Servlet, Eclipse et Jetty. Ici, téléchargez OpenJDK pour obtenir le JRE. Si vous n'avez pas installé JRE, vous obtiendrez une erreur lors du démarrage d'Eclipse, vous devez donc le faire avant d'installer Eclipse.
Allez sur le site Web officiel d'OpenJDK ci-dessous et cliquez sur le lien jdk.java.net / 14
dans la section Télécharger. (Le lien pour jdk.java.net / 14
change à chaque fois que l'OpenJDK est mis à jour.)
https://openjdk.java.net/
Cliquez sur Java SE 11 dans la liste des liens sur la gauche. (Si vous souhaitez télécharger la dernière version d'OpenJDK, vous pouvez télécharger OpenJDK à partir de ce site.) https://jdk.java.net/14/
Cliquez sur Kit de développement Java Windows / x64. https://jdk.java.net/java-se-ri/11
"openjdk-11 + 28_windows-x64_bin.zip" sera téléchargé.
Une fois le téléchargement terminé, décompressez-le dans n'importe quel dossier et ajoutez le chemin absolu de «jdk-11 \ bin» aux variables d'environnement système. (Ici, je l'ai décompressé dans C: \ openjdk et ajouté "C: \ openjdk \ jdk-11 \ bin" aux variables d'environnement système.)
Démarrez l'invite de commande et vérifiez la version Java. (Si c'est openjdk 11, c'est OK.)
>java --version
openjdk 11 2018-09-25
OpenJDK Runtime Environment 18.9 (build 11+28)
OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)
Une fois l'installation d'OpneJDK terminée, installez Eclipse.
Accédez au site de téléchargement du programme d'installation du package Eclipse et cliquez sur "Windows 64 bits" dans "Eclipse IDE for Java Developers". https://www.eclipse.org/downloads/packages/
Lorsque vous êtes sur la page de téléchargement, cliquez sur le bouton Télécharger.
eclipse-java-2020-06-R-win32-x86_64.zip sera téléchargé.
Une fois le téléchargement terminé, décompressez-le dans n'importe quel dossier et double-cliquez sur "eclipse.exe". (Vous devrez entrer le chemin du dossier de l'espace de travail au démarrage, mais laissez les paramètres par défaut.)
Obtenez Jetty sur le site suivant.
Sur le site suivant, cliquez sur ".zip" de "Eclipse Jetty Downloads". ⇒ jetty-distribution-9.4.31.v20200723.zip sera téléchargé. https://www.eclipse.org/jetty/download.html
Une fois le téléchargement terminé, décompressez-le dans n'importe quel dossier.
Initialisez Eclipse avant de créer un projet. Si vous le définissez une fois au début, vous n'avez pas besoin de le définir la prochaine fois.
Exécutez le menu principal "Fenêtre"> "Préférences" pour ouvrir la boîte de dialogue "Préférences".
Sélectionnez Java> JRE installés dans l'arborescence de gauche et assurez-vous que le chemin OpenJDK 11 est défini.
Définissez le code de caractère. Ici, nous allons le changer pour Linux en supposant qu'il fonctionnera également sous Linux. Sélectionnez "Général"> "Espace de travail" dans l'arborescence de gauche, cochez "Autre" dans "Encodage de fichier texte" et sélectionnez "UTF-8". Vérifiez également «Autre» dans «Nouveau séparateur de ligne de fichier texte», sélectionnez «Unix» et appuyez sur le bouton «Appliquer».
Modifiez la police pour éviter les caractères déformés. Sélectionnez "Général"> "Apparence"> "Couleurs et polices" dans l'arborescence de gauche, sélectionnez "Java Editor Text-Font", et appuyez sur le bouton "Modifier" pour lancer la boîte de dialogue "Polices". Changez la police dans la boîte de dialogue "Police" et appuyez sur le bouton "Appliquer". (Ici, j'ai changé pour MS Gothic. Selon la police que vous sélectionnez, les caractères peuvent être déformés, alors sélectionnez une police qui ne le déforme pas.)
Appuyez sur le bouton Appliquer et fermer.
Commencez par créer un projet.
Cliquez sur Fichier> Nouveau> Projet Java dans le menu principal pour lancer la boîte de dialogue Nouveau projet Java.
Saisissez le nom du projet dans le champ "Nom du projet" et appuyez sur le bouton "Terminer". (Ici, le nom du projet est "sample" et les autres paramètres sont conservés par défaut.)
Lorsque la boîte de dialogue "Nouveau module-info.java" démarre, cliquez sur le bouton "Ne pas créer".
Confirmez que l'exemple d'arborescence de projet a été généré sur "Package Explorer".
Jetty peut soit configurer le serveur en XML et utiliser "start.jar" pour démarrer le serveur, soit importer la bibliothèque et implémenter la configuration du serveur en Java. Dans ce cas, nous allons l'implémenter de la dernière manière, donc ajoutez la bibliothèque au projet.
Sélectionnez le nœud supérieur de l'arborescence dans l'Explorateur de packages, cliquez avec le bouton droit de la souris et cliquez sur le menu contextuel Propriétés pour ouvrir la boîte de dialogue Propriétés.
Sélectionnez "Java Build Path" dans l'arborescence de gauche, ouvrez l'onglet "Libraries", sélectionnez le nœud "Class path", appuyez sur le bouton "Add External JARs", sélectionnez la bibliothèque Jetty ci-dessous et sélectionnez " Appuyez sur le bouton "Terminer".
[Bibliothèque supplémentaire] ・ Jetty-http-9.4.31.v20200723.jar ・ Jetty-io-9.4.31.v20200723.jar ・ Jetty-security-9.4.31.v20200723.jar ・ Jetty-server-9.4.31.v20200723.jar ・ Jetty-servlet-9.4.31.v20200723.jar ・ Jetty-util-9.4.31.v20200723.jar ・ Jetty-webapp-9.4.31.v20200723.jar ・ Servelet-api-3.1.jar ~~~
Ensuite, créez la classe principale (la classe qui contient la méthode principale). Implémentez les paramètres du serveur WEB dans la classe principale.
Sélectionnez le nœud supérieur de l'arborescence dans "Package Explorer", cliquez avec le bouton droit de la souris et cliquez sur le menu contextuel "Nouveau"> "Classe" pour lancer la boîte de dialogue "Nouvelle classe Java".
Entrez le nom de la classe dans le champ "Nom", cochez "public static void main (String [] args)" et cliquez sur le bouton "Terminer". (Ici, entrez "SampleMain" dans le champ "Nom".)
Un nœud "sample"> "src"> "sample"> "SampleMain.java" est ajouté à l'arborescence de "Package Explorer".
Le code source de SampleMain.java est généré comme suit.
package sample;
public class SampleMain {
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
Ajoutez le processus d'importation suivant à SampleMain.java.
package sample;
// ↓ Ajouter d'ici import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.handler.HandlerList; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; // ↑ Ajouter ici
public class SampleMain {
~~~
Ajoutez l'implémentation suivante à main () dans SampleMain.java. Ici, ajoutez "/" à l'URI afin que le chemin du fichier HTML placé sur le projet soit l'URI. Configurez également le serveur WEB pour qu'il commence à utiliser le port 8080.
public static void main (String [] args) lève une exception {// Ajout lance une exception // TODO Stub de méthode généré automatiquement // Commenter // ↓ Ajouter d'ici // Ajouter "/" à l'URI (ajouter au gestionnaire) ServletHolder holder = new ServletHolder(new SampleServlet()); ServletContextHandler handler = new ServletContextHandler(); handler.addServlet(holder, "/");
// Définit le gestionnaire dans la liste des gestionnaires HandlerList handlerList = new HandlerList(); handlerList.setHandlers(new Handler[] {handler});
// Créer un serveur Serveur serveur = nouveau serveur (8080); // Instanciation du serveur utilisant le port 8080 server.setHandler (handlerList); // Définir la liste des gestionnaires sur l'instance de serveur server.start (); // Démarre le serveur // ↑ Ajouter ici } ~~~
Créez un servlet. Après avoir créé la classe, utilisez les méthodes de génération automatique d'Eclipse pour ajouter doGet () et doPost (). doGet () fonctionne lorsqu'il reçoit une méthode GET. La méthode GET fonctionne lorsque le serveur WEB est accessible à partir du navigateur WEB du client. De plus, doPost () fonctionne lorsqu'il reçoit une méthode POST. La méthode POST fonctionne lorsque les données sont envoyées depuis le formulaire du navigateur Web du client vers le serveur Web.
Sélectionnez le nœud supérieur de l'arborescence dans l'Explorateur de packages, cliquez avec le bouton droit de la souris et cliquez sur Nouveau> Classe dans le menu contextuel.
Entrez le nom de la classe dans le champ "Nom" et "javax.servlet.http.HttpServlet" dans le champ "Superclasse" et appuyez sur le bouton "Terminer". (Ici, entrez "SampleServlet" dans le champ "Nom".)
Un nœud "sample"> "src"> "sample"> "SampleServlet.java" est ajouté à l'arborescence sur "Package Explorer".
Sélectionnez le nœud d'arborescence "SampleServlet.java" dans "Package Explorer" et cliquez sur le menu principal "Source"> "Override / Inplement Methods" pour ouvrir la boîte de dialogue "Override / Inplement Methods".
Cochez "HttpServlet", "doGet" et "doPost" et cliquez sur le bouton "OK" pour générer la méthode doGet et la méthode doPost.
package sample;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SampleServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
super.doGet(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
super.doPost(req, resp);
}
}
Ajoutez le processus d'importation suivant à SampleServlet.java.
package sample;
import java.io.IOException;
import java.io.BufferedReader; // Ajouter import java.io.OutputStream; // Ajouter import java.io.FileReader; // Ajouter
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@SuppressWarnings ("serial") // Ajouté public class SampleServlet extends HttpServlet { ~~~
Remplacez doGet () dans SampleServlet.java par l'implémentation suivante. Lorsque le serveur WEB est accédé à partir du navigateur WEB, le fichier HTML de la page WEB est lu et défini dans le corps de la réponse afin qu'il réponde.
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
//super.doGet (req, resp); // Commenter
// ↓ Ajouter d'ici // Codage des caractères (mesure contre les caractères japonais déformés) req.setCharacterEncoding("UTF-8"); resp.setContentType("text/html; charset=UTF-8");
String page = "";
String line;
// Lire le fichier HTML @SuppressWarnings("resource") BufferedReader buf = new BufferedReader(new FileReader("." + req.getRequestURI().toString())); while((line = buf.readLine()) != null){ page += line; }
// Créer le corps de la réponse OutputStream msgbody = resp.getOutputStream(); msgbody.write(page.getBytes()); msgbody.close(); // ↑ Ajouter ici } ~~~
Remplacez doPost () dans SampleServlet.java par l'implémentation suivante. Lorsque les données sont envoyées du formulaire du navigateur WEB au serveur WEB, le paramètre de requête (données envoyées par le client) est acquis et défini dans le corps de la réponse pour répondre.
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
//super.doPost (req, resp); // Commenter
// ↓ Ajouter d'ici // Codage des caractères (mesure contre les caractères japonais déformés) req.setCharacterEncoding("UTF-8"); resp.setContentType("text/html; charset=UTF-8");
String result = "Le message suivant a été écrit
\ n";
// Récupère les paramètres de la requête if(req.getParameter("send").equalsIgnoreCase("write")){ result += req.getParameter("name"); }
// Créer le corps de la réponse OutputStream msgbody = resp.getOutputStream(); msgbody.write(result.getBytes()); msgbody.close(); // ↑ Ajouter ici } ~~~
Créez une page WEB à afficher sur le navigateur WEB du client. Vous pouvez incorporer des instructions HTML dans le code source du servlet, mais si vous créez un fichier, vous pouvez créer une autre page WEB simplement en remplaçant le fichier.
Sélectionnez le nœud supérieur de l'arborescence dans "Package Explorer", cliquez avec le bouton droit de la souris et cliquez sur le menu contextuel "Nouveau"> "Dossier" pour lancer la boîte de dialogue "Nouveau dossier".
Saisissez le nom du dossier (ici «contenu») dans le champ «Nom du folier» et appuyez sur le bouton «Terminer» pour ajouter le nœud d'arborescence «contenu».
Sélectionnez le nœud de l'arborescence "contenu", cliquez avec le bouton droit de la souris et cliquez sur le menu contextuel "Nouveau"> "Fichier" pour lancer la boîte de dialogue "Créer un nouveau fichier".
Entrez le nom du fichier (ici "index.html") dans le champ "Nom du Foler" et appuyez sur le bouton "Terminer" pour ajouter le nœud d'arborescence "index.html". La configuration de "Package Explorer" est la suivante.
Ouvrez le nœud d'arborescence "index.html" et ajoutez le code HTML suivant.
<html>
<head>
<title>sample</title>
</head>
<body>
Saisissez le texte ici p>