JavaRush /Java блогу /Random-KY /Javaдагы Tomcat

Javaдагы Tomcat

Группада жарыяланган
Кайсы бир учурда, ар бир иштеп чыгуучу өзүнүн бorмин иш жүзүндө колдонуу үчүн өзүнүн долбоорун түзүү жөнүндө ойлоно турган жетиштүү көндүмдөрдү алат. Веб-долбоорду кабыл алуу эң оңой, анткени веб-тиркемени ишке ашыруу рабочий колдонмолор сыяктуу эч кандай чектөөлөр менен чектелбейт. Кардарга браузер гана керек жана эч кандай бөлүштүрүүнү жүктөбөстөн тиркеме менен иштеше алат. Каттоосуз жана SMSсиз, алар айткандай (бирок бул колдонмонун өзүнөн көз каранды). Javaдагы Tomcat - 1Ошентип, Java'да жакшы веб-тиркемени ишке ашыруу үчүн 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инин функционалдуулугун ишке ашырат. Бул компоненттерди структуралык түрдө төмөнкү диаграмма менен сыпаттаса болот: Javaдагы Tomcat - 2Бул жерде компоненттердин өз ара аракеттенүүсүнүн болжолдуу диаграммасы “бармактарда” көрсөтүлгөн. Чынында, Tomcat иштөө жолу алда канча татаал, бирок бул негизги түшүнүк үчүн жетиштүү.

Tomcat орнотулууда

Tomcat'ты Java'да колдонуу үчүн аны системага орнотуу керек. Tomcat кантип орнотуу керектиги жөнүндө бул макаладан окуй аласыз, ал башка тиркеме serverлерин да камтыйт. Ошентип, IDEAга орнотулган иштеген Tomcat менен сиз биринчи сервлетиңизди даярдоого аракет кылсаңыз болот.

Веб тиркемени кантип түзүү керек

Веб тиркемесин түзүү үчүн сиз белгилүү бир папканын структурасын карманышыңыз керек. IntelliJ IDEA долбоорду түзүү менюсунда веб-тиркеме түзүү функциясына ээ. Долбоорду ушундай жол менен түзүп, сиз жөнөкөй структураны көрө аласыз: Javaдагы Tomcat - 3srcде, адаттагыдай эле, булактар ​​бар жана веб папкасында 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ин баштасаңыз болот: Javaдагы Tomcat - 4кардар '/', башкача айтканда, башкы баракка өткөндө 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 ачып, тегдердин ортосуна төмөнкү конфигурацияны киргизиңиз: 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>
Биринчи теги - servlet- сервлеттин атын аныктайт жана суроо-талаптарды иштете турган сервлет классына жолду көрсөтөт. Экинчи теги - servlet-mapping- аталышы бар сервлет timeWorkerсуроо-талап келгенде чакырыларын билдирет url/убакыт. Үчүнчү тег - 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>
Башталыш классикалык, бирок теги жана менен рамкаланган h1an 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>
Келгиле, мисалды иштетели: Javaдагы Tomcat - 5Шилтемени ээрчиңиз: Javaдагы Tomcat - 6Жакшы, баары иштейт. Мисалда биз негизги барактан көмөкчү бетке өтүүнү ишке ашырдык, ага параметр өтүп, колдонуучуга көрсөтүлдү. Сервлеттерди иштетүүдө көйгөйлөрүңүз болсо, мен бул маселени чечүү боюнча кеңештерди берген бул постту окууну сунуштайм. Сервлеттерге толук киришүү үчүн макалаларды ( 1-бөлүк , 2-бөлүк ) окууну сунуштайбыз, анда автор сервлеттерди жана jsp аркылуу жөнөкөй тиркемени түзүүнү майда-чүйдөсүнө чейин сүрөттөйт.

Тиркемени иштеп жаткан serverге кантип киргизүү керек

IDEA ичинде орнотулган Tomcat ыңгайлуу функция болсо да, веб-тиркеме башка serverге жана башка контейнерге жылдырылышы мүмкүн. Колдонмоңузду мурунтан эле иштеп жаткан serverге кыстарышыңыз керек болгон вариантты карап көрөлү. Биринчиден, сервлет контейнеринин максатын жана функцияларын андан ары түшүнүү керек . Жогорудагы мисалда көрсөтүлгөн программа веб-тиркеме. Класс TimeWorkerсервлет. Компоненттер суроону иштетүүнү гана аткарат. Бул компоненттер атайын сервлет контейнерине салынышы керек. Сервлет контейнеринин максаты сервлеттерди колдоо жана алардын жашоо циклин камсыз кылуу. Tomcat кантип иштешинин эң жөнөкөй мисалы - бул жаңы сервлеттин пайда болгонун аныктоо үчүн белгилүү бир папканы сканерлөө. Ооба болсо, аны инициализациялаңыз жана кардарлардын суроо-талаптарын кабыл алууга даярдаңыз. Сервлет жаңыртылган болсо, компоненттерди жаңыртуу үчүн кайра баштаңыз. Сервлетті жок кылууда, суроо-талаптарды иштетүүнү токтотуп, сервлетті Tomcatтан алып салыңыз.

Сервлет контейнеринин функциялары

  1. Сервлет менен кардарлардын ортосунда маалымат алмашуу;
  2. Кардарлардын сессияларын уюштуруу;
  3. Сервлеттин иштеши үчүн программалык чөйрөнү түзүү;
  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дагы Tomcat - 7В появившемся поле нужно нажать на deployed_war. Затем начнется сборка проекта и Intellij IDEA создаст папку out, в которой появится папка artifacts с именем нашего артефакта. В этой папке будет лежать файл deployed_war.war: Javaдагы 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 баракчаларын абдан ыңгайлуу башкарууну камсыз кылат. Чынында, веб-server html гана кызмат кыла алат. Jasper, Tomcat компоненти, JSP баракчасынын шаблон тегдеринде камтылган codeду кардар кабыл алган жарактуу HTML файлына түзөт. Бардык шаблондук логика Tomcat ичинде жайгашып, классикалык HTML формасына татаал конструкторлорду кошууга мүмкүндүк берет.

Акыр-аягы: main үйрөнчүк иштеп чыгуучуларга көбүнчө суроо берилет: Java тиркемесин -методсуз иштетүү мүмкүнбү? Бир караганда, жогорудагы мисалдарды карап көрсөңүз, мүмкүн. Биздин сервлет main. Бирок, андай эмес. mainTomcat serverи башталганда чакырылган өзүнүн ыкмасына ээ . Сиз интервьюда бул суроону берип жатып кармалышы мүмкүн.

Кошумча шилтемелер:

Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION