JavaRush /وبلاگ جاوا /Random-FA /تامکت در جاوا

تامکت در جاوا

در گروه منتشر شد
در برخی مواقع، هر توسعه‌دهنده‌ای مهارت‌های کافی به دست می‌آورد که به فکر ایجاد پروژه خود می‌افتد تا دانش خود را عملی کند. اجرای یک پروژه وب ساده ترین کار است، زیرا اجرای یک برنامه وب با هیچ محدودیتی، مانند برنامه های دسکتاپ، محدود نمی شود. مشتری فقط به یک مرورگر نیاز دارد و می تواند بدون دانلود هیچ توزیعی با برنامه تعامل داشته باشد. همانطور که می گویند بدون ثبت نام و پیامک (اگرچه این بستگی به خود برنامه دارد). تامکت در جاوا - 1بنابراین، برای پیاده سازی یک برنامه وب خوب در جاوا، نمی توانید بدون ابزاری به نام Tomcat کار کنید. محتوا:

تامکت از جاروش آگاه است

Tomcat در سطح 9 از کوئست Java Collections در دوره JavaRush مطالعه می شود. در 2 سخنرانی، Bilaabo به شما می گوید که چگونه Tomcat را دانلود و پیکربندی کنید ، و همچنین اولین برنامه وب خود را بسازید .

تامکت - چیست؟

Tomcat یک کانتینر سرولت منبع باز است که به عنوان یک وب سرور نیز عمل می کند. در نگاه اول، تامکت موضوع نسبتاً سنگینی به نظر می رسد، اما اینطور نیست. اکثر برنامه های جاوا با استفاده از خط فرمان راه اندازی می شوند و برخی اقدامات را انجام می دهند. چنین برنامه هایی یک تابع از پیش تعریف شده را پیاده سازی می کنند و پس از آن دیگر اجرا نمی شوند. چنین برنامه هایی معمولاً روشی دارند mainکه از طریق آن می توان آنها را راه اندازی کرد. برنامه وب برای تعامل با مشتری طراحی شده است. در صورت وجود درخواست از سوی مشتری، به آن رسیدگی شده و پاسخی برای کاربر ارسال می شود. اگر نه، برنامه بیکار است. چگونه می توان چنین منطقی را در یک برنامه استاندارد پیاده سازی کرد، با توجه به اینکه نیاز به پشتیبانی از جلسات، پذیرش درخواست های HTTP و غیره دارید؟ چرخه while-true؟ نه، ما در اینجا به یک راه حل قابل اعتماد نیاز داریم. تامکت برای همین است. در واقع، این یک برنامه جاوا است که از باز کردن پورت برای تعامل مشتری، تنظیم جلسات، تعداد درخواست ها، طول هدر و بسیاری از عملیات های دیگر مراقبت می کند.

اجزای تامکت

Tomcat دارای اجزایی است که عملکردهای خاصی را انجام می دهند که ارزش دانستن در مورد آنها را دارد. بیایید نگاه دقیق تری بیندازیم.

کاتالینا

به لطف این مؤلفه، توسعه دهندگان این فرصت را دارند که برنامه های خود را در یک کانتینر مستقر کنند. کاتالینا مشخصات Servlet API، فناوری وب اصلی در برنامه نویسی وب جاوا را پیاده سازی می کند. در واقع، کاتالینا یک کانتینر سرولت در داخل تامکت است (در ادامه این مفهوم را با جزئیات بیشتری بررسی خواهیم کرد).

جاسپر

به لطف این جزء، برنامه نویس از فناوری JSP استفاده می کند. این فایل‌ها مانند فایل‌های HTML هستند، فقط کد جاوا را تعبیه کرده‌اند که هنگام ارسال صفحه برای کاربر قابل اجرا هستند. این به شما امکان می دهد تا به صورت پویا هر داده ای را در صفحه جاسازی کنید. جاسپر کدهای جاوا را به HTML تبدیل می کند و همچنین تغییرات را ردیابی می کند و به طور خودکار آنها را به روز می کند.

کایوت

این یک جزء مهم است که به درخواست‌های HTTP از یک کلاینت در یک پورت خاص گوش می‌دهد، آن داده‌ها را برای پردازش در برنامه فراهم می‌کند و همچنین پاسخ‌ها را به کاربران برمی‌گرداند. یعنی Coyote عملکرد یک سرور HTTP را پیاده سازی می کند. این اجزا را می توان به صورت ساختاری با نمودار زیر توصیف کرد: تامکت در جاوا - 2در اینجا یک نمودار تقریبی از تعامل اجزاء "روی انگشتان" نشان داده شده است. در واقع، روش کار تامکت بسیار پیچیده تر است، اما این برای درک اساسی کافی است.

نصب Tomcat

برای استفاده از Tomcat در جاوا، باید روی سیستم نصب شود. شما می توانید در مورد نحوه نصب تامکت در این مقاله بخوانید که سایر سرورهای برنامه را نیز پوشش می دهد. بنابراین، با داشتن یک تامکت فعال در IDEA، می توانید سعی کنید اولین سرور خود را آماده کنید.

چگونه یک برنامه وب ایجاد کنیم

برای ایجاد یک برنامه وب، باید به ساختار پوشه خاصی پایبند باشید. IntelliJ IDEA یک تابع تولید برنامه وب در منوی ایجاد پروژه دارد. پس از ایجاد پروژه به این روش، می توانید یک ساختار ساده را مشاهده کنید: تامکت در جاوا - 3در src، مانند همیشه، منابع وجود دارد و در پوشه وب web.xml و index.jsp تولید می شوند. web.xml دستورالعملی برای تامکت است که در آن به دنبال کنترل کننده درخواست و سایر اطلاعات بگردید. 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 نصب شده باشد، می‌توانید سرور برنامه را راه‌اندازی کنید: تامکت در جاوا - 4کلاینت محتوای فایل index.jsp را در مرورگر دریافت می‌کند که به '/'، یعنی به صفحه اصلی هدایت می‌شود. اکنون بیایید یک پیوند به صفحه ای که زمان سرور فعلی در آن قرار دارد اضافه کنیم. برای ایجاد اولین servlet خود، باید از کتابخانه servlet-api.jar که با Tomcat ارائه می شود (در پوشه lib یافت می شود) استفاده کنید. بیایید یک servlet ایجاد کنیم که زمان فعلی سرور را در صفحه نمایش دهد. برای این کار باید یک کلاس ایجاد کنید 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 را تعریف می کند و مسیر کلاس servlet را که درخواست ها را پردازش می کند، مشخص می کند. تگ دوم - servlet-mapping- نشان می دهد که سرور با نام timeWorkerدر هنگام درخواست فراخوانی می شود آدرس/زمان سومین تگ - welcome-file-list- نشان دهنده فایلی است که هنگام تغییر به url /. در صورت نیاز به تغییر فایل پیش فرض، این باید پیکربندی شود. به عنوان نمونه در اینجا گنجانده شده است. حالا با رفتن به، متد موجود در کلاس /timeفراخوانی می شود و page 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حاوی جذابیتی برای شی است requestکه توسط <%=و قاب شده است %>. اینها برچسب های قالب هستند. کد محصور شده در این تگ ها قبل از ارسال به مشتری فراخوانی می شود. خوب، اشیاء در چنین برچسب هایی در هر فایل JSP موجود requestهستند . responseدر این مثال، زمان سرور فعلی که توسط servlet منتقل می شود، در آنجا جایگزین می شود TimeWorker. برای راحتی کار، پیوندی به فایل index.jsp ایجاد می کنیم /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>
بیایید مثال را اجرا کنیم: تامکت در جاوا - 5پیوند را دنبال کنید: تامکت در جاوا - 6عالی، همه چیز کار می کند. در مثال، ما یک انتقال از صفحه اصلی به صفحه کمکی را پیاده سازی کردیم که یک پارامتر به آن ارسال شد و به کاربر نمایش داده شد. اگر در اجرای servlet ها مشکل دارید، توصیه می کنم این پست را بخوانید که نکاتی را در مورد حل این مشکل ارائه می دهد. برای آشنایی کامل تر با servlet ها، توصیه می کنیم مقالات ( قسمت 1 ، قسمت 2 ) را مطالعه کنید، جایی که نویسنده به طور مفصل ایجاد یک برنامه کاربردی ساده با استفاده از servlets و jsp را توضیح می دهد.

نحوه قرار دادن یک برنامه در سرور در حال اجرا

اگرچه Tomcat داخلی در IDEA یک ویژگی راحت است، برنامه وب را می توان به سرور دیگری و به ظرف دیگری منتقل کرد. اجازه دهید زمانی که نیاز دارید برنامه خود را در سروری که قبلاً در حال اجرا است جاسازی کنید، گزینه ای را در نظر بگیریم. اول، لازم است که هدف و عملکرد یک ظرف سرولت را بیشتر درک کنیم . برنامه نشان داده شده در مثال بالا یک برنامه وب است. کلاس TimeWorkerیک servlet است. کامپوننت ها منحصراً پردازش درخواست را انجام می دهند. این اجزا باید در یک کانتینر سرولت مخصوص ساخته شوند. هدف کانتینر سرولت پشتیبانی از سرولت ها و اطمینان از چرخه حیات آنهاست. ساده ترین مثال از نحوه کار تامکت، اسکن کردن یک پوشه خاص برای تعیین اینکه آیا سرور جدیدی در آن ظاهر شده است یا خیر. اگر بله، آن را مقداردهی اولیه کنید و برای دریافت درخواست های مشتریان آماده کنید. اگر servlet به روز شده است، برای به روز رسانی کامپوننت ها مجدداً مقداردهی اولیه کنید. هنگام حذف یک servlet، پردازش درخواست ها را متوقف کنید و سرورلت را از Tomcat حذف کنید.

توابع ظروف Servlet

  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: تامکت در جاوا - 7В появившемся поле нужно нажать на deployed_war. Затем начнется сборка проекта и Intellij IDEA создаст папку out, в которой появится папка artifacts с именем нашего артефакта. В этой папке будет лежать файл deployed_war.war: تامکت در جاوا - 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 را ارائه می دهد. در واقع وب سرور فقط می تواند html را سرویس دهد. جاسپر، یک جزء Tomcat، کد موجود در تگ های قالب صفحه JSP را در یک فایل HTML معتبر که توسط مشتری دریافت می شود، جمع آوری می کند. تمام منطق قالب در تامکت قرار دارد و به شما امکان می دهد حتی سازنده های پیچیده را به یک فرم کلاسیک HTML اضافه کنید.

و در نهایت: اغلب اوقات از توسعه دهندگان مبتدی این سوال پرسیده می شود: آیا می توان یک برنامه جاوا را بدون mainروش اجرا کرد؟ در نگاه اول، اگر به مثال های بالا نگاه کنید، امکان پذیر است. سرولت ما بدون main. با این حال، اینطور نیست. Tomcat متد مخصوص به خود را دارد mainکه هنگام راه اندازی سرور فراخوانی می شود. شما می توانید با پرسیدن این سوال در یک مصاحبه گرفتار شوید.

لینک های اضافی:

نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION