- Tomcat è a conoscenza di Javarush
- Tomcat: che cos'è?
- Componenti Tomcat
- Installazione di Tomcat
- Come creare un'applicazione web
- Come incorporare un'applicazione in un server in esecuzione
- Vantaggi di Tomcat per lo sviluppo
- Collegamenti aggiuntivi
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 metodomain
attraverso 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: Qui è 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: in 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: il 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);
}
}
TimeWorker
eredita dalla classe HttpServlet
e sovrascrive doGet
. In questo metodo riceviamo due parametri - request
e response
. Ad esempio, viene memorizzato request
un attributo con un nome data
e contenente una rappresentazione di stringa della data corrente. Quindi viene chiamato e i parametri gli requestDispatcher
vengono 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: request
response
/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 timeWorker
verrà chiamata quando verrà richiesta una richiestawelcome-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>
Запускаем пример:
Переходим по ссылке:
Отлично, все работает. В примере мы реализовали переход с главной pages на вспомогательную, в которую был передан параметр и отображен для пользователя. При наличии проблем с запуском сервлетов рекомендую прочитать
этот пост, где дают советы по решению этой проблемы. Для более полного ознакомления с сервлетами, рекомендуем прочитать статьи (
часть 1,
часть 2), где автор подробно расписывает создание простейшего applications на сервлетах и jsp.
Как встроить приложение в работающий server
Несмотря на то, что встроенный Tomcat в IDEA — удобная фича, веб-приложение может быть перенесено на другой server и в другой контейнер. Рассмотрим вариант, когда необходимо встроить свое приложение в уже работающий server. Во-первых, необходимо дополнительно разобрать цель и функции контейнера сервлетов. Программа, которая приведена в примере выше — это веб-приложение. КлассTimeWorker
— сервлет. Компоненты выполняют исключительно обработку requestов. Данные компоненты должны быть встроены в специальный контейнер сервлетов.
Цель контейнера сервлетов — поддержка сервлетов и обеспечение их жизненного цикла. Простейший пример работы Tomcat — сканирование определенной папки с целью определить, появился ли в ней новый сервлет. Если да — инициализировать его и подготовить к приему requestов от клиентов. Если сервлет был обновлен, провести повторную инициализацию для обновления компонентов. При удалении сервлета — остановить обработку requestов, удалить сервлет из Tomcat.
Функции контейнера сервлетов
- Обмен данными между сервлетом и клиентами;
- Организация клиентских сессий;
- Creation программной среды для функционирования сервлета;
- Идентификация и авторизация клиентов;
- В большинстве случаев — управление метаданными (заголовки, методы и прочее).
Установка сервлета
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 способствует обмену данными между клиентом и сервлетом, обеспечивает программный контекст для веб-приложений, берет на себя функции идентификации и авторизации клиентов, создание сессий для каждого из них.
-
Предоставляет очень удобное управление JSP-pageми. Фактически веб-server может отдавать только html. Jasper, компонент Tomcat, компorрует code, содержащийся в шаблонных тегах JSP-страниц в корректный HTML-файл, который получает клиент. Вся логика шаблонизации находится внутри Tomcat, позволяя добавлять даже сложные конструкторы в классическую форму HTML.
main
un 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
main
che viene chiamato all'avvio del server. Puoi essere sorpreso a fare questa domanda durante un colloquio.
GO TO FULL VERSION