JavaRush /Java Blog /Random-TL /Tomcat sa Java

Tomcat sa Java

Nai-publish sa grupo
Sa ilang mga punto, ang bawat developer ay nakakakuha ng sapat na mga kasanayan na iniisip niya tungkol sa paggawa ng sarili niyang proyekto upang maisagawa ang kanyang kaalaman. Ito ay pinakamadaling kumuha sa isang web project, dahil ang pagpapatupad ng isang web application ay hindi napipigilan ng anumang mga paghihigpit, tulad ng mga desktop application. Kailangan lang ng kliyente ng browser at maaaring makipag-ugnayan sa application nang hindi nagda-download ng anumang mga distribusyon. Nang walang pagpaparehistro at SMS, tulad ng sinasabi nila (bagaman ito ay nakasalalay sa application mismo). Tomcat sa Java - 1Kaya, upang maipatupad ang isang mahusay na web application sa Java, hindi mo magagawa nang walang tool na tinatawag na Tomcat. Nilalaman:

Alam ni Tomcat ang Javarush

Ang Tomcat ay pinag-aralan sa antas 9 ng Java Collections quest sa kursong JavaRush. Sa 2 lektura, sasabihin sa iyo ni Bilaabo kung paano i-download at i-configure ang Tomcat , pati na rin ang pagbuo ng iyong unang web application .

Tomcat - ano ito?

Ang Tomcat ay isang open source servlet container na gumaganap din bilang isang web server. Sa unang tingin, ang Tomcat ay tila isang medyo mabigat na paksa, ngunit hindi ito ang kaso. Karamihan sa mga application ng Java ay inilunsad gamit ang command line at nagsasagawa ng ilang mga aksyon. Ang mga naturang application ay nagpapatupad ng isang paunang-natukoy na function, pagkatapos nito ay hindi na ipapatupad. Ang ganitong mga programa ay karaniwang may paraan mainkung saan maaaring ilunsad ang mga ito. Ang web application ay idinisenyo upang makipag-ugnayan sa kliyente. Kung mayroong isang kahilingan mula sa kliyente, ito ay pinoproseso at isang tugon ay ipinadala sa gumagamit. Kung hindi, idle ang application. Paano ipatupad ang gayong lohika sa isang karaniwang aplikasyon, dahil kailangan mong suportahan ang mga sesyon, tanggapin ang mga kahilingan sa HTTP, atbp.? Ikot while-true? Hindi, kailangan namin ng maaasahang solusyon dito. Iyan ang para sa Tomcat. Sa katunayan, ito ay isang Java application na nangangalaga sa pagbubukas ng port para sa pakikipag-ugnayan ng kliyente, pag-set up ng mga session, bilang ng mga kahilingan, haba ng header at marami pang operasyon.

Mga Bahagi ng Tomcat

Ang Tomcat ay may mga bahagi na gumaganap ng mga partikular na function na nagkakahalaga ng pag-alam. Tingnan natin nang maigi.

Catalina

Salamat sa bahaging ito, may pagkakataon ang mga developer na i-deploy ang kanilang mga program sa isang lalagyan. Ipinapatupad ni Catalina ang detalye ng Servlet API, ang pangunahing teknolohiya sa web sa Java web programming. Sa katunayan, ang Catalina ay isang servlet container sa loob ng Tomcat (titingnan natin ang konseptong ito nang mas detalyado sa ibaba).

Jasper

Salamat sa bahaging ito, ang programmer ay gumagamit ng teknolohiyang JSP. Ang mga ito ay tulad ng mga HTML na file, tanging ang mga ito ay may naka-embed na Java code na maaaring isagawa kapag ang pahina ay ipinadala sa user. Nagbibigay-daan ito sa iyong dynamic na mag-embed ng anumang data sa page. Ginagawa ni Jasper ang Java code sa HTML, at sinusubaybayan din ang mga pagbabago at awtomatikong ina-update ang mga ito.

Coyote

Ito ay isang mahalagang bahagi na nakikinig para sa mga kahilingan ng HTTP mula sa isang kliyente sa isang partikular na port, nagbibigay ng data na iyon para sa pagproseso sa application, at nagbabalik din ng mga tugon sa mga user. Ibig sabihin, ipinapatupad ng Coyote ang functionality ng isang HTTP server. Ang mga sangkap na ito ay maaaring structurally na inilarawan sa pamamagitan ng sumusunod na diagram: Tomcat sa Java - 2Narito ang isang tinatayang diagram ng pakikipag-ugnayan ng mga bahagi ay ipinapakita "sa mga daliri". Sa katunayan, ang paraan ng paggawa ng Tomcat ay mas kumplikado, ngunit ito ay sapat na para sa isang pangunahing pag-unawa.

