- Tomcat Javarushdan xabardor
- Tomcat - bu nima?
- Tomcat komponentlari
- Tomcat o'rnatilmoqda
- Veb-ilovani qanday yaratish kerak
- Ilovani ishlaydigan serverga qanday joylashtirish mumkin
- Tomcat-ning rivojlanish uchun afzalliklari
- Qo'shimcha havolalar
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.main
Bunday 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: Bu 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: src-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: Mijoz '/' 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);
}
}
TimeWorker
sinfdan meros oladi HttpServlet
va ni bekor qiladi doGet
. Ushbu usulda biz ikkita parametrni olamiz - request
va response
. Misol tariqasida, request
nomga ega bo'lgan data
va joriy sananing qator ko'rinishini o'z ichiga olgan atribut saqlanadi. Keyin u chaqiriladi va parametrlar va requestDispatcher
unga 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: 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>
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 timeWorker
chaqirilishini bildiradiwelcome-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
/time
chaqiriladi 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
h1
ob'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
.
response
Bu 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:
Havolaga rioya qiling:
Ajoyib, 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. SinfTimeWorker
servlet 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
- Servlet va mijozlar o'rtasida ma'lumotlar almashinuvi;
- Mijoz sessiyalarini tashkil etish;
- Servletning ishlashi uchun dasturiy muhitni yaratish;
- Идентификация и авторизация клиентов;
- В большинстве случаев — управление метаданными (заголовки, методы и прочее).
Установка сервлета
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 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.
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.
main
Tomcat server ishga tushganda chaqiriladigan o'z usuliga ega . Siz intervyuda bu savolni berishingiz mumkin.
GO TO FULL VERSION