JavaRush /Blog Java /Random-PL /Tomcat w Javie

Tomcat w Javie

Opublikowano w grupie Random-PL
Każdy programista w pewnym momencie zdobywa na tyle umiejętności, że myśli o stworzeniu własnego projektu, aby wykorzystać swoją wiedzę w praktyce. Najłatwiej jest podjąć się projektu webowego, gdyż wdrożenie aplikacji webowej nie jest ograniczone żadnymi ograniczeniami, jak np. aplikacje desktopowe. Klient potrzebuje jedynie przeglądarki i może wchodzić w interakcję z aplikacją bez konieczności pobierania jakichkolwiek dystrybucji. Bez rejestracji i SMS-ów, jak mówią (choć to zależy od samej aplikacji). Tomcat w Javie - 1Aby więc zaimplementować dobrą aplikację internetową w Javie, nie można obejść się bez narzędzia o nazwie Tomcat. Treść:

Tomcat zna Javarush

Tomcat jest nauczany na poziomie 9 zadania Java Collections w kursie JavaRush. W 2 wykładach Bilaabo opowie Ci, jak pobrać i skonfigurować Tomcat , a także zbudować swoją pierwszą aplikację internetową .

Tomcat – co to jest?

Tomcat to kontener serwletów typu open source, który działa również jako serwer WWW. Na pierwszy rzut oka Tomcat wydaje się dość ciężkim tematem, ale tak nie jest. Większość aplikacji Java uruchamia się z wiersza poleceń i wykonuje pewne czynności. Takie aplikacje implementują jedną predefiniowaną funkcję, po czym nie są już wykonywane. Takie programy zazwyczaj mają metodę, maindzięki której można je uruchomić. Aplikacja webowa przeznaczona jest do interakcji z klientem. Jeśli pojawi się żądanie od klienta, zostanie ono przetworzone i odpowiedź zostanie wysłana do użytkownika. Jeśli nie, aplikacja jest bezczynna. Jak zaimplementować taką logikę w standardowej aplikacji, skoro trzeba obsługiwać sesje, akceptować żądania HTTP itp.? Cykl while-true? Nie, potrzebujemy tutaj niezawodnego rozwiązania. Właśnie po to jest Tomcat. W rzeczywistości jest to aplikacja Java, która zajmuje się otwieraniem portu dla interakcji z klientem, konfigurowaniem sesji, liczbą żądań, długością nagłówka i wieloma innymi operacjami.

Komponenty Tomcata

Tomcat posiada komponenty realizujące określone funkcje, o których warto wiedzieć. Przyjrzyjmy się bliżej.

Catalina

Dzięki temu komponentowi programiści mają możliwość wdrażania swoich programów w kontenerze. Catalina implementuje specyfikację Servlet API, podstawową technologię sieciową w programowaniu sieciowym w Javie. W rzeczywistości Catalina jest kontenerem serwletów w Tomcat (przyjrzymy się tej koncepcji bardziej szczegółowo poniżej).

Jaspis

Dzięki temu komponentowi programista korzysta z technologii JSP. Są one podobne do plików HTML, z tą różnicą, że zawierają osadzony kod Java, który można wykonać po wysłaniu strony do użytkownika. Dzięki temu możesz dynamicznie osadzać dowolne dane na stronie. Jasper zamienia kod Java na HTML, a także śledzi zmiany i automatycznie je aktualizuje.

Kojot

Jest to ważny komponent, który nasłuchuje żądań HTTP od klienta na określonym porcie, udostępnia te dane do przetworzenia w aplikacji, a także zwraca odpowiedzi użytkownikom. Oznacza to, że Coyote implementuje funkcjonalność serwera HTTP. Elementy te można strukturalnie opisać za pomocą poniższego diagramu: Tomcat w Javie - 2Tutaj „na palcach” pokazany jest przybliżony schemat interakcji komponentów. W rzeczywistości sposób działania Tomcata jest znacznie bardziej złożony, ale to wystarczy do podstawowego zrozumienia.

Instalowanie Tomcata

Aby używać Tomcat w Javie, należy go zainstalować w systemie. O tym, jak zainstalować Tomcat, możesz przeczytać w tym artykule, który dotyczy także innych serwerów aplikacji. Mając więc działającego Tomcata wbudowanego w IDEA, możesz spróbować przygotować swój pierwszy serwlet.

Jak stworzyć aplikację internetową

Aby stworzyć aplikację internetową, musisz przestrzegać określonej struktury folderów. IntelliJ IDEA posiada funkcję generowania aplikacji internetowych w menu tworzenia projektu. Po stworzeniu w ten sposób projektu widać prostą strukturę: Tomcat w Javie - 3W src jak zwykle znajdują się źródła, a w folderze web generowane są pliki web.xml i indeks.jsp. web.xml to instrukcja dla Tomcata, gdzie szukać programów obsługi żądań i innych informacji. Index.jsp to strona główna aplikacji webowej, na którą użytkownik powinien udać się w pierwszej kolejności (jest to konfiguracja domyślna). Przy pierwszym uruchomieniu możesz po prostu edytować plik Index.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
 <head>
   <title>$Title$</title>
 </head>
 <body>
   <h1>Hello world!</h1>
 </body>
</html>
Jeśli Tomcat jest zainstalowany bezpośrednio w IDEA, możesz uruchomić serwer aplikacji: Tomcat w Javie – 4Klient otrzymuje w przeglądarce zawartość pliku indeks.jsp, gdy przejdzie do „/”, czyli do strony głównej. Dodajmy teraz link do strony, na której będzie się znajdować aktualny czas serwera. Aby utworzyć swój pierwszy serwlet, musisz użyć biblioteki servlet-api.jar dołączonej do Tomcat (można ją znaleźć w folderze lib). Stwórzmy serwlet, który wyświetli na stronie aktualny czas serwera. Aby to zrobić musisz stworzyć klasę TimeWorker. Umieśćmy go w folderze 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);
  }
}
TimeWorkerDziedziczy z klasy HttpServleti zastępuje klasę doGet. W metodzie tej otrzymujemy dwa parametry - requesti response. Na przykład przechowywany jest requestatrybut z nazwą datai zawierający ciąg znaków reprezentujący bieżącą datę. Następnie wywoływane są parametry i requestDispatcherprzekazywane do niego . Procedura obsługi została utworzona. Teraz musisz wysłać prośby specjalnie do niego. Niech dowolne przejście będzie prowadzić do strony time.jsp. Otwórz plik web.xml, wstaw między tagami następującą konfigurację: 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>
Pierwszy znacznik - servlet- definiuje nazwę serwletu i określa ścieżkę do klasy serwletu, która będzie przetwarzać żądania. Drugi znacznik - servlet-mapping- wskazuje, że serwlet o tej nazwie timeWorkerzostanie wywołany, gdy zostanie wysłane żądanie adres URL/czas. Trzeci znacznik - welcome-file-list- wskazuje plik, który zostanie wywołany przy przejściu na url /. Należy to skonfigurować, jeśli istnieje potrzeba zmiany pliku domyślnego. Zawarte tutaj jako przykład. Teraz, gdy przejdziesz do, metoda w klasie /timezostanie wywołana i zwróci stronę time.jsp..., która nie istnieje. Utwórzmy go obok pliku 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>
Początek jest klasyczny, ale tag h1zawiera odwołanie do obiektu request, który jest otoczony przez <%=i %>. Są to tagi szablonowe. Kod zawarty w tych tagach jest wywoływany przed wysłaniem do klienta. Cóż, obiekty requestresponsedostępne w takich znacznikach w dowolnym pliku JSP. W tym przykładzie zostanie tam podstawiony aktualny czas serwera, który jest przesyłany przez serwlet TimeWorker. Dla wygody tworzymy link do pliku 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">Узнать текущее время serwerа</a>
 </body>
</html>
Uruchommy przykład: Tomcat w Javie – 5Kliknij link: Tomcat w Javie - 6Świetnie, wszystko działa. W przykładzie zaimplementowaliśmy przejście ze strony głównej na stronę pomocniczą, do której został przekazany parametr i wyświetlony użytkownikowi. Jeśli masz problemy z uruchomieniem serwletów, polecam przeczytać ten post , który zawiera wskazówki dotyczące rozwiązania tego problemu. Aby uzyskać pełniejsze wprowadzenie do serwletów, polecamy przeczytać artykuły ( część 1 , część 2 ), w których autor szczegółowo opisuje tworzenie prostej aplikacji przy użyciu serwletów i jsp.

Jak osadzić aplikację na działającym serwerze

Choć wbudowany Tomcat w IDEA jest wygodną funkcją, aplikację webową można przenieść na inny serwer i do innego kontenera. Rozważmy tę opcję, gdy trzeba osadzić aplikację na już działającym serwerze. Po pierwsze, konieczne jest dalsze zrozumienie celu i funkcji kontenera serwletów . Program pokazany w powyższym przykładzie jest aplikacją internetową. Klasa TimeWorkerjest serwletem. Komponenty wykonują wyłącznie przetwarzanie żądań. Komponenty te muszą być wbudowane w specjalny kontener serwletów. Celem kontenera serwletów jest obsługa serwletów i zapewnienie ich cyklu życia. Najprostszym przykładem działania Tomcat jest skanowanie określonego folderu w celu ustalenia, czy pojawił się w nim nowy serwlet. Jeśli tak, zainicjuj go i przygotuj do otrzymywania żądań od klientów. Jeśli serwlet został zaktualizowany, zainicjuj go ponownie, aby zaktualizować komponenty. Podczas usuwania serwletu przestań przetwarzać żądania i usuń serwlet z serwera Tomcat.

Funkcje kontenera serwletów

  1. Wymiana danych pomiędzy serwletem a klientami;
  2. Organizacja sesji klientów;
  3. Stworzenie środowiska programowego do funkcjonowania serwletu;
  4. Идентификация и авторизация клиентов;
  5. В большинстве случаев — управление метаданными (заголовки, методы и прочее).
Во-вторых, необходимо разобраться, Jak установить свой сервлет.

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

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

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

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

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

  3. Zapewnia bardzo wygodne zarządzanie stronami JSP. W rzeczywistości serwer WWW może obsługiwać tylko HTML. Jasper, komponent Tomcat, kompiluje kod zawarty w znacznikach szablonów stron JSP do prawidłowego pliku HTML odbieranego przez klienta. Cała logika szablonów znajduje się w Tomcat, co pozwala na dodawanie nawet skomplikowanych konstruktorów do klasycznego formularza HTML.

I na koniec: bardzo często początkującym programistom zadawane jest pytanie: czy można uruchomić aplikację Java bez mainmetody -. Na pierwszy rzut oka, jeśli spojrzysz na powyższe przykłady, jest to możliwe. Nasz serwlet został wykonany bez pliku main. Jednak tak nie jest. Tomcat ma własną metodę mainwywoływaną podczas uruchamiania serwera. Możesz zostać przyłapany na zadawaniu tego pytania podczas rozmowy kwalifikacyjnej.

Dodatkowe linki:

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