JavaRush /Java Blog /Random-TK /Java-da Tomcat

Java-da Tomcat

Toparda çap edildi
Belli bir döwürde, her bir dörediji bilimini durmuşa geçirmek üçin öz taslamasyny döretmek hakda pikir edýän ýeterlik endiklere eýe bolýar. Web taslamasyny kabul etmek iň aňsat, sebäbi web programmasynyň ýerine ýetirilmegi iş stoly programmalary ýaly çäklendirmeler bilen çäklenmeýär. Müşderä diňe brauzer gerek we hiç hili paýlamany göçürip almazdan programma bilen aragatnaşyk saklap biler. Aýdylyşy ýaly hasaba alynmazdan we SMS bolmazdan (bu programmanyň özüne bagly). Java-da Tomkat - 1Şeýlelik bilen, Java-da gowy web programmasyny durmuşa geçirmek üçin Tomcat atly gural bolmasa edip bolmaz. Mazmuny:

Tomkat Javaruşdan habarly

Tomcat, JavaRush kursynda Java kolleksiýa gözleginiň 9-njy derejesinde öwrenilýär. 2 leksiýada Bilaabo size Tomcat-y nädip göçürip almalydygyny , şeýle hem ilkinji web programmaňyzy gurmagyň usullaryny gürrüň berer .

Tomkat - bu näme?

Tomcat, web serweri hökmünde çykyş edýän açyk çeşme hyzmat ediş konteýneridir. Bir seretseň, Tomkat gaty agyr mowzuk ýaly bolup görünýär, ýöne beýle däl. Java programmalarynyň köpüsi buýruk setirini ulanyp işe girizilýär we käbir hereketleri ýerine ýetirýär. Şeýle programmalar öňünden kesgitlenen bir funksiýany ýerine ýetirýärler, şondan soň olar indi ýerine ýetirilmeýär. mainŞeýle programmalaryň adatça işe girizilip bilinjek usuly bar . Web programmasy, müşderi bilen aragatnaşyk saklamak üçin döredildi. Müşderiden haýyş bar bolsa, işlenýär we ulanyja jogap iberilýär. Notok bolsa, programma boş. Sessiýalary goldamaly, HTTP haýyşlaryny kabul etmeli we ş.m. göz öňünde tutup, şeýle logikany adaty programmada nädip durmuşa geçirmeli? Sikl while-true? , Ok, bu ýerde ygtybarly çözgüt gerek. Tomkat şu. Aslynda, müşderiniň özara gatnaşygy üçin porty açmak, seanslary düzmek, haýyşlaryň sany, sözbaşynyň uzynlygy we başga-da köp amal üçin alada edýän Java programmasy.

Tomkat komponentleri

Tomcat-da bilmeli aýratyn funksiýalary ýerine ýetirýän komponentler bar. Geliň, has içgin seredeliň.

Katalina

Bu komponentiň kömegi bilen döredijiler öz programmalaryny konteýnerde ýerleşdirmäge mümkinçilik aldylar. Katalina, Java web programmirlemegiň esasy web tehnologiýasy bolan Servlet API spesifikasiýasyny durmuşa geçirýär. Aslynda, Katalina Tomkatyň içindäki serwet konteýner (bu düşünjä aşakda has jikme-jik serederis).

Jasper

Bu komponentiň kömegi bilen programmist JSP tehnologiýasyny ulanýar. Bular HTML faýllaryna meňzeýär, diňe sahypa ulanyja iberilende ýerine ýetirip boljak Java koduny goýdy. Bu, sahypa islendik maglumatlary dinamiki ýerleşdirmäge mümkinçilik berýär. Jasper Java koduny HTML-e öwürýär, üýtgeşmeleri yzarlaýar we awtomatiki usulda täzelenýär.

Koýot

Bu, belli bir portdaky müşderiniň HTTP haýyşlaryny diňleýän, programmada gaýtadan işlemek üçin maglumatlary berýän we ulanyjylara jogaplary berýän möhüm komponent. Cagny, “Coyote” HTTP serweriniň işleýşini amala aşyrýar. Bu komponentleri aşakdaky diagramma bilen gurluş taýdan suratlandyryp bolar: Java-da Tomkat - 2Bu ýerde komponentleriň özara täsiriniň takmynan diagrammasy “barmaklarda” görkezilýär. Aslynda, Tomkatyň işleýşi has çylşyrymly, ýöne bu esasy düşünmek üçin ýeterlikdir.

Tomcat gurmak

Tomcat-ny Java-da ulanmak üçin ulgamda gurnamaly. Tomcat-y nädip gurmalydygy barada beýleki makala serwerlerini hem öz içine alýan bu makalada okap bilersiňiz. Şeýlelik bilen, IDEA-da işleýän Tomcat gurlup, ilkinji hyzmat edişiňizi taýýarlamaga synanyşyp bilersiňiz.

Web programmasyny nädip döretmeli

Web programmasy döretmek üçin belli bir bukjanyň gurluşyna boýun bolmalysyňyz. IntelliJ IDEA taslamany döretmek menýusynda web programma döretmek funksiýasyna eýedir. Taslamany şu görnüşde döredeniňizde, ýönekeý bir gurluşy görüp bilersiňiz: Java-da Tomkat - 3src-de hemişe bolşy ýaly çeşmeler bar we web.xml web bukjasynda we index.jsp döredilýär. web.xml, Tomcat üçin haýyş işleýjileri we beýleki maglumatlary nireden gözlemelidigi barada görkezme. index.jsp ulanyjynyň ilki gitmeli web programmasynyň esasy sahypasydyr (bu deslapky konfigurasiýa). Ilkinji gezek, index.jsp faýlyny redaktirläp bilersiňiz:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
 <head>
   <title>$Title$</title>
 </head>
 <body>
   <h1>Hello world!</h1>
 </body>
</html>
Tomcat gönüden-göni IDEA-da gurlan bolsa, programma serwerini başlap bilersiňiz: Java-da Tomkat - 4Müşderi '/', ýagny esasy sahypa geçende brauzerdäki index.jsp faýlynyň mazmunyny alýar. Indi häzirki serwer wagtynyň ýerleşýän sahypasyna baglanyşyk goşalyň. Ilkinji servletiňizi döretmek üçin Tomcat bilen gelýän servlet-api.jar kitaphanasyny ulanmaly (lib bukjasynda tapyp bilersiňiz). Sahypada häzirki serwer wagtyny görkezjek servlet döredeliň. Munuň üçin synp döretmeli TimeWorker. Src / ru / javarush / tomcat bukjasyna ýerleşdireliň:
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);
  }
}
TimeWorkersynpdan miras alýar HttpServletwe doGet. Bu usulda iki parametr alýarys - requestwe response. Mysal üçin, requestady bolan datawe häzirki senäniň setir görnüşini öz içine alýan bir atribut saklanýar. Soň bolsa atlandyrylýar we parametrler we requestDispatcheroňa geçirilýär . Işleýji döredildi. Indi oňa ýörite haýyşlar ibermeli. Time.jsp sahypasyna alyp barjak islendik geçiş bolsun . Web.xml açyň, bellikleriň arasynda aşakdaky konfigurasiýany goýuň: 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>
Birinji bellik - servlet- servletiň adyny kesgitleýär we haýyşlary gaýtadan işleýän servlet synpyna barýan ýoly kesgitleýär. Ikinji bellik - servlet-mapping- haýyş edilende ady bolan servletiň timeWorkerçagyryljakdygyny görkezýär url / wagt. Üçünji bellik - welcome-file-list- açylanda çagyryljak faýly görkezýär url /. Bellenen faýly üýtgetmek zerurlygy bar bolsa düzülmelidir. Mysal hökmünde şu ýere girizildi. Indi baranyňyzda synpdaky usul /timeçagyrylar we sahypa time.jsp ... ýok. Indeks.jsp-yň gapdalynda döredeliň: 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>
Başlangyç nusgawy, ýöne bellikde h1çarçuwaly requestwe . Bular şablon bellikleri. Bu belliklerdäki kod, müşderä iberilmezden ozal çagyrylýar. Garaz, obýektler şeýle belliklerde islendik JSP faýlynda bar . Bu mysalda serwlet tarapyndan iberilýän häzirki serwer wagty şol ýerde çalşyrylar . Amatlylyk üçin index.jsp faýlyna baglanyşyk döredýäris : <%= %> 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>
Geliň, mysaly işledeliň: Java-da Tomkat - 5Baglanyşyga eýeriň: Java-da Tomkat - 6Gowy, hemme zat işleýär. Mysal üçin, esasy sahypadan kömekçi sahypa geçdik, oňa parametr geçip, ulanyja görkezildi. Serwletleri işletmekde kynçylyk çekýän bolsaňyz, bu meseläni çözmek üçin maslahatlar berýän bu ýazgyny okamagyňyzy maslahat berýärin. Serwletler bilen has doly tanyşmak üçin makalalary ( 1-nji bölüm , 2-nji bölüm ) okamagyňyzy maslahat berýäris, bu ýerde awtor servlets we jsp ulanyp ýönekeý programmanyň döredilmegini jikme-jik beýan edýär.

Programmany işleýän serwere nädip salmaly

IDEA-da gurlan Tomcat amatly aýratynlyk bolsa-da, web programmasy başga bir serwere we başga bir konteýnerlere geçirilip bilner. Programmaňyzy eýýäm işleýän serwere salmaly bolanyňyzda, opsiýany gözden geçireliň. Ilki bilen, hyzmat ediş konteýneriniň maksadyna we wezipelerine has giňişleýin düşünmek zerurdyr . Aboveokardaky mysalda görkezilen programma web programmasydyr. Synp TimeWorkerserwletdir. Komponentler diňe haýyşy gaýtadan işlemegi ýerine ýetirýärler. Bu komponentler ýörite servlet gapda gurulmalydyr. Serwet konteýneriniň maksady servletleri goldamak we olaryň ömrüni üpjün etmek. Tomkatyň işleýşiniň iň ýönekeý mysaly, täze servletiň peýda bolandygyny ýa-da ýokdugyny anyklamak üçin belli bir bukjany skanirlemekdir. Hawa bolsa, başlaň we müşderileriň isleglerini kabul etmek üçin taýýarlaň. Serwlet täzelenen bolsa, komponentleri täzelemäge başlaň. Serwlet öçürilende haýyşlary gaýtadan işlemegi bes ediň we serweri Tomcat-dan aýyryň.

Servlet konteýner funksiýalary

  1. Serwlet bilen müşderileriň arasynda maglumat alyş-çalşygy;
  2. Müşderi sessiýalaryny guramak;
  3. Serwletiň işlemegi üçin programma üpjünçiligi gurşawyny döretmek;
  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 Tomkat - 7В появившемся поле нужно нажать на deployed_war. Затем начнется сборка проекта и Intellij IDEA создаст папку out, в которой появится папка artifacts с именем нашего артефакта. В этой папке будет лежать файл deployed_war.war: Java-da Tomkat - 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 sahypalaryny gaty amatly dolandyrýar. Aslynda web serweri diňe html-e hyzmat edip biler. Tomcat-yň bir bölegi bolan Jasper, JSP sahypasynyň şablon belliklerindäki kody müşderi tarapyndan kabul edilýän dogry HTML faýlyna düzýär. Temphli şablon logikasy Tomkatyň içinde ýerleşýär, hatda çylşyrymly konstruktorlary HTML görnüşine goşmaga mümkinçilik berýär.

Iň soňunda bolsa: main köplenç täze döredilen işläp düzüjilere sorag berilýär: Java programmasyny usulsyz işletmek mümkinmi ? Bir seretseň, ýokardaky mysallara seretseň, mümkin. Serwletimiz ýerine ýetirilmedi main. Emma beýle däl. mainTomcat , serwer işe başlanda atlandyrylýan öz usuly bar . Bu soragy söhbetdeşlikde sorap bilersiňiz.

Goşmaça baglanyşyklar:

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