JavaRush /Java Blogu /Random-AZ /Java-da Tomcat

Java-da Tomcat

Qrupda dərc edilmişdir
Müəyyən bir nöqtədə, hər bir tərtibatçı kifayət qədər bacarıq əldə edir ki, biliklərini praktikada tətbiq etmək üçün öz layihəsini yaratmağı düşünür. Veb layihəsini qəbul etmək ən asandır, çünki veb tətbiqetməsinin həyata keçirilməsi masaüstü proqramlar kimi heç bir məhdudiyyətlə məhdudlaşmır. Müştəriyə yalnız brauzer lazımdır və heç bir paylama yükləmədən proqramla qarşılıqlı əlaqə qura bilər. Qeydiyyat olmadan və SMS olmadan, necə deyərlər (baxmayaraq ki, bu proqramın özündən asılıdır). Java-da Tomcat - 1Beləliklə, Java-da yaxşı bir veb tətbiqi tətbiq etmək üçün Tomcat adlı bir alət olmadan edə bilməzsiniz. Məzmun:

Tomcat Javarushdan xəbərdardır

Tomcat JavaRush kursunda Java Collections axtarışının 9-cu səviyyəsində öyrənilir. 2 mühazirədə Bilaabo sizə Tomcat-ı necə yükləmək və konfiqurasiya etmək , həmçinin ilk veb tətbiqinizi qurmaq barədə məlumat verəcəkdir .

Tomcat - bu nədir?

Tomcat həm də veb server kimi fəaliyyət göstərən açıq mənbəli servlet konteyneridir. İlk baxışdan Tomcat olduqca ağır bir mövzu kimi görünür, lakin bu belə deyil. Əksər Java proqramları əmr satırından istifadə edərək işə salınır və bəzi hərəkətləri yerinə yetirir. Bu cür proqramlar əvvəlcədən təyin edilmiş bir funksiyanı yerinə yetirir, bundan sonra onlar artıq icra olunmur. Bu cür proqramların adətən mainişə salına biləcəyi bir üsul var. Veb tətbiqi müştəri ilə qarşılıqlı əlaqə üçün nəzərdə tutulmuşdur. Müştəridən sorğu olarsa, ona baxılır və istifadəçiyə cavab göndərilir. Yoxdursa, proqram boşdur. Seansları dəstəkləmək, HTTP sorğularını qəbul etmək və s. lazım olduğunu nəzərə alsaq, bu cür məntiqi standart tətbiqdə necə tətbiq etmək olar? Velosiped while-true? Xeyr, burada etibarlı bir həll lazımdır. Tomcat bunun üçündür. Əslində, bu, müştəri ilə qarşılıqlı əlaqə üçün portun açılmasına, sessiyaların qurulmasına, sorğuların sayına, başlıq uzunluğuna və bir çox başqa əməliyyatlara diqqət yetirən Java proqramıdır.

Tomcat Komponentləri

Tomcat-da bilməyə dəyər olan xüsusi funksiyaları yerinə yetirən komponentlər var. Gəlin daha yaxından nəzər salaq.

Katalina

Bu komponent sayəsində tərtibatçılar proqramlarını konteynerdə yerləşdirmək imkanı əldə edirlər. Catalina, Java veb proqramlaşdırmasında əsas veb texnologiyası olan Servlet API spesifikasiyasını həyata keçirir. Əslində, Catalina Tomcat daxilində bir servlet konteyneridir (bu konsepsiyaya aşağıda daha ətraflı baxacağıq).

Jasper

Bu komponent sayəsində proqramçı JSP texnologiyasından istifadə edir. Bunlar HTML fayllarına bənzəyir, yalnız onlar səhifə istifadəçiyə göndərildikdə icra oluna bilən Java koduna malikdirlər. Bu, istənilən məlumatı səhifəyə dinamik şəkildə yerləşdirməyə imkan verir. Jasper Java kodunu HTML-yə çevirir, həmçinin dəyişiklikləri izləyir və avtomatik olaraq yeniləyir.

coyote

Bu, müəyyən bir portda müştərinin HTTP sorğularını dinləyən, həmin məlumatları proqramda emal üçün təmin edən və həmçinin istifadəçilərə cavabları qaytaran vacib komponentdir. Yəni Coyote HTTP serverinin funksionallığını həyata keçirir. Bu komponentləri struktur olaraq aşağıdakı diaqramla təsvir etmək olar: Java-da Tomcat - 2Burada komponentlərin qarşılıqlı təsirinin təxmini diaqramı “barmaqlarda” göstərilmişdir. Əslində, Tomcat-ın işləmə üsulu daha mürəkkəbdir, lakin bu, əsas anlayış üçün kifayətdir.

Tomcat quraşdırılması

Tomcat-ı Java-da istifadə etmək üçün onu sistemdə quraşdırmaq lazımdır. Digər proqram serverlərini də əhatə edən bu məqalədə Tomcat-ı necə quraşdırmaq barədə oxuya bilərsiniz. Beləliklə, IDEA-da işləyən Tomcat-a sahib olmaqla, ilk servletinizi hazırlamağa cəhd edə bilərsiniz.

Veb tətbiqini necə yaratmaq olar

