- tarmoq haqida ;
- dasturiy ta'minot arxitekturasi haqida ;
- HTTP/HTTPS protokollari haqida ;
- Maven asoslari haqida;
- servletlar haqida (oddiy veb-ilovani yozish) .
Tarkib:
- Servlet konteyneri nima
- Servlet konteynerlaridan qanday foydalanish kerak
- Tomcat-ni o'rnatish va ishga tushirish"
- Tomcat-ga ilovani o'rnatish
- HTTP o'rniga HTTPS protokolidan foydalanish
- Sertifikat yaratish
- Serverni sozlash
- HTML sahifalarini dinamik yaratish
- Tomcat uchun muqobillar
Servlet konteyneri nima
Bu serverda ishlaydigan dastur va biz yaratgan servletlar bilan o'zaro aloqada bo'lishi mumkin. Boshqacha qilib aytganda, agar biz veb-ilovamizni serverda ishga tushirmoqchi bo'lsak, avval servlet konteynerini joylashtiramiz va keyin unga servletlarni joylashtiramiz. Uning ishlash usuli oddiy: mijoz serverga murojaat qilganda, konteyner uning so‘rovini qayta ishlaydi, qaysi servlet uni qayta ishlash kerakligini aniqlaydi va uni uzatadi.Servlet konteynerlaridan qanday foydalanish kerak
Marshrutlash so'rovlariga qo'shimcha ravishda, servlet konteyneri boshqa funktsiyalarni bajaradi:- JSP fayllaridan HTML sahifalarini dinamik ravishda yaratadi.
- HTTPS xabarlarini shifrlaydi/shifrini hal qiladi.
- Servlet ma'muriyati uchun cheklangan kirishni ta'minlaydi.
Tomcat-ni o'rnatish va ishga tushirish
-
Tomcat-ni o'rnatish uchun yuklab olingan arxivni kerakli katalogga oching.
-
Iltimos, Tomcat-ni ishga tushirish uchun Java 8 yoki undan yuqori versiyasi talab qilinishini unutmang. JAVA_HOME muhit o'zgaruvchisi joriy jdk versiyasiga tegishli ekanligiga ishonch hosil qiling.
-
Keyinchalik Tomcat-ga foydalanuvchi kirishini sozlashingiz kerak . Bu conf papkasida joylashgan tomcat-users.xml faylida amalga oshiriladi.
Tomcat oldindan to'rtta rol bilan ta'minlangan:
- menejer-gui - grafik interfeys va holat sahifasiga kirish;
- menejer-skript - matn interfeysi va holat sahifasiga kirish;
- menejer-jmx - JMX va holat sahifasiga kirish;
- menejer-status - faqat holat sahifasiga kirish.
<tomcat-users> tegi ichida biz ushbu rollarni aniq yozamiz va ularni foydalanuvchimizga tayinlaymiz:
<role rolename="manager-gui"/> <role rolename="manager-script"/> <role rolename="manager-jmx"/> <role rolename="manager-status"/> <user username="user" password="password" roles="manager-gui, manager-script, manager-jmx, manager-status"/>
Endi hamma narsa ishga tushirishga tayyor!
-
Bino papkasida startup.bat faylini ishga tushiring (Linux da startup.sh).
-
Bir necha soniyadan so'ng brauzeringizda http://localhost:8080/ havolasini oching . U erda grafik menejer paydo bo'ladi:
Agar siz bunday menyuni ko'rsangiz, bu Tomcat ishlayotganligini anglatadi.
-
Agar u ishlamasa, JAVA_HOME va CATALINA_HOME muhit o'zgaruvchilarini qo'lda tekshiring:
- JAVA_HOME - Java 8+ ning joriy versiyasiga murojaat qilishi kerak;
- CATALINA_HOME - Tomcat-ga murojaat qilishi yoki yo'qligi kerak (Tomcat-ning boshqa versiyasiga ishora qilmasligi kerak).
Tomcat-ga ilovani o'rnatish
Biz Tomcat-ni ishga tushirishga muvaffaq bo'ldik, shuning uchun unda qandaydir loyihani qo'llash vaqti keldi. Oldingi maqoladagi servletlardan foydalanamiz . MainServlet:import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet("/hello")
public class MainServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
HttpSession session = req.getSession();
Integer visitCounter = (Integer) session.getAttribute("visitCounter");
if (visitCounter == null) {
visitCounter = 1;
} else {
visitCounter++;
}
session.setAttribute("visitCounter", visitCounter);
String username = req.getParameter("username");
resp.setContentType("text/html");
PrintWriter printWriter = resp.getWriter();
if (username == null) {
printWriter.write("Hello, Anonymous" + "
");
} else {
printWriter.write("Hello, " + username + "
");
}
printWriter.write("Page was visited " + visitCounter + " times.");
printWriter.close();
}
}
IndexServlet:
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/")
public class IndexServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
resp.sendRedirect(req.getContextPath() + "/hello");
}
}
Joylashtirishdan oldin bizning servletlarimiz urush arxiviga joylashtirilishi kerak. Buning uchun odatda Maven ishlatiladi, lekin urush arxivini yaratish uchun sizga barcha servletlar xaritalangan web.xml fayli kerak bo'ladi. Biz yangi @WebServlet izohidan foydalanib servletlar yozdik, shuning uchun bizda web.xml yo'q. Yaxshiyamki, IDEA biz uchun iflos ishlarni bajarishi va loyihamizni urush arxiviga alohida o'rashi mumkin. Buning uchun siz loyiha strukturasini ochishingiz kerak (Ctrl + Shift + Alt + S) -> Artifaktlar -> Kerakli tuzilmani tanlang -> “Loyiha tuzilishiga kiritish” yonidagi katakchani belgilang -> “OK” tugmasini bosing. Ctrl + F9 kombinatsiyasidan foydalanib loyihani yarating. Endi bizning urush arxivimiz maqsadli katalogda.Faylni oddiyroq narsaga o'zgartirish mumkin - masalan, servlet.war - va qulayroq joyga ko'chirish - C:\my\. Pivo ishlatishga tayyor bo'lgach, uni idishga joylashtiring . Bu ikki usulda amalga oshirilishi mumkin.
-
GUI orqali
Buning uchun http://localhost:8080/manager/html havolasiga o'ting . Tomcat sizdan login va parolni so'rashi kerak.
Agar siz mendan keyin barcha amallarni takrorlagan bo'lsangiz, unda login foydalanuvchi, parol parol .
Muvaffaqiyatli avtorizatsiyadan so'ng siz Tomcat Web Application Manager-ni ko'rasiz. Ilovalar bo'limi allaqachon 5 ta ilovani o'z ichiga oladi - bu Tomcat utility dasturlari, u bilan ishlashni soddalashtirish uchun zarur. Ular kelajakda olib tashlanishi mumkin.
Quyida Deploy bo'limi mavjud. Undan foydalanib, siz joylashtirish uchun urush arxivini tanlashingiz mumkin. Keling, yo'l va kontekstni qo'lda kiritamiz:
"O'rnatish" tugmasini bosing, biz ilovamiz Ilovalar bo'limida paydo bo'lganini ko'ramiz:
Tomcat GUI-dan foydalanib, biz uni to'xtatishimiz, qayta ishga tushirishimiz, sessiya uzunligini belgilashimiz va o'chirishimiz mumkin. Joylashtirishda biz /demo kontekstini ko'rsatdik, bu bizning ilovamizga http://localhost:8080/demo havolasi orqali kirish kerakligini anglatadi . Tekshiring, hamma narsa ishlashi kerak. -
Fayl tizimi orqali
Ilovani shu tarzda joylashtirish uchun siz Tomcat arxivi ochilgan katalogni ochishingiz va veb-ilovalarga o'tishingiz kerak. Bizga tanish bo'lgan foydali dasturlar:
Biz qilishimiz kerak bo'lgan narsa bizning servlet.war-ni bu erga ko'chirishdir.
Biz bir necha soniya kutamiz, biz yangi servlet papkasi paydo bo'lganini ko'ramiz, bu bizning ilovamiz joylashtirilganligini anglatadi. Keling, tanish dastur menejeri interfeysiga o'tamiz - http://localhost:8080/manager/ . Bu erda biz ilovamiz /servlet kontekstida joylashtirilganligini ko'ramiz:
Shu tarzda joylashtirilganda, kontekst avtomatik ravishda joylashtirilgan urush arxivi nomiga tayinlanadi. Kontekstni o'zgartirish uchun siz ilova bilan yangi yaratilgan jildning nomini o'zgartirishingiz mumkin, lekin undan oldin faylni o'chirishingiz kerak: aks holda Tomcat arxiv nomi bilan ilovani qayta joylashtiradi.
Ko'rib turganingizdek, Tomcat-ga ilovalarni joylashtirish tuyulishi mumkin bo'lgandan ancha oson. Ammo uning boshqa funktsiyalaridan foydalanish oson. Keling, tekshiramiz.
HTTP o'rniga HTTPS protokolidan foydalanish
Esingizda bo'lsa, biz HTTP va HTTPS o'rtasidagi farqni alohida maqolada muhokama qildik . HTTPS HTTP bilan bir xil protokol, lekin uzatiladigan ma'lumotlarni shifrlashdan foydalanadi. Mijoz tomonida shifrlash brauzer tomonidan amalga oshiriladi va biz server tomonida shifrlashni ta'minlashimiz kerak. HTTP so'rovlari Tomcat tomonidan qabul qilingan va yo'naltirilganligi sababli, shifrlashni unga topshirish mantiqan to'g'ri keladi. Buning uchun sizga kerak:- O'z-o'zidan imzolangan sertifikat yaratish;
- Qo'shimcha server sozlamalarini o'rnating.
Sertifikat yaratish
JDK versiyasidan qat'i nazar, ko'p sonli yordamchi dasturlar bilan birga keladi, ulardan biri keytool . Bu shifrlash kalitlarini yaratish va ular bilan ishlash uchun vositadir. Uni ishlatish uchun buyruq qatoridan foydalanib, C:\Program Files\Java\jdk1.8.0_181\bin katalogiga o'ting va keytool -genkey -alias tomcat -keyalg RSA buyrug'ini bajaring .- keytool - yordamchi dasturni parametrlar bilan ishga tushirish;
- -genkey - biz yangi kalit yaratmoqchi ekanligimizni bildiradi;
- -taxallus tomcat — kalit taxallus yaratish;
- -keyalg RSA - kalit yaratish algoritmi sifatida RSA ni tanlang.
Serverni sozlash
Endi sertifikat tayyor, siz server sozlamalarini, ya'ni SSL ulagichini sozlashingiz kerak. Bu apache-tomcat-9.0.30/conf/ da joylashgan server.xml faylida amalga oshiriladi . Biz bloklarni topamiz:<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
type="RSA" />
</SSLHostConfig>
</Connector>
va ularning yonida biz konfiguratsiyamizni joylashtiramiz:
<Connector
protocol="org.apache.coyote.http11.Http11NioProtocol"
port="8443" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="C:\Users\user\.keystore" keystorePass="mypass"
clientAuth="false" sslProtocol="TLS"/>
Biz keystoreFile va keystorePass parametrlariga biz uchun mos bo'lgan qiymatlarni belgilaymiz, shutdown.bat va startup.bat fayllari yordamida Tomcat-ni saqlang va qayta ishga tushiramiz. Endi server https so'rovlarini qayta ishlashga tayyor, biroz o'zgartirilgan manzilda - https://localhost:8443/demo/hello . Havolani bosganingizda, sertifikat shubhali ekanligi haqida ogohlantirishni ko'rasiz, bu ajablanarli emas. Bir oz oldinroq ta'riflanganidek, oddiy sertifikat olish uchun siz sertifikatlash xizmatlaridan birining xizmatlaridan foydalanishingiz kerak. Ammo hozircha biz maqsadimizga erishdik: dastur HTTPS protokoli yordamida ishlaydi va bu asosiy narsa!
HTML sahifalarini dinamik yaratish
Endi servlet konteynerlarining boshqa xususiyatlarini ko'rib chiqishni davom ettiramiz - HTML sahifalarini dinamik yaratish. Zerikarli statik HTML kod o‘rniga o‘zgaruvchilar, tsikllar, massivlar va boshqa til konstruksiyalari yordamida JAVA kodini yozishingiz mumkin bo‘lgan ideal dunyoni tasavvur qiling. Tasavvur qildingizmi? Yaxshi xabar shundaki, shunga o'xshash narsa bor, yomon xabar shundaki, u to'liq mavjud emas. Agar siz taxmin qilmagan bo'lsangiz, biz JSP (Java Server Pages) texnologiyasi haqida gapiramiz. Xulosa qilib aytganda, bu HTML sahifasiga JAVA kod qismlarini kiritish imkonini beruvchi texnologiya. To'g'ri, mijozga yuborishdan oldin bu kod hali ham HTMLga aylantiriladi, ammo u turli omillarni hisobga olgan holda dinamik ravishda yaratiladi. Misol uchun, siz shartli konstruktsiyalardan foydalanishingiz va ba'zi shartlarga qarab turli xil tarkibga xizmat qilishingiz mumkin. Misol JSP sahifasi:<%@ page language="java"" %>
<html>
<head>
<title>JSP</title>
</head>
<body>
<%
String firstName="name";
String secondName="surname";
if(firstName.equals("name")){
out.print("Hello :"+firstName+"<br>");
}
if(firstName.equals("name") && secondName.equals("surname"))
{
out.print("Hello, my dear friend! <br>");
}
else
{
out.print("I don’t know you. Go away! <br>");
}
%>
</body>
</html>
Bu yerda JSP haqida ko'proq o'qishingiz mumkin . Aslida... biz buning uchun emas, balki servlet konteynerlari uchun kelganmiz! JSP ning bunga nima aloqasi bor? Hammasi oddiy: JAVA kodini JSP dan HTML kodga aylantirish servlet konteyneri tomonidan amalga oshiriladi. Servlet JSP tarkibini javob sifatida qaytarmoqchi bo'lsa, konteyner xabar oladi va mijozga kontentni yuborishdan oldin uni brauzer tomonidan o'qiladigan HTML sahifasiga aylantiradi. Bugungi kunda JSP texnologiyasining ko'plab analoglari mavjud - Thymeleaf, FreeMarket, Mustache va boshqalar. Ularning barchasi bir xil printsip asosida ishlaydi. Ish uchun qaysi birini tanlash ta'mga bog'liq. Bu servlet konteynerini tanlashga ham tegishli. Misollarda biz Tomcat-dan foydalandik - eng keng tarqalgan konteyner, lekin ba'zi loyihalar boshqalardan foydalanadi. Eng mashhurlari bilan qisqacha tanishib, ularning Tomcat-dan farqlarini ko'rib chiqishga arziydi.
Tomcat uchun muqobillar
-
GlassFish - Oracle tomonidan qo'llab-quvvatlanadigan ochiq kodli konteyner.
Tomcat-dan farqli o'laroq, bu to'liq huquqli veb-server bo'lib, u servletlardan tashqari JavaEE ramkasining boshqa komponentlarini ham boshqarishi mumkin. Shu bilan birga, u ko'proq operativ xotirani ishlatadi. Serverni nozik sozlashda yanada moslashuvchan, bu esa undan foydalanishni qiyinlashtiradi. JavaEE ramkasidan foydalangan holda ilovalarni ishlab chiqishda foydalanishga arziydi.
-
WildFly - ilgari Jboss . Shuningdek, ochiq manba. Red Hat tomonidan ishlab chiqilgan. Boshqa kompaniya mahsuloti - JBoss Enterprise Application Platform bilan chalkashmaslik uchun nom o'zgartirildi.
WildFly, xuddi GlassFish kabi, to'liq huquqli veb-serverdir. Aytgancha, WildFly kaput ostida Tomcat-dan servlet konteyneri sifatida foydalanadi. GlassFish-dan farqli o'laroq, WildFly engilroq va sozlash osonroq.
-
Jetty - avvalgilariga o'xshash, ochiq manba. Eclipse tomonidan ishlab chiqilgan.
Tomcat singari, u JavaEE ramkasining barcha komponentlarini qo'llab-quvvatlamaydigan oddiy servlet konteyneridir. Shu bilan birga, u engilroq va hatto mobil telefonda ham ishlashi mumkin. U tezda boshlanadi va to'xtaydi va yaxshi tarozida. Tomcat-dan farqli o'laroq, u kichikroq jamiyat va bilim bazasiga ega.
-
WebLogic - foydalanishdan oldin sotib olishni talab qiladigan litsenziyalangan dastur. Oracle kompaniyasiga tegishli.
Tomcat bilan solishtirganda, uning funksionalligi biroz kengroq. Ftp protokoli bilan ishlashi mumkin. Ammo ilovalarni ishlab chiqish va sinovdan o'tkazishda u unchalik moslashuvchan emas.
-
WebSphere (aniq aytganda WebSphere Application Server) pullik dastur hisoblanadi. IBM tomonidan ishlab chiqilgan. WildFly va GlassFish singari, u to'liq huquqli dastur serveridir. Ammo u qulayroq o'rnatish interfeysi va yuqori operatsion ishonchlilikka ega.
Salbiy tomoni shundaki, u juda ko'p resurslardan foydalanadi, boshlash va to'xtatish uchun uzoq vaqt talab etiladi, bu kichik loyihalarni ishlab chiqishda juda qulay emas.
GO TO FULL VERSION