Pag-install ng Tomcat

Upang magamit ang Tomcat sa Java, kailangan itong mai-install sa system. Maaari mong basahin ang tungkol sa kung paano i-install ang Tomcat sa artikulong ito, na sumasaklaw din sa iba pang mga server ng application. Kaya, ang pagkakaroon ng gumaganang Tomcat na binuo sa IDEA, maaari mong subukang ihanda ang iyong unang servlet.

Paano lumikha ng isang web application

Upang lumikha ng isang web application, dapat kang sumunod sa isang partikular na istraktura ng folder. Ang IntelliJ IDEA ay may function ng pagbuo ng web application sa menu ng paggawa ng proyekto. Sa paggawa ng proyekto sa ganitong paraan, makakakita ka ng isang simpleng istraktura: Tomcat sa Java - 3Sa src, gaya ng nakasanayan, may mga mapagkukunan, at sa web folder na web.xml at index.jsp ay nabuo. Ang web.xml ay isang tagubilin para sa Tomcat kung saan hahanapin ang mga humahawak ng kahilingan at iba pang impormasyon. Ang index.jsp ay ang pangunahing pahina ng web application, kung saan dapat mauna ang user (ito ang default na configuration). Bilang unang pagtakbo, maaari mo lamang i-edit ang index.jsp file:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
 <head>
   <title>$Title$</title>
 </head>
 <body>
   <h1>Hello world!</h1>
 </body>
</html>
Kung direktang naka-install ang Tomcat sa IDEA, maaari mong simulan ang server ng application: Tomcat sa Java - 4Natatanggap ng kliyente ang mga nilalaman ng index.jsp file sa browser kapag nag-navigate ito sa '/', iyon ay, sa pangunahing pahina. Ngayon, magdagdag tayo ng link sa page kung saan makikita ang kasalukuyang oras ng server. Upang lumikha ng iyong unang servlet, kailangan mong gamitin ang servlet-api.jar library na kasama ng Tomcat (matatagpuan sa lib folder). Gumawa tayo ng servlet na magpapakita ng kasalukuyang oras ng server sa page. Upang gawin ito kailangan mong lumikha ng isang klase TimeWorker. Ilagay natin ito sa src/ru/javarush/tomcat folder:
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);
  }
}
TimeWorkernagmana mula sa klase HttpServletat na-override ang doGet. Sa pamamaraang ito natatanggap namin ang dalawang parameter - requestat response. Bilang halimbawa, requestang isang katangian na may pangalan dataat naglalaman ng isang string na representasyon ng kasalukuyang petsa ay naka-imbak. Pagkatapos ito ay tinatawag at mga parameter at requestDispatcheripinasa dito . Nagawa na ang handler. Ngayon ay kailangan mong magpadala ng mga kahilingan partikular sa kanya. Hayaan ang anumang paglipat upang humantong sa time.jsp page. Buksan ang web.xml, ipasok ang sumusunod na configuration sa pagitan ng mga tag: 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>
Ang unang tag - servlet- ay tumutukoy sa pangalan ng servlet at tumutukoy sa landas patungo sa klase ng servlet na magpoproseso ng mga kahilingan. Ang pangalawang tag - servlet-mapping- ay nagpapahiwatig na ang servlet na may pangalan timeWorkeray tatawagin kapag may kahilingan para sa url/oras. Ang ikatlong tag -- welcome-file-listay nagpapahiwatig ng file na tatawagin kapag lumipat sa url /. Dapat itong i-configure kung may pangangailangan na baguhin ang default na file. Kasama dito bilang isang halimbawa. Ngayon, kapag pumunta ka sa, ang pamamaraan sa klase /timeay tatawagin at ibabalik ang page time.jsp... na wala. Gawin natin ito sa tabi ng 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>
Classic ang simula, ngunit h1naglalaman ang tag ng appeal sa object request, na naka-frame ng <%=at %>. Ito ay mga template tag. Ang code na nakapaloob sa mga tag na ito ay tinatawag bago ito ipadala sa kliyente. Well, ang mga bagay requestay responsemagagamit sa naturang mga tag sa anumang JSP file. Sa halimbawang ito, ang kasalukuyang oras ng server, na ipinapadala ng servlet, ay papalitan doon TimeWorker. Para sa kaginhawahan, gumawa kami ng link sa index.jsp file /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>
Patakbuhin natin ang halimbawa: Tomcat sa Java - 5Sundin ang link: Tomcat sa Java - 6Mahusay, gumagana ang lahat. Sa halimbawa, nagpatupad kami ng paglipat mula sa pangunahing pahina patungo sa pantulong na pahina, kung saan ipinasa at ipinakita ang isang parameter sa user. Kung mayroon kang mga problema sa pagpapatakbo ng mga servlet, inirerekumenda kong basahin ang post na ito , na nagbibigay ng mga tip sa paglutas ng problemang ito. Para sa isang mas kumpletong pagpapakilala sa mga servlet, inirerekumenda namin ang pagbabasa ng mga artikulo ( bahagi 1 , bahagi 2 ), kung saan inilalarawan nang detalyado ng may-akda ang paglikha ng isang simpleng aplikasyon gamit ang mga servlet at jsp.