Veb tətbiqi yaratmaq üçün müəyyən bir qovluq strukturuna riayət etməlisiniz. IntelliJ IDEA layihənin yaradılması menyusunda veb proqram yaratma funksiyasına malikdir. Layihəni bu şəkildə yaratdıqdan sonra sadə bir struktur görə bilərsiniz: Java-da Tomcat - 3src-də həmişə olduğu kimi mənbələr var və veb qovluğunda web.xml və index.jsp yaradılır. web.xml Tomcat üçün sorğu işləyicilərini və digər məlumatları harada axtarmaq barədə təlimatdır. index.jsp istifadəçinin ilk getməli olduğu veb proqramın əsas səhifəsidir (bu, standart konfiqurasiyadır). İlk dəfə olaraq siz sadəcə olaraq index.jsp faylını redaktə edə bilərsiniz:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
 <head>
   <title>$Title$</title>
 </head>
 <body>
   <h1>Hello world!</h1>
 </body>
</html>
Əgər Tomcat birbaşa IDEA-da quraşdırılıbsa, siz proqram serverini işə sala bilərsiniz: Java-da Tomcat - 4Müştəri brauzerdə index.jsp faylının məzmununu '/', yəni əsas səhifəyə keçdikdə alır. İndi cari server vaxtının yerləşəcəyi səhifəyə keçid əlavə edək. İlk servletinizi yaratmaq üçün Tomcat ilə birlikdə gələn servlet-api.jar kitabxanasından istifadə etməlisiniz (lib qovluğunda tapa bilərsiniz). Səhifədə cari server vaxtını göstərəcək bir servlet yaradaq. Bunu etmək üçün bir sinif yaratmalısınız TimeWorker. Onu src/ru/javarush/tomcat qovluğuna yerləşdirək:
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);
  }
}
TimeWorkersinifdən miras alır HttpServletdoGet. Bu üsulda biz iki parametr alırıq - requestresponse. Nümunə olaraq, requestadı olan datavə cari tarixin simli təsvirini ehtiva edən atribut saxlanılır. Sonra çağırılır və parametrlər verilir və requestDispatcherona ötürülür . İşləyici yaradılıb. İndi ona xüsusi olaraq sorğular göndərməlisiniz. İstənilən keçidin time.jsp səhifəsinə keçməsinə icazə verin. web.xml açın, aşağıdakı konfiqurasiyanı teqlər arasına daxil edin: 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>
Birinci teq - servlet- servletin adını müəyyən edir və sorğuları emal edəcək servlet sinfinə gedən yolu müəyyən edir. İkinci teq - servlet-mapping- sorğu zamanı adı olan servletin timeWorkerçağırılacağını bildirir url/zaman. Üçüncü teq - welcome-file-list- keçid zamanı çağırılacaq faylı göstərir url /. Defolt faylı dəyişdirməyə ehtiyac varsa, bu konfiqurasiya edilməlidir. Nümunə olaraq buraya daxil edilmişdir. İndi siz getdiyiniz zaman sinifdəki metod /timeçağırılacaq və mövcud olmayan səhifə time.jsp... qaytarılacaq. Gəlin onu index.jsp yanında yaradaq: 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>
Başlanğıc klassikdir, lakin etiketdə və ilə çərçivələnmiş h1obyektə müraciət var . Bunlar şablon etiketləridir. Bu teqlərə daxil edilmiş kod müştəriyə göndərilməmişdən əvvəl çağırılır. Yaxşı, obyektlər istənilən JSP faylında belə teqlərdə mövcuddur . Bu nümunədə servlet tərəfindən ötürülən cari server vaxtı orada əvəz olunacaq . Rahatlıq üçün biz index.jsp faylına keçid yaradırıq : request <%= %> request response TimeWorker /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>
Nümunəni icra edək: Java-da Tomcat - 5Linki izləyin: Java-da Tomcat - 6Əla, hər şey işləyir. Nümunədə biz əsas səhifədən köməkçi səhifəyə keçid həyata keçirdik, ona parametr ötürüldü və istifadəçiyə göstərildi. Servletləri işlətməkdə probleminiz varsa, bu problemi həll etmək üçün məsləhətlər verən bu yazını oxumağı məsləhət görürəm. Servletlərə daha dolğun giriş üçün biz məqalələri oxumağı tövsiyə edirik ( 1-ci hissə , 2-ci hissə ), burada müəllif servletlər və jsp-dən istifadə edərək sadə proqramın yaradılmasını ətraflı təsvir edir.

Tətbiqi işləyən serverə necə yerləşdirmək olar

Несмотря на то, что встроенный 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: Java-da Tomcat - 7В появившемся поле нужно нажать на deployed_war. Затем начнется сборка проекта и Intellij IDEA создаст папку out, в которой появится папка artifacts с именем нашего артефакта. В этой папке будет лежать файл deployed_war.war: Java-da Tomcat - 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 səhifələrinin çox rahat idarə olunmasını təmin edir. Əslində, veb server yalnız html xidmət edə bilər. Tomcat komponenti olan Jasper, JSP səhifə şablon teqlərində olan kodu müştəri tərəfindən qəbul edilən etibarlı HTML faylına tərtib edir. Bütün şablon məntiqi Tomcat daxilində yerləşir və klassik HTML formasına hətta mürəkkəb konstruktorlar əlavə etməyə imkan verir.

Və nəhayət: main çox vaxt təcrübəsiz tərtibatçılara sual verilir: Java proqramını -metod olmadan işə salmaq mümkündürmü ? İlk baxışdan yuxarıdakı misallara baxsanız, bu mümkündür. Servletimiz olmadan icra olundu main. Lakin, belə deyil. mainTomcat server işə salındıqda çağırılan öz metoduna malikdir . Müsahibədə bu sualı verərkən tutula bilərsiniz.

Əlavə bağlantılar:

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION