- Tomcat connaît Javarush
- Tomcat - qu'est-ce que c'est ?
- Composants Tomcat
- Installation de Tomcat
- Comment créer une application Web
- Comment intégrer une application dans un serveur en cours d'exécution
- Avantages de Tomcat pour le développement
- Liens supplémentaires
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éthodemain
permettant 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 : Ici, 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 : dans 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 : Le 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);
}
}
TimeWorker
hérite de la classe HttpServlet
et remplace le doGet
. Dans cette méthode, nous recevons deux paramètres - request
et response
. À titre d'exemple, request
un attribut avec un nom data
et contenant une représentation sous forme de chaîne de la date actuelle est stocké. Ensuite, il est appelé et les paramètres requestDispatcher
lui sont request
transmis response
. Le gestionnaire a été créé. Vous devez maintenant lui envoyer des demandes spécifiquement. Laissez n'importe quelle transition /time
mener à 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 timeWorker
sera appelée lors d'une demande dewelcome-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
/time
sera 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
h1
contient 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
request
sont
response
disponibles 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 :
Suivez le lien :
Super, 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 classeTimeWorker
est 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
- Échange de données entre la servlet et les clients ;
- Organisation de séances clients ;
- Création d'un environnement logiciel pour le fonctionnement d'une servlet ;
- Идентификация и авторизация клиентов;
- В большинстве случаев — управление метаданными (заголовки, методы и прочее).
Установка сервлета
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: В появившемся поле нужно нажать на deployed_war. Затем начнется сборка проекта и Intellij IDEA создаст папку out, в которой появится папка artifacts с именем нашего артефакта. В этой папке будет лежать файл deployed_war.war: Теперь можно деплоить этот файл в 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 обеспечивает несколько серьезных преимуществ:-
Самое главное, Tomcat может выполнять роль полноценного web-serverа. Благодаря этому развертывание приложений происходит гораздо быстрее, чем было раньше.Также Tomcat может выступать в роли классического контейнера сервлетов, который можно встроить в более крупный веб-server.
-
Tomcat способствует обмену данными между клиентом и сервлетом, обеспечивает программный контекст для веб-приложений, берет на себя функции идентификации и авторизации клиентов, создание сессий для каждого из них.
-
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.
main
mé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
main
appelée au démarrage du serveur. Vous pouvez vous faire prendre à poser cette question lors d’un entretien.
GO TO FULL VERSION