JavaRush /Blog Java /Random-FR /Tomcat en Java

Tomcat en Java

Publié dans le groupe Random-FR
À un moment donné, chaque développeur acquiert suffisamment de compétences pour penser à créer son propre projet afin de mettre ses connaissances en pratique. Il est plus simple de se lancer dans un projet Web, car la mise en œuvre d'une application Web n'est limitée par aucune restriction, comme les applications de bureau. Le client n'a besoin que d'un navigateur et peut interagir avec l'application sans télécharger de distribution. Sans inscription ni SMS, comme on dit (même si cela dépend de l'application elle-même). Tomcat en Java - 1Ainsi, pour implémenter une bonne application Web en Java, vous ne pouvez pas vous passer d'un outil appelé Tomcat. Contenu:

Tomcat connaît Javarush

Tomcat est étudié au niveau 9 de la quête Java Collections dans le cours JavaRush. En 2 conférences, Bilaabo vous expliquera comment télécharger et configurer Tomcat , ainsi que créer votre première application Web .

Tomcat - qu'est-ce que c'est ?

Tomcat est un conteneur de servlets open source qui fait également office de serveur Web. À première vue, Tomcat semble être un sujet plutôt lourd, mais ce n'est pas le cas. La plupart des applications Java sont lancées à l'aide de la ligne de commande et effectuent certaines actions. De telles applications implémentent une fonction prédéfinie, après quoi elles ne sont plus exécutées. Ces programmes disposent généralement d’une méthode mainpermettant de les lancer. L'application Web est conçue pour interagir avec le client. S'il y a une demande du client, elle est traitée et une réponse est envoyée à l'utilisateur. Sinon, l'application est inactive. Comment implémenter une telle logique dans une application standard, étant donné que vous devez prendre en charge les sessions, accepter les requêtes HTTP, etc. ? Faire du vélo while-true? Non, nous avons besoin d’une solution fiable ici. C'est à cela que sert Tomcat. En fait, il s'agit d'une application Java qui s'occupe de l'ouverture du port pour l'interaction client, de la configuration des sessions, du nombre de requêtes, de la longueur de l'en-tête et bien d'autres opérations.

Composants Tomcat

Tomcat possède des composants qui exécutent des fonctions spécifiques qui méritent d'être connues. Regardons de plus près.

Catalina

Grâce à ce composant, les développeurs ont la possibilité de déployer leurs programmes dans un conteneur. Catalina implémente la spécification Servlet API, la technologie Web de base de la programmation Web Java. En fait, Catalina est un conteneur de servlets dans Tomcat (nous examinerons ce concept plus en détail ci-dessous).

Jaspe

Grâce à ce composant, le programmeur utilise la technologie JSP. Ceux-ci sont comme des fichiers HTML, sauf qu'ils contiennent du code Java intégré qui peut être exécuté lorsque la page est envoyée à l'utilisateur. Cela vous permet d'intégrer dynamiquement n'importe quelle donnée dans la page. Jasper transforme le code Java en HTML, suit également les modifications et les met automatiquement à jour.

Coyote

Il s'agit d'un composant important qui écoute les requêtes HTTP d'un client sur un port spécifique, fournit ces données à traiter dans l'application et renvoie également des réponses aux utilisateurs. Autrement dit, Coyote implémente la fonctionnalité d'un serveur HTTP. Ces composants peuvent être décrits structurellement par le diagramme suivant : Tomcat en Java - 2Ici, un diagramme approximatif de l'interaction des composants est représenté « sur les doigts ». En fait, le fonctionnement de Tomcat est beaucoup plus complexe, mais cela suffit pour une compréhension de base.

Installation de Tomcat

Pour utiliser Tomcat en Java, il doit être installé sur le système. Vous pouvez découvrir comment installer Tomcat dans cet article, qui couvre également d'autres serveurs d'applications. Ainsi, ayant un Tomcat fonctionnel intégré à IDEA, vous pouvez essayer de préparer votre premier servlet.

Comment créer une application Web

Pour créer une application Web, vous devez respecter une structure de dossiers spécifique. IntelliJ IDEA dispose d'une fonction de génération d'application web dans le menu de création de projet. Après avoir créé le projet de cette manière, vous pouvez voir une structure simple : Tomcat en Java-3dans src, comme toujours, il y a des sources, et dans le dossier Web web.xml et index.jsp sont générés. web.xml est une instruction pour Tomcat où rechercher les gestionnaires de requêtes et d'autres informations. index.jsp est la page principale de l'application Web, où l'utilisateur doit se rendre en premier (c'est la configuration par défaut). Dans un premier temps, vous pouvez simplement éditer le fichier index.jsp :
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
 <head>
   <title>$Title$</title>
 </head>
 <body>
   <h1>Hello world!</h1>
 </body>
</html>
Si Tomcat est installé directement dans IDEA, vous pouvez démarrer le serveur d'applications : Tomcat en Java-4Le client reçoit le contenu du fichier index.jsp dans le navigateur lorsqu'il navigue vers '/', c'est-à-dire vers la page principale. Ajoutons maintenant un lien vers la page où se trouvera l’heure actuelle du serveur. Pour créer votre premier servlet, vous devez utiliser la bibliothèque servlet-api.jar fournie avec Tomcat (se trouve dans le dossier lib). Créons un servlet qui affichera l'heure actuelle du serveur sur la page. Pour ce faire, vous devez créer une classe TimeWorker. Plaçons-le dans le dossier src/ru/javarush/tomcat :
package ru.javarush.tomcat;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Date;

public class TimeWorker extends HttpServlet {
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
     Date date = new Date();
     req.setAttribute("date", date.toString());
     req.getRequestDispatcher("time.jsp").forward(req, resp);
  }
}
TimeWorkerhérite de la classe HttpServletet remplace le doGet. Dans cette méthode, nous recevons deux paramètres - requestet response. À titre d'exemple, requestun attribut avec un nom dataet contenant une représentation sous forme de chaîne de la date actuelle est stocké. Ensuite, il est appelé et les paramètres requestDispatcherlui sont requesttransmis response. Le gestionnaire a été créé. Vous devez maintenant lui envoyer des demandes spécifiquement. Laissez n'importe quelle transition /timemener à la page time.jsp. Ouvrez web.xml, <web-app>insérez la configuration suivante entre les balises :
<servlet>
   <servlet-name>timeWorker</servlet-name>
   <servlet-class>ru.javarush.tomcat.TimeWorker</servlet-class>
   </servlet>

<servlet-mapping>
   <servlet-name>timeWorker</servlet-name>
   <url-pattern>/time</url-pattern>
</servlet-mapping>

<welcome-file-list>
   <welcome-file>index.jsp</welcome-file>
</welcome-file-list>
La première balise - servlet- définit le nom du servlet et spécifie le chemin d'accès à la classe de servlet qui traitera les requêtes. La deuxième balise - servlet-mapping- indique que la servlet portant le nom timeWorkersera appelée lors d'une demande de URL/heure. La troisième balise - welcome-file-list- indique le fichier qui sera appelé lors du passage à url /. Ceci doit être configuré s'il est nécessaire de modifier le fichier par défaut. Inclus ici à titre d’exemple. Désormais, lorsque vous y accéderez, la méthode de la classe /timesera appelée et renverra la page time.jsp... qui n'existe pas. Créons-le à côté de index.jsp : doGet TimeWorker
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
   <title>Hello</title>
</head>
<body>
   <h1>Current server time: <%=request.getAttribute("date")%></h1>
</body>
</html>
Le début est classique, mais la balise h1contient un appel à l'objet request, qui est encadré par <%=et %>. Ce sont des balises de modèle. Le code inclus dans ces balises est appelé avant d'être envoyé au client. Eh bien, les objets requestsont responsedisponibles dans de telles balises dans n'importe quel fichier JSP. Dans cet exemple, l'heure actuelle du serveur, transmise par le servlet, y sera remplacée TimeWorker. Pour plus de commodité, nous créons un lien vers le fichier index.jsp /time:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
 <head>
   <title>$Title$</title>
 </head>
 <body>
   <h1>Hello world!</h1>
   <a href="/time">Узнать текущее время serverа</a>
 </body>
</html>
Reprenons l'exemple : Tomcat en Java-5Suivez le lien : Tomcat en Java-6Super, tout fonctionne. Dans l'exemple, nous avons implémenté une transition de la page principale vers la page auxiliaire, à laquelle un paramètre a été transmis et affiché à l'utilisateur. Si vous rencontrez des problèmes pour exécuter des servlets, je vous recommande de lire cet article , qui donne des conseils pour résoudre ce problème. Pour une introduction plus complète aux servlets, nous vous recommandons de lire les articles ( partie 1 , partie 2 ), où l'auteur décrit en détail la création d'une application simple utilisant des servlets et jsp.

Comment intégrer une application dans un serveur en cours d'exécution

Bien que Tomcat intégré à IDEA soit une fonctionnalité pratique, l'application Web peut être déplacée vers un autre serveur et vers un autre conteneur. Considérons l'option lorsque vous devez intégrer votre application dans un serveur déjà en cours d'exécution. Tout d'abord, il est nécessaire de mieux comprendre l'objectif et les fonctions d'un conteneur de servlet . Le programme présenté dans l'exemple ci-dessus est une application Web. La classe TimeWorkerest une servlet. Les composants effectuent exclusivement le traitement des requêtes. Ces composants doivent être intégrés dans un conteneur de servlet spécial. Le but d'un conteneur de servlets est de prendre en charge les servlets et d'assurer leur cycle de vie. L'exemple le plus simple du fonctionnement de Tomcat consiste à analyser un dossier spécifique pour déterminer si un nouveau servlet y est apparu. Si oui, initialisez-le et préparez-le à recevoir les demandes des clients. Si le servlet a été mis à jour, réinitialisez-le pour mettre à jour les composants. Lors de la suppression d'un servlet, arrêtez le traitement des requêtes et supprimez le servlet de Tomcat.

Fonctions du conteneur de servlets

  1. Échange de données entre la servlet et les clients ;
  2. Organisation de séances clients ;
  3. Création d'un environnement logiciel pour le fonctionnement d'une servlet ;
  4. Идентификация и авторизация клиентов;
  5. В большинстве случаев — управление метаданными (заголовки, методы и прочее).
Во-вторых, необходимо разобраться, How установить свой сервлет.

Установка сервлета

Tomcat принимает для обработки веб-applications на Java, которые имеют расширение .war. Это How jar, только web. Файлы такого типа объединяют в себе JSP-файлы, сервлеты, class-файлы, статические ресурсы и прочее. При установке такого file в Tomcat происходит его распаковка, а затем запуск, поэтому существует строгое требование к структуре файлов в проекте. Если проект был создан в IDEA, вся структура создана автоматически. Файл war можно создать стандартными средствами IDEA. Для этого необходимо зайти в ProjectStructure -> Artifacts -> Нажать “ +” -> WebApplication: Archive. В открывшемся поле задать Name для итогового war-file, например deployed_war. Ниже необходимо нажать на кнопку Create Manifest… Далее необходимо указать way to папке web проекта. В ней будет создана папка META-INF, в которую будет помещен файл MANIFEST.MF. Далее следует нажать Apply и Ok. Whatбы собрать проект в war-файл, следует во вкладке Build выбрать опцию Build Artifact: Tomcat en Java-7В появившемся поле нужно нажать на deployed_war. Затем начнется сборка проекта и Intellij IDEA создаст папку out, в которой появится папка artifacts с именем нашего артефакта. В этой папке будет лежать файл deployed_war.war: Tomcat en Java-8Теперь можно деплоить этот файл в Tomcat. Деплой applications проще всего выполнить из веб-интерфейса Tomcat. Просто нажмите кнопку выбора file на вкладке Deploy, перейдите к местоположению file WAR и выберите его, затем нажмите кнопку развертывания. В обоих случаях, если все пойдет хорошо, консоль Tomcat сообщит нам, что развертывание прошло успешно примерно таким выводом в консоль: INFO: Deployment of web application archive \path\to\deployed_war has finished in 4,833 ms

Польза Tomcat для разработки

Для разработчиков контейнеры сервлетов имеют огромную роль, так How решают целый спектр проблем. Для программирования на Java Tomcat обеспечивает несколько серьезных преимуществ:
  1. Самое главное, Tomcat может выполнять роль полноценного web-serverа. Благодаря этому развертывание приложений происходит гораздо быстрее, чем было раньше.Также Tomcat может выступать в роли классического контейнера сервлетов, который можно встроить в более крупный веб-server.

  2. Tomcat способствует обмену данными между клиентом и сервлетом, обеспечивает программный контекст для веб-приложений, берет на себя функции идентификации и авторизации клиентов, создание сессий для каждого из них.

  3. Fournit une gestion très pratique des pages JSP. En fait, le serveur Web ne peut servir que du HTML. Jasper, un composant Tomcat, compile le code contenu dans les balises de modèle de page JSP dans un fichier HTML valide reçu par le client. Toute la logique de création de modèles réside dans Tomcat, vous permettant d'ajouter des constructeurs même complexes à un formulaire HTML classique.

Et enfin : très souvent, les développeurs novices se posent la question : est-il possible d'exécuter une application Java sans mainméthode -. À première vue, si vous regardez les exemples ci-dessus, c’est possible. Notre servlet a été exécutée sans le main. Cependant, ce n’est pas le cas. Tomcat possède sa propre méthode mainappelée au démarrage du serveur. Vous pouvez vous faire prendre à poser cette question lors d’un entretien.

Liens supplémentaires :

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION