- Tomcat Javarush жөнүндө билет
- Tomcat - бул эмне?
- Tomcat компоненттери
- Tomcat орнотулууда
- Веб тиркемени кантип түзүү керек
- Тиркемени иштеп жаткан serverге кантип киргизүү керек
- өнүктүрүү үчүн Tomcat артыкчылыктары
- Кошумча шилтемелер
Tomcat Javarush жөнүндө билет
Tomcat JavaRush курсунда Java Collections квестинин 9-деңгээлинде окулат. 2 лекцияда Билаабо сизге Tomcat кантип жүктөө жана конфигурациялоону , ошондой эле биринчи веб тиркемеңизди курууну айтып берет .Tomcat - бул эмне?
Tomcat бул ачык булактуу сервлет контейнери, ал ошондой эле веб-server катары да иштейт. Бир караганда, Tomcat абдан оор тема сыяктуу сезилет, бирок андай эмес. Көпчүлүк Java колдонмолору буйрук сабын колдонуу менен ишке киргизилет жана кээ бир аракеттерди аткарышат. Мындай тиркемелер алдын ала аныкталган бир функцияны ишке ашырат, андан кийин алар аткарылбай калат. Мындай программаларда, адатта,main
аларды ишке киргизүү ыкмасы бар. Веб тиркеме кардар менен иштешүү үчүн иштелип чыккан. Эгерде кардардан суроо-талап болсо, ал иштелип чыгат жана колдонуучуга жооп жөнөтүлөт. Болбосо, колдонмо бош турат. Сеанстарды колдоо, HTTP сурамдарын кабыл алуу ж. Cycle while-true
? Жок, бул жерде бизге ишенимдүү чечим керек. Tomcat бул үчүн. Чынында, бул кардардын өз ара аракеттешүүсү үчүн портту ачуу, сеанстарды орнотуу, суроо-талаптардын саны, теманын узундугу жана башка көптөгөн операциялар үчүн кам көрө турган Java колдонмосу.
Tomcat компоненттери
Tomcat билүүгө арзырлык белгилүү бир функцияларды аткарган компоненттерге ээ. Келгиле, жакыныраак карап көрөлү.Каталина
Бул компоненттин аркасында иштеп чыгуучулар өз программаларын контейнерде жайгаштыруу мүмкүнчүлүгүнө ээ болушат. Catalina Servlet API спецификациясын ишке ашырат, Java веб программалоонун негизги веб-технологиясы. Чындыгында, Catalina бул Tomcat ичиндеги сервлет контейнери (биз бул түшүнүктү төмөндө кененирээк карап чыгабыз).Jasper
Бул компоненттин аркасында программист JSP технологиясын колдонот. Бул HTML файлдары сыяктуу, аларда Java codeу гана камтылган, алар баракча колдонуучуга жөнөтүлгөндө аткарылат. Бул баракка динамикалык түрдө каалаган маалыматтарды киргизүүгө мүмкүндүк берет. Jasper Java codeун HTMLге айлантат, ошондой эле өзгөрүүлөргө көз салып, аларды автоматтык түрдө жаңыртып турат.Койот
Бул белгилүү бир портто кардардын HTTP суроо-талаптарын угуучу, тиркемеде иштеп чыгуу үчүн ошол маалыматтарды камсыз кылган, ошондой эле колдонуучуларга жооп кайтарган маанилүү компонент. Башкача айтканда, Койот HTTP serverинин функционалдуулугун ишке ашырат. Бул компоненттерди структуралык түрдө төмөнкү диаграмма менен сыпаттаса болот: Бул жерде компоненттердин өз ара аракеттенүүсүнүн болжолдуу диаграммасы “бармактарда” көрсөтүлгөн. Чынында, Tomcat иштөө жолу алда канча татаал, бирок бул негизги түшүнүк үчүн жетиштүү.Tomcat орнотулууда
Tomcat'ты Java'да колдонуу үчүн аны системага орнотуу керек. Tomcat кантип орнотуу керектиги жөнүндө бул макаладан окуй аласыз, ал башка тиркеме serverлерин да камтыйт. Ошентип, IDEAга орнотулган иштеген Tomcat менен сиз биринчи сервлетиңизди даярдоого аракет кылсаңыз болот.Веб тиркемени кантип түзүү керек
Веб тиркемесин түзүү үчүн сиз белгилүү бир папканын структурасын карманышыңыз керек. IntelliJ IDEA долбоорду түзүү менюсунда веб-тиркеме түзүү функциясына ээ. Долбоорду ушундай жол менен түзүп, сиз жөнөкөй структураны көрө аласыз: srcде, адаттагыдай эле, булактар бар жана веб папкасында web.xml жана index.jsp түзүлөт. web.xml бул Tomcat үчүн суроо-талаптарды иштетүүчүлөрдү жана башка маалыматты кайдан издөө керектиги боюнча нускама. index.jsp веб-тиркемесинин негизги бети, анда колдонуучу биринчи барышы керек (бул демейки конфигурация). Биринчи иштетүү катары, сиз жөн гана index.jsp файлын түзөтө аласыз:<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<h1>Hello world!</h1>
</body>
</html>
Эгерде Tomcat түздөн-түз IDEAга орнотулган болсо, анда сиз тиркеме serverин баштасаңыз болот: кардар '/', башкача айтканда, башкы баракка өткөндө index.jsp файлынын мазмунун браузерден алат. Эми учурдагы server убактысы жайгашкан бетке шилтеме кошолу. Биринчи сервлетиңизди түзүү үчүн, сиз Tomcat менен келген servlet-api.jar китепканасын колдонушуңуз керек (lib папкасынан тапса болот). Келгиле, баракчада учурдагы server убактысын көрсөткөн сервлет түзөлү. Бул үчүн сиз класс түзүшүңүз керек TimeWorker
. Аны 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);
}
}
TimeWorker
класстан мураска алат HttpServlet
жана doGet
. Бул ыкмада биз эки параметрди алабыз - request
жана response
. Мисал катары, request
аты бар атрибут data
жана учурдагы датаны сап көрсөтүүнү камтыган атрибут сакталат. Андан кийин ал чакырылат жана параметрлер жана requestDispatcher
ага өткөрүлөт . Иштеткыч түзүлдү. Эми ага атайын суроо-талаптарды жөнөтүш керек. time.jsp бетине алып баруу үчүн каалаган өтүү болсун . web.xml ачып, тегдердин ортосуна төмөнкү конфигурацияны киргизиңиз: 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>
Биринчи теги - servlet
- сервлеттин атын аныктайт жана суроо-талаптарды иштете турган сервлет классына жолду көрсөтөт. Экинчи теги - servlet-mapping
- аталышы бар сервлет timeWorker
суроо-талап келгенде чакырыларын билдиретwelcome-file-list
- файлга которулганда чакыра турган файлды көрсөтөт
url /
. Демейки файлды өзгөртүү керек болсо, бул конфигурацияланышы керек. Мисал катары бул жерде камтылган. Эми, сиз барганыңызда, класстагы ыкма
/time
чакырылып , жок болгон time.jsp баракты кайтарып берет. Келгиле, аны index.jsp жанында түзөлү:
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>
Башталыш классикалык, бирок теги жана менен рамкаланган
h1
an objectке кайрылууну камтыйт . Бул шаблон тегдери. Бул тегдерге камтылган code кардарга жөнөтүлгөнгө чейин чакырылат. Ооба, an objectтер каалаган JSP файлында ушундай тегдерде бар . Бул мисалда сервлет тарабынан берилүүчү учурдагы server убактысы ошол жерде алмаштырылат . Ыңгайлуулук үчүн index.jsp файлына шилтеме түзөбүз :
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>
Келгиле, мисалды иштетели:
Шилтемени ээрчиңиз:
Жакшы, баары иштейт. Мисалда биз негизги барактан көмөкчү бетке өтүүнү ишке ашырдык, ага параметр өтүп, колдонуучуга көрсөтүлдү. Сервлеттерди иштетүүдө көйгөйлөрүңүз болсо, мен бул маселени чечүү боюнча кеңештерди берген
бул постту окууну сунуштайм. Сервлеттерге толук киришүү үчүн макалаларды (
1-бөлүк ,
2-бөлүк ) окууну сунуштайбыз, анда автор сервлеттерди жана jsp аркылуу жөнөкөй тиркемени түзүүнү майда-чүйдөсүнө чейин сүрөттөйт.
Тиркемени иштеп жаткан serverге кантип киргизүү керек
IDEA ичинде орнотулган Tomcat ыңгайлуу функция болсо да, веб-тиркеме башка serverге жана башка контейнерге жылдырылышы мүмкүн. Колдонмоңузду мурунтан эле иштеп жаткан serverге кыстарышыңыз керек болгон вариантты карап көрөлү. Биринчиден, сервлет контейнеринин максатын жана функцияларын андан ары түшүнүү керек . Жогорудагы мисалда көрсөтүлгөн программа веб-тиркеме. КлассTimeWorker
сервлет. Компоненттер суроону иштетүүнү гана аткарат. Бул компоненттер атайын сервлет контейнерине салынышы керек.
Сервлет контейнеринин максаты сервлеттерди колдоо жана алардын жашоо циклин камсыз кылуу. Tomcat кантип иштешинин эң жөнөкөй мисалы - бул жаңы сервлеттин пайда болгонун аныктоо үчүн белгилүү бир папканы сканерлөө. Ооба болсо, аны инициализациялаңыз жана кардарлардын суроо-талаптарын кабыл алууга даярдаңыз. Сервлет жаңыртылган болсо, компоненттерди жаңыртуу үчүн кайра баштаңыз. Сервлетті жок кылууда, суроо-талаптарды иштетүүнү токтотуп, сервлетті Tomcatтан алып салыңыз.
Сервлет контейнеринин функциялары
- Сервлет менен кардарлардын ортосунда маалымат алмашуу;
- Кардарлардын сессияларын уюштуруу;
- Сервлеттин иштеши үчүн программалык чөйрөнү түзүү;
- Идентификация и авторизация клиентов;
- В большинстве случаев — управление метаданными (заголовки, методы и прочее).
Установка сервлета
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 баракчаларын абдан ыңгайлуу башкарууну камсыз кылат. Чынында, веб-server html гана кызмат кыла алат. Jasper, Tomcat компоненти, JSP баракчасынын шаблон тегдеринде камтылган codeду кардар кабыл алган жарактуу HTML файлына түзөт. Бардык шаблондук логика Tomcat ичинде жайгашып, классикалык HTML формасына татаал конструкторлорду кошууга мүмкүндүк берет.
main
үйрөнчүк иштеп чыгуучуларга көбүнчө суроо берилет: Java тиркемесин -методсуз иштетүү мүмкүнбү? Бир караганда, жогорудагы мисалдарды карап көрсөңүз, мүмкүн. Биздин сервлет
main
. Бирок, андай эмес.
main
Tomcat serverи башталганда чакырылган өзүнүн ыкмасына ээ . Сиз интервьюда бул суроону берип жатып кармалышы мүмкүн.
GO TO FULL VERSION