Paano mag-embed ng isang application sa isang tumatakbong server

Kahit na ang built-in na Tomcat sa IDEA ay isang maginhawang tampok, ang web application ay maaaring ilipat sa isa pang server at sa isa pang lalagyan. Isaalang-alang natin ang opsyon kapag kailangan mong i-embed ang iyong application sa isang tumatakbo nang server. Una, ito ay kinakailangan upang higit pang maunawaan ang layunin at mga function ng isang servlet container . Ang program na ipinapakita sa halimbawa sa itaas ay isang web application. Ang klase TimeWorkeray isang servlet. Eksklusibong ginagawa ng mga bahagi ang pagpoproseso ng kahilingan. Ang mga sangkap na ito ay dapat na binuo sa isang espesyal na lalagyan ng servlet. Ang layunin ng isang servlet container ay upang suportahan ang mga servlet at tiyakin ang kanilang lifecycle. Ang pinakasimpleng halimbawa ng kung paano gumagana ang Tomcat ay ang pag-scan ng isang partikular na folder upang matukoy kung may lumitaw na bagong servlet dito. Kung oo, simulan ito at ihanda ito upang makatanggap ng mga kahilingan mula sa mga kliyente. Kung ang servlet ay na-update, muling simulan upang i-update ang mga bahagi. Kapag nagtanggal ng servlet, ihinto ang pagpoproseso ng mga kahilingan at alisin ang servlet mula sa Tomcat.

Mga Function ng Servlet Container

  1. Pagpapalitan ng data sa pagitan ng servlet at mga kliyente;
  2. Organisasyon ng mga sesyon ng kliyente;
  3. Paglikha ng isang kapaligiran ng software para sa paggana ng isang servlet;
  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: Tomcat sa Java - 7В появившемся поле нужно нажать на deployed_war. Затем начнется сборка проекта и Intellij IDEA создаст папку out, в которой появится папка artifacts с именем нашего артефакта. В этой папке будет лежать файл deployed_war.war: Tomcat sa Java - 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. Nagbibigay ng napaka-maginhawang pamamahala ng mga pahina ng JSP. Sa katunayan, ang web server ay maaari lamang maghatid ng html. Ang Jasper, isang Tomcat component, ay nag-compile ng code na nilalaman sa mga tag ng template ng JSP page sa isang wastong HTML file na natanggap ng kliyente. Ang lahat ng templating logic ay namamalagi sa loob ng Tomcat, na nagbibigay-daan sa iyong magdagdag ng kahit na kumplikadong mga constructor sa isang klasikong HTML form.

At sa wakas: madalas na ang mga baguhan na developer ay tinatanong ang tanong: posible bang magpatakbo ng isang Java application nang walang mainisang -method. Sa unang sulyap, kung titingnan mo ang mga halimbawa sa itaas, posible. Ang aming servlet ay naisakatuparan nang walang main. Gayunpaman, hindi ito. Ang Tomcat ay may sariling pamamaraan mainna tinatawag kapag nagsimula ang server. Maaari kang mahuli na nagtatanong ng tanong na ito sa isang panayam.

Mga karagdagang link:

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