JavaRush /Java Blog /Random-IT /Tomcat in Giava

Tomcat in Giava

Pubblicato nel gruppo Random-IT
Ad un certo punto, ogni sviluppatore acquisisce competenze sufficienti per pensare a creare il proprio progetto per mettere in pratica le sue conoscenze. È più semplice intraprendere un progetto web, poiché l'implementazione di un'applicazione web non è vincolata da alcuna restrizione, come ad esempio le applicazioni desktop. Il client necessita solo di un browser e può interagire con l'applicazione senza scaricare alcuna distribuzione. Senza registrazione e SMS, come si suol dire (anche se questo dipende dall'applicazione stessa). Tomcat in Java - 1Quindi, per implementare una buona applicazione web in Java, non puoi fare a meno di uno strumento chiamato Tomcat. Contenuto:

Tomcat è a conoscenza di Javarush

Tomcat viene studiato al livello 9 della ricerca Collezioni Java nel corso JavaRush. In 2 lezioni, Bilaabo ti spiegherà come scaricare e configurare Tomcat , nonché come creare la tua prima applicazione web .

Tomcat: che cos'è?

Tomcat è un contenitore servlet open source che funge anche da server web. A prima vista, Tomcat sembra un argomento piuttosto pesante, ma non è così. La maggior parte delle applicazioni Java vengono avviate utilizzando la riga di comando ed eseguono alcune azioni. Tali applicazioni implementano una funzione predefinita, dopodiché non vengono più eseguite. Tali programmi di solito hanno un metodo mainattraverso il quale possono essere avviati. L'applicazione web è progettata per interagire con il cliente. Se è presente una richiesta da parte del client, questa viene elaborata e viene inviata una risposta all'utente. In caso contrario, l'applicazione è inattiva. Come implementare tale logica in un'applicazione standard, dato che è necessario supportare sessioni, accettare richieste HTTP, ecc.? Ciclo while-true? No, abbiamo bisogno di una soluzione affidabile qui. Ecco a cosa serve Tomcat. Si tratta infatti di un'applicazione Java che si occupa di aprire la porta per l'interazione del client, impostare sessioni, numero di richieste, lunghezza dell'intestazione e molte altre operazioni.

Componenti Tomcat

Tomcat dispone di componenti che eseguono funzioni specifiche che vale la pena conoscere. Diamo uno sguardo più da vicino.

Catalina

Grazie a questo componente, gli sviluppatori hanno la possibilità di distribuire i propri programmi in un contenitore. Catalina implementa la specifica API Servlet, la tecnologia web principale nella programmazione web Java. In effetti, Catalina è un contenitore servlet all'interno di Tomcat (approfondiremo questo concetto più in dettaglio di seguito).

Diaspro

Grazie a questo componente, il programmatore utilizza la tecnologia JSP. Sono come file HTML, solo che hanno codice Java incorporato che può essere eseguito quando la pagina viene inviata all'utente. Ciò ti consente di incorporare dinamicamente qualsiasi dato nella pagina. Jasper trasforma il codice Java in HTML, tiene traccia delle modifiche e le aggiorna automaticamente.

Coyote

Si tratta di un componente importante che ascolta le richieste HTTP da un client su una porta specifica, fornisce i dati per l'elaborazione nell'applicazione e restituisce anche risposte agli utenti. Cioè, Coyote implementa la funzionalità di un server HTTP. Questi componenti possono essere descritti strutturalmente dal seguente diagramma: Tomcat in Java - 2Qui è mostrato un diagramma approssimativo dell'interazione dei componenti “sulle dita”. In realtà il funzionamento di Tomcat è molto più complesso, ma questo è sufficiente per una comprensione di base.

Installazione di Tomcat

Per utilizzare Tomcat in Java, è necessario installarlo sul sistema. Puoi leggere come installare Tomcat in questo articolo, che copre anche altri server applicazioni. Quindi, avendo un Tomcat funzionante integrato in IDEA, puoi provare a preparare il tuo primo servlet.

Come creare un'applicazione web

Per creare un'applicazione web, è necessario aderire a una struttura di cartelle specifica. IntelliJ IDEA ha una funzione di generazione di applicazioni web nel menu di creazione del progetto. Avendo creato il progetto in questo modo, puoi vedere una struttura semplice: Tomcat in Java - 3in src, come sempre, ci sono i sorgenti, e nella cartella web vengono generati web.xml e index.jsp. web.xml è un'istruzione per Tomcat su dove cercare i gestori delle richieste e altre informazioni. index.jsp è la pagina principale dell'applicazione web, a cui l'utente deve andare per primo (questa è la configurazione predefinita). Come prima esecuzione, puoi semplicemente modificare il file index.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
 <head>
   <title>$Title$</title>
 </head>
 <body>
   <h1>Hello world!</h1>
 </body>
</html>
Se Tomcat è installato direttamente in IDEA, è possibile avviare l'application server: Tomcat in Java - 4il client riceve il contenuto del file index.jsp nel browser quando naviga su '/', cioè sulla pagina principale. Ora aggiungiamo un collegamento alla pagina in cui verrà posizionata l'ora corrente del server. Per creare il tuo primo servlet, devi utilizzare la libreria servlet-api.jar fornita con Tomcat (disponibile nella cartella lib). Creiamo un servlet che visualizzerà l'ora corrente del server sulla pagina. Per fare questo è necessario creare una classe TimeWorker. Inseriamolo nella cartella 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);
  }
}
TimeWorkereredita dalla classe HttpServlete sovrascrive doGet. In questo metodo riceviamo due parametri - requeste response. Ad esempio, viene memorizzato requestun attributo con un nome datae contenente una rappresentazione di stringa della data corrente. Quindi viene chiamato e i parametri gli requestDispatchervengono passati . Il gestore è stato creato. Ora devi inviare richieste specifiche a lui. Lascia che qualsiasi transizione conduca alla pagina time.jsp. Apri web.xml, inserisci tra i tag la seguente configurazione: 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>
Il primo tag - servlet- definisce il nome del servlet e specifica il percorso della classe servlet che elaborerà le richieste. Il secondo tag - servlet-mapping- indica che la servlet con il nome timeWorkerverrà chiamata quando verrà richiesta una richiesta url /time. Третий тег — welcome-file-list — указывает файл, который будет вызван при переходе на url /. Это необходимо настраивать, если существует потребность изменить файл по-умолчанию. Здесь включен для примера. Теперь при переходе на /time будет вызываться метод doGet в классе TimeWorker и отдавать page time.jsp… которой нет. Создадим ее рядом с 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>
Начало классическое, однако в теге h1 идет обращение к an objectу request, которое обрамлено <%= и %>. Это теги шаблонизации. Код, заключенный в данные теги, вызывается до того, How будет отправлен клиенту. Ну а an objectы request и response доступны в таких тегах в любом jsp-файле. В данном примере туда будет подставлено текущее время serverа, которое передает сервлет TimeWorker. В файл 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>
Запускаем пример: Tomcat in Giava - 5Переходим по ссылке: Tomcat in Java - 6Отлично, все работает. В примере мы реализовали переход с главной pages на вспомогательную, в которую был передан параметр и отображен для пользователя. При наличии проблем с запуском сервлетов рекомендую прочитать этот пост, где дают советы по решению этой проблемы. Для более полного ознакомления с сервлетами, рекомендуем прочитать статьи ( часть 1, часть 2), где автор подробно расписывает создание простейшего applications на сервлетах и jsp.

Как встроить приложение в работающий server

Несмотря на то, что встроенный Tomcat в IDEA — удобная фича, веб-приложение может быть перенесено на другой server и в другой контейнер. Рассмотрим вариант, когда необходимо встроить свое приложение в уже работающий server. Во-первых, необходимо дополнительно разобрать цель и функции контейнера сервлетов. Программа, которая приведена в примере выше — это веб-приложение. Класс TimeWorker — сервлет. Компоненты выполняют исключительно обработку requestов. Данные компоненты должны быть встроены в специальный контейнер сервлетов. Цель контейнера сервлетов — поддержка сервлетов и обеспечение их жизненного цикла. Простейший пример работы Tomcat — сканирование определенной папки с целью определить, появился ли в ней новый сервлет. Если да — инициализировать его и подготовить к приему requestов от клиентов. Если сервлет был обновлен, провести повторную инициализацию для обновления компонентов. При удалении сервлета — остановить обработку requestов, удалить сервлет из Tomcat.

Функции контейнера сервлетов

  1. Обмен данными между сервлетом и клиентами;
  2. Организация клиентских сессий;
  3. Creation программной среды для функционирования сервлета;
  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 in Java - 7В появившемся поле нужно нажать на deployed_war. Затем начнется сборка проекта и Intellij IDEA создаст папку out, в которой появится папка artifacts с именем нашего артефакта. В этой папке будет лежать файл deployed_war.war: Tomcat in 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. Предоставляет очень удобное управление JSP-pageми. Фактически веб-server может отдавать только html. Jasper, компонент Tomcat, компorрует code, содержащийся в шаблонных тегах JSP-страниц в корректный HTML-файл, который получает клиент. Вся логика шаблонизации находится внутри Tomcat, позволяя добавлять даже сложные конструкторы в классическую форму HTML.

E infine: molto spesso agli sviluppatori alle prime armi viene posta la domanda: è possibile eseguire un'applicazione Java senza mainun metodo. A prima vista, se guardi gli esempi sopra, è possibile. Il nostro servlet è stato eseguito senza l'estensione main. Tuttavia non lo è. Tomcat ha il proprio metodo mainche viene chiamato all'avvio del server. Puoi essere sorpreso a fare questa domanda durante un colloquio.

Collegamenti aggiuntivi:

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