JavaRush /Blog Jawa /Random-JV /Tomcat ing Jawa

Tomcat ing Jawa

Diterbitake ing grup
Ing sawetara titik, saben pangembang entuk katrampilan sing cukup kanggo mikir babagan nggawe proyek dhewe kanggo ngetrapake kawruh kasebut. Paling gampang kanggo njupuk proyek web, amarga implementasine aplikasi web ora diwatesi dening watesan apa wae, kayata aplikasi desktop. Klien mung butuh browser lan bisa sesambungan karo aplikasi kasebut tanpa ngundhuh distribusi apa wae. Tanpa registrasi lan SMS, kaya sing dikandhakake (sanajan gumantung saka aplikasi kasebut). Tomcat in Java - 1Dadi, kanggo ngetrapake aplikasi web sing apik ing Jawa, sampeyan ora bisa nindakake tanpa alat sing diarani Tomcat. Isi:

Tomcat ngerti Javarush

Tomcat sinau ing level 9 saka pencarian Java Collections ing kursus JavaRush. Ing 2 ceramah, Bilaabo bakal menehi pitutur marang kowe carane ndownload lan ngatur Tomcat , uga nggawe aplikasi web pisanan sampeyan .

Tomcat - apa iku?

Tomcat minangka wadah servlet open source sing uga dadi server web. Sepisanan, Tomcat katon kaya topik sing rada abot, nanging ora kaya ngono. Umume aplikasi Java diluncurake nggunakake baris perintah lan nindakake sawetara tumindak. Aplikasi kasebut ngleksanakake siji fungsi sing wis ditemtokake, sawise iku ora dieksekusi maneh. Program kasebut biasane duwe cara mainsing bisa diluncurake. Aplikasi web dirancang kanggo sesambungan karo klien. Yen ana panjaluk saka klien, diproses lan respon dikirim menyang pangguna. Yen ora, aplikasi kasebut nganggur. Kepiye cara ngetrapake logika kasebut ing aplikasi standar, yen sampeyan kudu ndhukung sesi, nampa panjaluk HTTP, lsp? Sepeda; Pit; ontel while-true? Ora, kita butuh solusi sing bisa dipercaya ing kene. Sing apa Tomcat kanggo. Nyatane, iku aplikasi Java sing ngurus mbukak port kanggo interaksi klien, nyetel sesi, jumlah panjalukan, dawa header lan akeh operasi liyane.

Komponen Tomcat

Tomcat duwe komponen sing nindakake fungsi tartamtu sing kudu dingerteni. Ayo dideleng kanthi cetha.

Catalina

Thanks kanggo komponen iki, pangembang duwe kesempatan kanggo nyebarake program ing wadhah. Catalina ngetrapake spesifikasi API Servlet, teknologi web inti ing pemrograman web Jawa. Nyatane, Catalina minangka wadhah servlet ing Tomcat (kita bakal ndeleng konsep iki kanthi luwih rinci ing ngisor iki).

Jasper

Thanks kanggo komponen iki, programmer nggunakake teknologi JSP. Iki kaya file HTML, mung ana kode Java sing bisa dieksekusi nalika kaca dikirim menyang pangguna. Iki ngidini sampeyan nglebokake data kanthi dinamis menyang kaca kasebut. Jasper ngowahi kode Java dadi HTML, lan uga nglacak owah-owahan lan nganyari kanthi otomatis.

Coyote

Iki minangka komponen penting sing ngrungokake panjalukan HTTP saka klien ing port tartamtu, nyedhiyakake data kasebut kanggo diproses ing aplikasi kasebut, lan uga ngasilake respon kanggo pangguna. Yaiku, Coyote ngetrapake fungsi server HTTP. Komponen kasebut bisa diterangake kanthi struktur kanthi diagram ing ngisor iki: Tomcat in Java - 2Ing kene diagram kira-kira interaksi komponen ditampilake "ing driji". Nyatane, cara kerja Tomcat luwih rumit, nanging iki cukup kanggo pemahaman dhasar.

Nginstal Tomcat

Kanggo nggunakake Tomcat ing Jawa, kudu diinstal ing sistem. Sampeyan bisa maca babagan carane nginstal Tomcat ing artikel iki, sing uga kalebu server aplikasi liyane. Dadi, nduwe Tomcat sing digunakake ing IDEA, sampeyan bisa nyoba nyiyapake servlet pisanan sampeyan.

Carane nggawe aplikasi web

Kanggo nggawe aplikasi web, sampeyan kudu netepi struktur folder tartamtu. IntelliJ IDEA nduweni fungsi nggawe aplikasi web ing menu nggawe proyek. Sawise nggawe proyek kanthi cara iki, sampeyan bisa ndeleng struktur sing prasaja: Tomcat ing Jawa - 3Ing src, kaya biasane, ana sumber, lan ing folder web web.xml lan index.jsp digawe. web.xml minangka instruksi kanggo Tomcat kanggo nggoleki panjaluk panjaluk lan informasi liyane. index.jsp minangka kaca utama aplikasi web, ing ngendi pangguna kudu luwih dhisik (iki konfigurasi standar). Minangka run pisanan, sampeyan mung bisa ngowahi 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>
Yen Tomcat diinstal langsung ing IDEA, sampeyan bisa miwiti server aplikasi: Tomcat ing Jawa - 4Klien nampa isi file index.jsp ing browser nalika navigasi menyang '/', yaiku, menyang kaca utama. Saiki ayo nambah link menyang kaca ing ngendi wektu server saiki bakal ana. Kanggo nggawe servlet pisanan, sampeyan kudu nggunakake perpustakaan servlet-api.jar sing teka karo Tomcat (bisa ditemokake ing folder lib). Ayo nggawe servlet sing bakal nampilake wektu server saiki ing kaca kasebut. Kanggo nindakake iki, sampeyan kudu nggawe kelas TimeWorker. Ayo diselehake ing folder 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);
  }
}
TimeWorkerwarisan saka kelas HttpServletlan overrides ing doGet. Ing cara iki kita nampa loro paramèter - requestlan response. Contone, requestatribut kanthi jeneng datalan ngemot perwakilan string tanggal saiki disimpen. Banjur diarani lan paramèter lan requestDispatcherditerusake . Pawang wis digawe. Saiki sampeyan kudu ngirim panjalukan khusus marang dheweke. Ayo sembarang transisi kanggo mimpin menyang kaca time.jsp. Bukak web.xml, lebokake konfigurasi ing antarane tag: 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>
Tag pisanan - servlet- nemtokake jeneng servlet lan nemtokake path menyang kelas servlet sing bakal ngolah panjalukan. Tag kapindho - servlet-mapping- nuduhake yen servlet karo jeneng timeWorkerbakal disebut nalika panjalukan kanggo 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 ing Jawa - 5Переходим по ссылке: Tomcat ing Jawa - 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 ing Jawa - 7В появившемся поле нужно нажать на deployed_war. Затем начнется сборка проекта и Intellij IDEA создаст папку out, в которой появится папка artifacts с именем нашего артефакта. В этой папке будет лежать файл deployed_war.war: Tomcat ing Jawa - 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.

Lan pungkasanipun: asring banget pangembang anyar takon pitakonan: iku bisa kanggo mbukak aplikasi Jawa tanpa main-metode. Sepisanan, yen sampeyan ndeleng conto ing ndhuwur, bisa uga. Servlet kita dieksekusi tanpa file main. Nanging, ora. Tomcat duwe cara dhewe mainsing diarani nalika server diwiwiti. Sampeyan bisa kejiret takon pitakonan iki ing wawancara.

Pranala tambahan:

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