JavaRush /Java blogi /Random-UZ /Java-da Tomcat

Java-da Tomcat

Guruhda nashr etilgan
Bir nuqtada, har bir ishlab chiquvchi o'z bilimlarini amalda qo'llash uchun o'z loyihasini yaratish haqida o'ylaydigan etarli ko'nikmalarga ega bo'ladi. Veb-loyihani qabul qilish eng oson, chunki veb-ilovani amalga oshirish ish stoli ilovalari kabi hech qanday cheklovlar bilan cheklanmaydi. Mijoz faqat brauzerga muhtoj va hech qanday tarqatishlarni yuklab olmasdan dastur bilan o'zaro aloqada bo'lishi mumkin. Ro'yxatdan o'tish va SMSsiz, ular aytganidek (garchi bu ilovaning o'ziga bog'liq bo'lsa ham). Java'da Tomcat - 1Shunday qilib, Java-da yaxshi veb-ilovani amalga oshirish uchun siz Tomcat deb nomlangan vositasiz ishlay olmaysiz. Tarkib:

Tomcat Javarushdan xabardor

Tomcat JavaRush kursida Java Collections kvestining 9-darajasida o'rganiladi. 2 ta ma'ruzada Bilaabo sizga Tomcat-ni qanday yuklab olish va sozlashni , shuningdek, birinchi veb-ilovangizni yaratishni aytib beradi .

Tomcat - bu nima?

Tomcat ochiq manbali servlet konteyneri bo'lib, u ham veb-server vazifasini bajaradi. Bir qarashda, Tomcat juda og'ir mavzu kabi ko'rinadi, ammo bu unday emas. Ko'pgina Java ilovalari buyruq qatori yordamida ishga tushiriladi va ba'zi harakatlarni bajaradi. Bunday ilovalar oldindan belgilangan bitta funktsiyani amalga oshiradi, shundan so'ng ular endi bajarilmaydi. mainBunday dasturlar odatda ishga tushirilishi mumkin bo'lgan usulga ega . Veb-ilova mijoz bilan ishlash uchun mo'ljallangan. Agar mijozdan so'rov bo'lsa, u qayta ishlanadi va foydalanuvchiga javob yuboriladi. Aks holda, dastur ishlamayapti. Seanslarni qo'llab-quvvatlash, HTTP so'rovlarini qabul qilish va hokazolarni hisobga olgan holda, bunday mantiqni standart dasturda qanday amalga oshirish kerak? Velosiped while-true? Yo'q, bu erda bizga ishonchli yechim kerak. Tomcat aynan shu maqsadda. Aslida, bu Java ilovasi bo'lib, u mijozning o'zaro aloqasi uchun portni ochish, seanslarni sozlash, so'rovlar soni, sarlavha uzunligi va boshqa ko'plab operatsiyalarni o'z ichiga oladi.

Tomcat komponentlari

Tomcat-da bilishga arziydigan muayyan funktsiyalarni bajaradigan komponentlar mavjud. Keling, batafsil ko'rib chiqaylik.

Katalina

Ushbu komponent tufayli ishlab chiquvchilar o'z dasturlarini konteynerda joylashtirish imkoniyatiga ega. Catalina Java veb-dasturlashda asosiy veb-texnologiya bo'lgan Servlet API spetsifikatsiyasini amalga oshiradi. Aslida, Catalina Tomcat ichidagi servlet konteyneridir (bu kontseptsiyani quyida batafsilroq ko'rib chiqamiz).

Jasper

Ushbu komponent tufayli dasturchi JSP texnologiyasidan foydalanadi. Bu HTML fayllarga o'xshaydi, faqat ular sahifa foydalanuvchiga yuborilganda bajarilishi mumkin bo'lgan Java kodiga ega. Bu sizga istalgan ma'lumotlarni sahifaga dinamik ravishda joylashtirish imkonini beradi. Jasper Java kodini HTMLga aylantiradi, shuningdek, o'zgarishlarni kuzatib boradi va ularni avtomatik ravishda yangilaydi.

Koyot

Bu ma'lum bir portdagi mijozning HTTP so'rovlarini tinglaydigan, ushbu ma'lumotlarni ilovada qayta ishlash uchun taqdim etadigan va foydalanuvchilarga javoblarni qaytaradigan muhim komponent. Ya'ni, Coyote HTTP serverining funksiyalarini amalga oshiradi. Ushbu komponentlar tizimli ravishda quyidagi diagramma bilan tavsiflanishi mumkin: Java'da Tomcat - 2Bu erda komponentlarning o'zaro ta'sirining taxminiy diagrammasi "barmoqlarda" ko'rsatilgan. Aslida, Tomcatning ishlash usuli ancha murakkab, ammo bu asosiy tushunish uchun etarli.

Tomcat o'rnatilmoqda

Tomcat-dan Java-da foydalanish uchun uni tizimga o'rnatish kerak. Tomcat-ni qanday o'rnatish haqida ushbu maqolada o'qishingiz mumkin, u boshqa dastur serverlarini ham qamrab oladi. Shunday qilib, IDEA-da ishlaydigan Tomcat-ga ega bo'lsangiz, siz birinchi servletni tayyorlashga harakat qilishingiz mumkin.

Veb-ilovani qanday yaratish kerak

Veb-ilovani yaratish uchun siz ma'lum bir papka tuzilishiga rioya qilishingiz kerak. IntelliJ IDEA loyiha yaratish menyusida veb-ilovalarni yaratish funksiyasiga ega. Loyihani shu tarzda yaratgandan so'ng, siz oddiy tuzilmani ko'rishingiz mumkin: Java'da Tomcat - 3src-da, har doimgidek, manbalar mavjud va veb-papkada web.xml va index.jsp yaratiladi. web.xml - bu Tomcat uchun so'rovlarni qayta ishlash va boshqa ma'lumotlarni qaerdan qidirish bo'yicha ko'rsatma. index.jsp - foydalanuvchi birinchi bo'lib borishi kerak bo'lgan veb-ilovaning asosiy sahifasi (bu standart konfiguratsiya). Birinchi ishga tushirish sifatida siz oddiygina index.jsp faylini tahrirlashingiz mumkin:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
 <head>
   <title>$Title$</title>
 </head>
 <body>
   <h1>Hello world!</h1>
 </body>
</html>
Agar Tomcat to'g'ridan-to'g'ri IDEA da o'rnatilgan bo'lsa, siz dastur serverini ishga tushirishingiz mumkin: Java'da Tomcat - 4Mijoz '/' ga, ya'ni asosiy sahifaga o'tganda index.jsp faylining mazmunini brauzerda oladi. Endi joriy server vaqti joylashgan sahifaga havola qo'shamiz. Birinchi servlet yaratish uchun siz Tomcat bilan birga kelgan servlet-api.jar kutubxonasidan foydalanishingiz kerak (lib papkasida topish mumkin). Keling, sahifada joriy server vaqtini ko'rsatadigan servlet yarataylik. Buning uchun siz sinf yaratishingiz kerak TimeWorker. Keling, uni src/ru/javarush/tomcat papkasiga joylashtiramiz:
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);
  }
}
TimeWorkersinfdan meros oladi HttpServletva ni bekor qiladi doGet. Ushbu usulda biz ikkita parametrni olamiz - requestva response. Misol tariqasida, requestnomga ega bo'lgan datava joriy sananing qator ko'rinishini o'z ichiga olgan atribut saqlanadi. Keyin u chaqiriladi va parametrlar va requestDispatcherunga uzatiladi . Ishlovchi yaratildi. Endi siz unga maxsus so'rov yuborishingiz kerak. Vaqt.jsp sahifasiga o'tishga ruxsat bering . web.xml ni oching, teglar orasiga quyidagi konfiguratsiyani kiriting: 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>
Birinchi teg - servlet- servlet nomini belgilaydi va so'rovlarni qayta ishlovchi servlet sinfiga yo'lni belgilaydi. Ikkinchi teg - servlet-mapping- so'rov yuborilganda nomli servlet timeWorkerchaqirilishini bildiradi url/vaqt. Uchinchi teg - welcome-file-list- ga o'tishda chaqiriladigan faylni bildiradi url /. Standart faylni o'zgartirish zarurati bo'lsa, bu sozlanishi kerak. Bu erda misol sifatida kiritilgan. Endi, siz borganingizda, sinfdagi usul /timechaqiriladi va mavjud bo'lmagan time.jsp... sahifasini qaytaradi. Keling, uni index.jsp yonida yaratamiz: 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>
Boshlanishi klassik, lekin tegda h1ob'ektga murojaat mavjud bo'lib request, u <%=va bilan hoshiyalangan %>. Bu shablon teglari. Ushbu teglar ichiga olingan kod mijozga yuborilishidan oldin chaqiriladi. Xo'sh, ob'ektlar har qanday JSP faylida bunday teglarda mavjud request. responseBu misolda servlet tomonidan uzatiladigan joriy server vaqti u yerda almashtiriladi TimeWorker. Qulaylik uchun biz index.jsp fayliga havola yaratamiz /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>
Keling, misolni bajaramiz: Java'da Tomcat - 5Havolaga rioya qiling: Java'da Tomcat - 6Ajoyib, hamma narsa ishlaydi. Misolda biz asosiy sahifadan yordamchi sahifaga o'tishni amalga oshirdik, unga parametr uzatildi va foydalanuvchiga ko'rsatiladi. Agar sizda servletlarni ishga tushirishda muammolar mavjud bo'lsa, men ushbu muammoni hal qilish bo'yicha maslahatlar beradigan ushbu maqolani o'qishni maslahat beraman. Servletlar bilan toʻliqroq tanishish uchun maqolalarni oʻqishni tavsiya qilamiz ( 1-qism , 2-qism ), bu yerda muallif servletlar va jsp-dan foydalangan holda oddiy dastur yaratishni batafsil tasvirlab beradi.

