- تامکت از جاروش آگاه است
- تامکت - چیست؟
- اجزای تامکت
- نصب Tomcat
- چگونه یک برنامه وب ایجاد کنیم
- نحوه قرار دادن یک برنامه در سرور در حال اجرا
- مزایای Tomcat برای توسعه
- لینک های اضافی
تامکت از جاروش آگاه است
Tomcat در سطح 9 از کوئست Java Collections در دوره JavaRush مطالعه می شود. در 2 سخنرانی، Bilaabo به شما می گوید که چگونه Tomcat را دانلود و پیکربندی کنید ، و همچنین اولین برنامه وب خود را بسازید .تامکت - چیست؟
Tomcat یک کانتینر سرولت منبع باز است که به عنوان یک وب سرور نیز عمل می کند. در نگاه اول، تامکت موضوع نسبتاً سنگینی به نظر می رسد، اما اینطور نیست. اکثر برنامه های جاوا با استفاده از خط فرمان راه اندازی می شوند و برخی اقدامات را انجام می دهند. چنین برنامه هایی یک تابع از پیش تعریف شده را پیاده سازی می کنند و پس از آن دیگر اجرا نمی شوند. چنین برنامه هایی معمولاً روشی دارندmain
که از طریق آن می توان آنها را راه اندازی کرد. برنامه وب برای تعامل با مشتری طراحی شده است. در صورت وجود درخواست از سوی مشتری، به آن رسیدگی شده و پاسخی برای کاربر ارسال می شود. اگر نه، برنامه بیکار است. چگونه می توان چنین منطقی را در یک برنامه استاندارد پیاده سازی کرد، با توجه به اینکه نیاز به پشتیبانی از جلسات، پذیرش درخواست های HTTP و غیره دارید؟ چرخه while-true
؟ نه، ما در اینجا به یک راه حل قابل اعتماد نیاز داریم. تامکت برای همین است. در واقع، این یک برنامه جاوا است که از باز کردن پورت برای تعامل مشتری، تنظیم جلسات، تعداد درخواست ها، طول هدر و بسیاری از عملیات های دیگر مراقبت می کند.
اجزای تامکت
Tomcat دارای اجزایی است که عملکردهای خاصی را انجام می دهند که ارزش دانستن در مورد آنها را دارد. بیایید نگاه دقیق تری بیندازیم.کاتالینا
به لطف این مؤلفه، توسعه دهندگان این فرصت را دارند که برنامه های خود را در یک کانتینر مستقر کنند. کاتالینا مشخصات Servlet API، فناوری وب اصلی در برنامه نویسی وب جاوا را پیاده سازی می کند. در واقع، کاتالینا یک کانتینر سرولت در داخل تامکت است (در ادامه این مفهوم را با جزئیات بیشتری بررسی خواهیم کرد).جاسپر
به لطف این جزء، برنامه نویس از فناوری JSP استفاده می کند. این فایلها مانند فایلهای HTML هستند، فقط کد جاوا را تعبیه کردهاند که هنگام ارسال صفحه برای کاربر قابل اجرا هستند. این به شما امکان می دهد تا به صورت پویا هر داده ای را در صفحه جاسازی کنید. جاسپر کدهای جاوا را به HTML تبدیل می کند و همچنین تغییرات را ردیابی می کند و به طور خودکار آنها را به روز می کند.کایوت
این یک جزء مهم است که به درخواستهای HTTP از یک کلاینت در یک پورت خاص گوش میدهد، آن دادهها را برای پردازش در برنامه فراهم میکند و همچنین پاسخها را به کاربران برمیگرداند. یعنی Coyote عملکرد یک سرور HTTP را پیاده سازی می کند. این اجزا را می توان به صورت ساختاری با نمودار زیر توصیف کرد: در اینجا یک نمودار تقریبی از تعامل اجزاء "روی انگشتان" نشان داده شده است. در واقع، روش کار تامکت بسیار پیچیده تر است، اما این برای درک اساسی کافی است.نصب Tomcat
برای استفاده از Tomcat در جاوا، باید روی سیستم نصب شود. شما می توانید در مورد نحوه نصب تامکت در این مقاله بخوانید که سایر سرورهای برنامه را نیز پوشش می دهد. بنابراین، با داشتن یک تامکت فعال در IDEA، می توانید سعی کنید اولین سرور خود را آماده کنید.چگونه یک برنامه وب ایجاد کنیم
برای ایجاد یک برنامه وب، باید به ساختار پوشه خاصی پایبند باشید. IntelliJ IDEA یک تابع تولید برنامه وب در منوی ایجاد پروژه دارد. پس از ایجاد پروژه به این روش، می توانید یک ساختار ساده را مشاهده کنید: در 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 نصب شده باشد، میتوانید سرور برنامه را راهاندازی کنید: کلاینت محتوای فایل 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 را باز کنید، پیکربندی زیر را بین تگ ها وارد کنید: 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 را تعریف می کند و مسیر کلاس 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>
بیایید مثال را اجرا کنیم:
پیوند را دنبال کنید:
عالی، همه چیز کار می کند. در مثال، ما یک انتقال از صفحه اصلی به صفحه کمکی را پیاده سازی کردیم که یک پارامتر به آن ارسال شد و به کاربر نمایش داده شد. اگر در اجرای servlet ها مشکل دارید، توصیه می کنم
این پست را بخوانید که نکاتی را در مورد حل این مشکل ارائه می دهد. برای آشنایی کامل تر با servlet ها، توصیه می کنیم مقالات (
قسمت 1 ،
قسمت 2 ) را مطالعه کنید، جایی که نویسنده به طور مفصل ایجاد یک برنامه کاربردی ساده با استفاده از servlets و jsp را توضیح می دهد.
نحوه قرار دادن یک برنامه در سرور در حال اجرا
اگرچه Tomcat داخلی در IDEA یک ویژگی راحت است، برنامه وب را می توان به سرور دیگری و به ظرف دیگری منتقل کرد. اجازه دهید زمانی که نیاز دارید برنامه خود را در سروری که قبلاً در حال اجرا است جاسازی کنید، گزینه ای را در نظر بگیریم. اول، لازم است که هدف و عملکرد یک ظرف سرولت را بیشتر درک کنیم . برنامه نشان داده شده در مثال بالا یک برنامه وب است. کلاسTimeWorker
یک servlet است. کامپوننت ها منحصراً پردازش درخواست را انجام می دهند. این اجزا باید در یک کانتینر سرولت مخصوص ساخته شوند.
هدف کانتینر سرولت پشتیبانی از سرولت ها و اطمینان از چرخه حیات آنهاست. ساده ترین مثال از نحوه کار تامکت، اسکن کردن یک پوشه خاص برای تعیین اینکه آیا سرور جدیدی در آن ظاهر شده است یا خیر. اگر بله، آن را مقداردهی اولیه کنید و برای دریافت درخواست های مشتریان آماده کنید. اگر servlet به روز شده است، برای به روز رسانی کامپوننت ها مجدداً مقداردهی اولیه کنید. هنگام حذف یک servlet، پردازش درخواست ها را متوقف کنید و سرورلت را از Tomcat حذف کنید.
توابع ظروف Servlet
- تبادل داده بین سرورلت و مشتریان؛
- سازماندهی جلسات مشتری؛
- ایجاد یک محیط نرم افزاری برای عملکرد یک سرولت؛
- Идентификация и авторизация клиентов;
- В большинстве случаев — управление метаданными (заголовки, методы и прочее).
Установка сервлета
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 را ارائه می دهد. در واقع وب سرور فقط می تواند html را سرویس دهد. جاسپر، یک جزء Tomcat، کد موجود در تگ های قالب صفحه JSP را در یک فایل HTML معتبر که توسط مشتری دریافت می شود، جمع آوری می کند. تمام منطق قالب در تامکت قرار دارد و به شما امکان می دهد حتی سازنده های پیچیده را به یک فرم کلاسیک HTML اضافه کنید.
main
روش اجرا کرد؟ در نگاه اول، اگر به مثال های بالا نگاه کنید، امکان پذیر است. سرولت ما بدون
main
. با این حال، اینطور نیست. Tomcat متد مخصوص به خود را دارد
main
که هنگام راه اندازی سرور فراخوانی می شود. شما می توانید با پرسیدن این سوال در یک مصاحبه گرفتار شوید.
GO TO FULL VERSION