JavaRush /Java-Blog /Random-DE /Tomcat in Java

Tomcat in Java

Veröffentlicht in der Gruppe Random-DE
Irgendwann erlangt jeder Entwickler so viele Fähigkeiten, dass er darüber nachdenkt, ein eigenes Projekt zu erstellen, um sein Wissen in die Praxis umzusetzen. Am einfachsten ist es, ein Webprojekt zu übernehmen, da die Implementierung einer Webanwendung keinen Einschränkungen unterliegt, wie beispielsweise bei Desktop-Anwendungen. Der Client benötigt lediglich einen Browser und kann mit der Anwendung interagieren, ohne Distributionen herunterladen zu müssen. Ohne Registrierung und SMS, wie es heißt (obwohl dies von der Anwendung selbst abhängt). Tomcat in Java - 1Um eine gute Webanwendung in Java umzusetzen, kommt man also nicht ohne ein Tool namens Tomcat aus. Inhalt:

Tomcat kennt Javarush

Tomcat wird auf Stufe 9 der Java Collections-Quest im JavaRush-Kurs studiert. In zwei Vorträgen erklärt Ihnen Bilaabo, wie Sie Tomcat herunterladen und konfigurieren sowie Ihre erste Webanwendung erstellen .

Tomcat – was ist das?

Tomcat ist ein Open-Source-Servlet-Container, der auch als Webserver fungiert. Auf den ersten Blick scheint Tomcat ein ziemlich schweres Thema zu sein, aber das ist nicht der Fall. Die meisten Java-Anwendungen werden über die Befehlszeile gestartet und führen einige Aktionen aus. Solche Anwendungen implementieren eine vordefinierte Funktion und werden danach nicht mehr ausgeführt. Solche Programme verfügen normalerweise über eine Methode main, mit der sie gestartet werden können. Die Webanwendung ist für die Interaktion mit dem Client konzipiert. Liegt eine Anfrage des Clients vor, wird diese verarbeitet und eine Antwort an den Benutzer gesendet. Wenn nicht, ist die Anwendung inaktiv. Wie implementiert man eine solche Logik in einer Standardanwendung, wenn man Sitzungen unterstützt, HTTP-Anfragen akzeptiert usw.? Zyklus while-true? Nein, wir brauchen hier eine zuverlässige Lösung. Dafür ist Tomcat da. Tatsächlich handelt es sich um eine Java-Anwendung, die sich um das Öffnen des Ports für die Client-Interaktion, das Einrichten von Sitzungen, die Anzahl der Anfragen, die Header-Länge und viele weitere Vorgänge kümmert.

Tomcat-Komponenten

Tomcat verfügt über Komponenten, die bestimmte Funktionen ausführen, über die es sich zu informieren lohnt. Lass uns genauer hinschauen.

Catalina

Dank dieser Komponente haben Entwickler die Möglichkeit, ihre Programme in einem Container bereitzustellen. Catalina implementiert die Servlet-API-Spezifikation, die zentrale Webtechnologie in der Java-Webprogrammierung. Tatsächlich ist Catalina ein Servlet-Container innerhalb von Tomcat (wir werden uns dieses Konzept weiter unten genauer ansehen).

Jaspis

Dank dieser Komponente nutzt der Programmierer die JSP-Technologie. Diese ähneln HTML-Dateien, enthalten jedoch eingebetteten Java-Code, der ausgeführt werden kann, wenn die Seite an den Benutzer gesendet wird. Dadurch können Sie beliebige Daten dynamisch in die Seite einbetten. Jasper wandelt Java-Code in HTML um, verfolgt außerdem Änderungen und aktualisiert sie automatisch.

Kojote

Dies ist eine wichtige Komponente, die auf HTTP-Anfragen von einem Client an einem bestimmten Port lauscht, diese Daten zur Verarbeitung in der Anwendung bereitstellt und auch Antworten an Benutzer zurückgibt. Das heißt, Coyote implementiert die Funktionalität eines HTTP-Servers. Diese Komponenten lassen sich strukturell durch das folgende Diagramm beschreiben: Tomcat in Java - 2Hier ist ein ungefähres Diagramm des Zusammenspiels der Komponenten „an den Fingern“ dargestellt. Tatsächlich ist die Funktionsweise von Tomcat deutlich komplexer, für ein grundlegendes Verständnis reicht dies jedoch aus.

Tomcat installieren

Um Tomcat in Java verwenden zu können, muss es auf dem System installiert sein. Wie Sie Tomcat installieren, erfahren Sie in diesem Artikel, der auch andere Anwendungsserver behandelt. Wenn Sie also einen funktionierenden Tomcat in IDEA integriert haben, können Sie versuchen, Ihr erstes Servlet vorzubereiten.

So erstellen Sie eine Webanwendung

Um eine Webanwendung zu erstellen, müssen Sie eine bestimmte Ordnerstruktur einhalten. IntelliJ IDEA verfügt über eine Funktion zur Generierung von Webanwendungen im Projekterstellungsmenü. Nachdem Sie das Projekt auf diese Weise erstellt haben, sehen Sie eine einfache Struktur: Tomcat in Java - 3In src gibt es wie immer Quellen, und im Webordner werden web.xml und index.jsp generiert. web.xml ist eine Anweisung für Tomcat, wo nach Anforderungshandlern und anderen Informationen gesucht werden soll. index.jsp ist die Hauptseite der Webanwendung, zu der der Benutzer zuerst gehen sollte (dies ist die Standardkonfiguration). Als ersten Durchlauf können Sie einfach die Datei index.jsp bearbeiten:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
 <head>
   <title>$Title$</title>
 </head>
 <body>
   <h1>Hello world!</h1>
 </body>
</html>
Wenn Tomcat direkt in IDEA installiert ist, können Sie den Anwendungsserver starten: Tomcat in Java - 4Der Client erhält den Inhalt der Datei index.jsp im Browser, wenn er zu „/“, also zur Hauptseite, navigiert. Fügen wir nun einen Link zu der Seite hinzu, auf der die aktuelle Serverzeit angezeigt wird. Um Ihr erstes Servlet zu erstellen, müssen Sie die Bibliothek servlet-api.jar verwenden, die mit Tomcat geliefert wird (zu finden im Ordner lib). Erstellen wir ein Servlet, das die aktuelle Serverzeit auf der Seite anzeigt. Dazu müssen Sie eine Klasse erstellen TimeWorker. Platzieren wir es im Ordner 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);
  }
}
TimeWorkererbt von der Klasse HttpServletund überschreibt die doGet. Bei dieser Methode erhalten wir zwei Parameter – requestund response. Als Beispiel wird requestein Attribut mit einem Namen datagespeichert, das eine Zeichenfolgendarstellung des aktuellen Datums enthält. Dann wird es aufgerufen und requestDispatcherihm werden Parameter übergeben . Der Handler wurde erstellt. Jetzt müssen Sie Anfragen gezielt an ihn richten. Lassen Sie jeden Übergang zur Seite time.jsp führen. Öffnen Sie web.xml und fügen Sie die folgende Konfiguration zwischen den Tags ein: requestresponse/time<web-app>
<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>
Das erste Tag servletdefiniert den Namen des Servlets und gibt den Pfad zur Servlet-Klasse an, die Anforderungen verarbeitet. Das zweite Tag - servlet-mapping- gibt an, dass das Servlet mit dem Namen timeWorkeraufgerufen wird, wenn eine Anfrage gestellt wird URL/Zeit. Das dritte Tag - welcome-file-list- gibt die Datei an, die beim Wechsel zu aufgerufen wird url /. Dies muss konfiguriert werden, wenn die Standarddatei geändert werden muss. Hier als Beispiel enthalten. Wenn Sie nun zu gehen, /timewird die Methode doGetin der Klasse aufgerufen TimeWorkerund gibt die Seite time.jsp... zurück, die nicht existiert. Erstellen wir es neben index.jsp:
<%@ 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>
Der Anfang ist klassisch, aber das Tag h1enthält einen Appell an das Objekt request, der von <%=und umrahmt wird %>. Dies sind Vorlagen-Tags. Der in diesen Tags eingeschlossene Code wird aufgerufen, bevor er an den Client gesendet wird. Nun, Objekte requestsind responsein solchen Tags in jeder JSP-Datei verfügbar. In diesem Beispiel wird dort die aktuelle Serverzeit ersetzt, die vom Servlet übermittelt wird TimeWorker. Der Einfachheit halber erstellen wir einen Link zur Datei 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>
Lassen Sie uns das Beispiel ausführen: Tomcat in Java - 5Folgen Sie dem Link: Tomcat in Java - 6Super, alles funktioniert. Im Beispiel haben wir einen Übergang von der Hauptseite zur Nebenseite implementiert, an die ein Parameter übergeben und dem Benutzer angezeigt wurde. Wenn Sie Probleme beim Ausführen von Servlets haben, empfehle ich die Lektüre dieses Beitrags , der Tipps zur Lösung dieses Problems gibt. Für eine umfassendere Einführung in Servlets empfehlen wir die Lektüre der Artikel ( Teil 1 , Teil 2 ), in denen der Autor ausführlich die Erstellung einer einfachen Anwendung mit Servlets und JSP beschreibt.

So betten Sie eine Anwendung in einen laufenden Server ein

Obwohl das integrierte Tomcat in IDEA eine praktische Funktion ist, kann die Webanwendung auf einen anderen Server und in einen anderen Container verschoben werden. Betrachten wir die Option, wenn Sie Ihre Anwendung in einen bereits laufenden Server einbetten müssen. Zunächst ist es notwendig, den Zweck und die Funktionen eines Servlet-Containers besser zu verstehen . Das im obigen Beispiel gezeigte Programm ist eine Webanwendung. Die Klasse TimeWorkerist ein Servlet. Komponenten übernehmen ausschließlich die Anfrageverarbeitung. Diese Komponenten müssen in einen speziellen Servlet-Container eingebaut werden. Der Zweck eines Servlet-Containers besteht darin, Servlets zu unterstützen und deren Lebenszyklus sicherzustellen. Das einfachste Beispiel für die Funktionsweise von Tomcat ist das Scannen eines bestimmten Ordners, um festzustellen, ob darin ein neues Servlet angezeigt wird. Wenn ja, initialisieren Sie es und bereiten Sie es für den Empfang von Anfragen von Clients vor. Wenn das Servlet aktualisiert wurde, führen Sie eine Neuinitialisierung durch, um die Komponenten zu aktualisieren. Wenn Sie ein Servlet löschen, beenden Sie die Verarbeitung von Anforderungen und entfernen Sie das Servlet aus Tomcat.

Servlet-Containerfunktionen

  1. Datenaustausch zwischen Servlet und Clients;
  2. Organisation von Kundensitzungen;
  3. Erstellung einer Softwareumgebung für das Funktionieren eines Servlets;
  4. Идентификация и авторизация клиентов;
  5. В большинстве случаев — управление метаданными (заголовки, методы и прочее).
Во-вторых, необходимо разобраться, Wie установить свой сервлет.

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

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

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

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

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

  3. Bietet eine sehr komfortable Verwaltung von JSP-Seiten. Tatsächlich kann der Webserver nur HTML bereitstellen. Jasper, eine Tomcat-Komponente, kompiliert den in JSP-Seitenvorlagen-Tags enthaltenen Code in eine gültige HTML-Datei, die vom Client empfangen wird. Die gesamte Vorlagenlogik befindet sich in Tomcat, sodass Sie selbst komplexe Konstruktoren zu einem klassischen HTML-Formular hinzufügen können.

Und schließlich: main Sehr oft wird unerfahrenen Entwicklern die Frage gestellt: Ist es möglich, eine Java-Anwendung ohne -Methode auszuführen ? Wenn man sich die obigen Beispiele anschaut, ist es auf den ersten Blick möglich. Unser Servlet wurde ohne ausgeführt main. Dies ist jedoch nicht der Fall. Tomcat verfügt über eine eigene Methode main, die beim Serverstart aufgerufen wird. Bei einem Vorstellungsgespräch kann man dabei erwischt werden, diese Frage zu stellen.

Zusätzliche Links:

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