Ilovani ishlaydigan serverga qanday joylashtirish mumkin

IDEA-da o'rnatilgan Tomcat qulay xususiyat bo'lsa-da, veb-ilovani boshqa serverga va boshqa konteynerga ko'chirish mumkin. Ilovangizni allaqachon ishlayotgan serverga joylashtirishingiz kerak bo'lgan variantni ko'rib chiqaylik. Birinchidan, servlet konteynerining maqsadi va funktsiyalarini batafsilroq tushunish kerak . Yuqoridagi misolda ko'rsatilgan dastur veb-ilovadir. Sinf TimeWorkerservlet hisoblanadi. Komponentlar faqat so'rovni qayta ishlashni amalga oshiradi. Ushbu komponentlar maxsus servlet konteyneriga o'rnatilishi kerak. Servlet konteynerining maqsadi servletlarni qo'llab-quvvatlash va ularning hayot aylanishini ta'minlashdir. Tomcat qanday ishlashining eng oddiy misoli - yangi servlet paydo bo'lganligini aniqlash uchun ma'lum bir jildni skanerlash. Ha bo'lsa, uni ishga tushiring va mijozlar so'rovlarini qabul qilish uchun tayyorlang. Agar servlet yangilangan bo'lsa, komponentlarni yangilash uchun qayta ishga tushiring. Servletni o'chirishda so'rovlarni qayta ishlashni to'xtating va servletni Tomcat'dan olib tashlang.

Servlet konteyneri funksiyalari

  1. Servlet va mijozlar o'rtasida ma'lumotlar almashinuvi;
  2. Mijoz sessiyalarini tashkil etish;
  3. Servletning ishlashi uchun dasturiy muhitni yaratish;
  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 sahifalarini juda qulay boshqarishni ta'minlaydi. Aslida veb-server faqat html-ga xizmat qilishi mumkin. Tomcat-ning komponenti bo'lgan Jasper JSP sahifa shablonlari teglaridagi kodni mijoz tomonidan qabul qilingan to'g'ri HTML fayliga kompilyatsiya qiladi. Barcha shablon mantig'i Tomcat ichida joylashgan bo'lib, klassik HTML formasiga hatto murakkab konstruktorlarni ham qo'shish imkonini beradi.

Va nihoyat: main ko'pincha yangi ishlab chiquvchilarga savol berishadi: Java dasturini -metodsiz ishga tushirish mumkinmi? Bir qarashda, yuqoridagi misollarga qarasangiz, bu mumkin. Bizning servletimiz main. Biroq, unday emas. mainTomcat server ishga tushganda chaqiriladigan o'z usuliga ega . Siz intervyuda bu savolni berishingiz mumkin.

Qo'shimcha havolalar:

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