JavaRush /مدونة جافا /Random-AR /تومكات في جاوة

تومكات في جاوة

نشرت في المجموعة
في مرحلة ما، يكتسب كل مطور ما يكفي من المهارات التي تجعله يفكر في إنشاء مشروعه الخاص لوضع معرفته موضع التنفيذ. من الأسهل تنفيذ مشروع ويب، نظرًا لأن تنفيذ تطبيق الويب غير مقيد بأي قيود، مثل تطبيقات سطح المكتب. يحتاج العميل فقط إلى متصفح ويمكنه التفاعل مع التطبيق دون تنزيل أي توزيعات. بدون تسجيل ورسائل نصية كما يقولون (رغم أن هذا يعتمد على التطبيق نفسه). القط في جافا - 1لذلك، من أجل تنفيذ تطبيق ويب جيد في Java، لا يمكنك الاستغناء عن أداة تسمى Tomcat. محتوى:

Tomcat على علم بـ Javarush

تتم دراسة Tomcat في المستوى 9 من مهمة Java Collections في دورة JavaRush. في محاضرتين، سيخبرك Bilaabo بكيفية تنزيل Tomcat وتكوينه ، بالإضافة إلى إنشاء تطبيق الويب الأول الخاص بك .

القط - ما هو؟

Tomcat عبارة عن حاوية servlet مفتوحة المصدر تعمل أيضًا كخادم ويب. للوهلة الأولى، يبدو أن Tomcat موضوع ثقيل إلى حد ما، ولكن هذا ليس هو الحال. يتم تشغيل معظم تطبيقات Java باستخدام سطر الأوامر وتنفيذ بعض الإجراءات. تنفذ مثل هذه التطبيقات وظيفة واحدة محددة مسبقًا، وبعد ذلك لا يتم تنفيذها. عادةً ما يكون لمثل هذه البرامج طريقة mainيمكن من خلالها إطلاقها. تم تصميم تطبيق الويب للتفاعل مع العميل. إذا كان هناك طلب من العميل، تتم معالجته وإرسال الرد إلى المستخدم. إذا لم يكن الأمر كذلك، فإن التطبيق خاملاً. كيفية تنفيذ هذا المنطق في تطبيق قياسي، مع العلم أنك بحاجة إلى دعم الجلسات، وقبول طلبات HTTP، وما إلى ذلك؟ دورة while-true؟ لا، نحن بحاجة إلى حل موثوق هنا. هذا هو الغرض من Tomcat. في الواقع، إنه تطبيق Java يعتني بفتح المنفذ لتفاعل العميل وإعداد الجلسات وعدد الطلبات وطول الرأس والعديد من العمليات الأخرى.

مكونات القط

يحتوي Tomcat على مكونات تؤدي وظائف محددة تستحق المعرفة. دعونا نلقي نظرة فاحصة.

كاتالينا

بفضل هذا المكون، يتمتع المطورون بفرصة نشر برامجهم في حاوية. تطبق كاتالينا مواصفات Servlet API، وهي تقنية الويب الأساسية في برمجة الويب Java. في الواقع، كاتالينا عبارة عن حاوية servlet داخل Tomcat (سننظر في هذا المفهوم بمزيد من التفاصيل أدناه).

يشب

بفضل هذا المكون، يستخدم المبرمج تقنية JSP. تشبه هذه ملفات HTML، ولكنها تحتوي فقط على تعليمات برمجية Java مضمنة يمكن تنفيذها عند إرسال الصفحة إلى المستخدم. يتيح لك ذلك تضمين أي بيانات ديناميكيًا في الصفحة. يقوم Jasper بتحويل كود Java إلى HTML، ويتتبع أيضًا التغييرات ويحدثها تلقائيًا.

ذئب امريكى - كايوتى

يعد هذا مكونًا مهمًا يستمع لطلبات HTTP من العميل على منفذ معين، ويوفر تلك البيانات للمعالجة في التطبيق، ويعيد أيضًا الاستجابات للمستخدمين. أي أن Coyote ينفذ وظيفة خادم HTTP. يمكن وصف هذه المكونات هيكليًا من خلال الرسم البياني التالي: القط في جافا - 2يظهر هنا رسم تخطيطي تقريبي لتفاعل المكونات "على الأصابع". في الواقع، الطريقة التي يعمل بها Tomcat أكثر تعقيدًا بكثير، لكن هذا يكفي لفهم أساسي.

تثبيت تومكات

لاستخدام Tomcat في Java، يجب تثبيته على النظام. يمكنك القراءة عن كيفية تثبيت Tomcat في هذه المقالة، والتي تغطي أيضًا خوادم التطبيقات الأخرى. لذلك، مع وجود Tomcat عامل مدمج في IDEA، يمكنك محاولة إعداد servlet الأول الخاص بك.

كيفية إنشاء تطبيق ويب

لإنشاء تطبيق ويب، يجب عليك الالتزام ببنية مجلد محددة. لدى IntelliJ IDEA وظيفة إنشاء تطبيقات الويب في قائمة إنشاء المشروع. بعد إنشاء المشروع بهذه الطريقة، يمكنك رؤية بنية بسيطة: القط في جافا - 3في src، كما هو الحال دائمًا، هناك مصادر، ويتم إنشاء 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، فيمكنك بدء تشغيل خادم التطبيق: القط في جافا - 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-mappingservlet بالاسم عند طلب ذلكtimeWorker رابط/الوقت. تشير العلامة الثالثة - welcome-file-list- إلى الملف الذي سيتم استدعاؤه عند التبديل إلى url /. يجب تكوين هذا إذا كانت هناك حاجة لتغيير الملف الافتراضي. المدرجة هنا كمثال. الآن، عندما تذهب إلى، /timeسيتم استدعاء الطريقة doGetالموجودة في الفصل TimeWorkerوإرجاع الصفحة time.jsp... وهي غير موجودة. لنقم بإنشائه بجوار ملف Index.jsp:
<%@ 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، الذي تم تأطيره بـ <%=و %>. هذه هي علامات القالب. يتم استدعاء الكود الموجود في هذه العلامات قبل إرساله إلى العميل. حسنًا، الكائنات requestمتوفرة responseفي مثل هذه العلامات في أي ملف JSP. في هذا المثال، سيتم استبدال وقت الخادم الحالي، الذي يتم إرساله بواسطة 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رائع، كل شيء يعمل. في المثال، قمنا بتنفيذ الانتقال من الصفحة الرئيسية إلى الصفحة المساعدة، والتي تم تمرير المعلمة إليها وعرضها للمستخدم. إذا كانت لديك مشكلات في تشغيل servlets، أوصي بقراءة هذا المنشور الذي يقدم نصائح حول حل هذه المشكلة. للحصول على مقدمة أكثر اكتمالا عن servlets، نوصي بقراءة المقالات ( الجزء 1 ، الجزء 2 )، حيث يصف المؤلف بالتفصيل إنشاء تطبيق بسيط باستخدام servlets و jsp.

كيفية تضمين تطبيق في خادم قيد التشغيل

على الرغم من أن Tomcat المدمج في IDEA يعد ميزة ملائمة، إلا أنه يمكن نقل تطبيق الويب إلى خادم آخر وإلى حاوية أخرى. دعونا نفكر في الخيار عندما تحتاج إلى تضمين التطبيق الخاص بك في خادم قيد التشغيل بالفعل. أولاً، من الضروري فهم غرض ووظائف حاوية servlet بشكل أكبر . البرنامج الموضح في المثال أعلاه هو تطبيق ويب. الفصل TimeWorkerعبارة عن servlet. تقوم المكونات حصريًا بمعالجة الطلب. يجب أن يتم بناء هذه المكونات في حاوية servlet خاصة. الغرض من حاوية servlet هو دعم servlet وضمان دورة حياتها. أبسط مثال لكيفية عمل Tomcat هو فحص مجلد معين لتحديد ما إذا كان قد ظهر servlet جديد فيه. إذا كانت الإجابة بنعم، فقم بتهيئته وإعداده لتلقي الطلبات من العملاء. إذا تم تحديث servlet، قم بإعادة التهيئة لتحديث المكونات. عند حذف servlet، توقف عن معالجة الطلبات وقم بإزالة servlet من Tomcat.

وظائف حاوية Servlet

  1. تبادل البيانات بين servlet والعملاء؛
  2. تنظيم جلسات العملاء.
  3. إنشاء بيئة برمجية لتشغيل 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: القط في جافا - 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 فقط. يقوم Jasper، أحد مكونات Tomcat، بتجميع التعليمات البرمجية الموجودة في علامات قالب صفحة JSP في ملف HTML صالح يتلقاه العميل. كل منطق القوالب موجود داخل Tomcat، مما يسمح لك بإضافة مُنشئات معقدة إلى نموذج HTML الكلاسيكي.

وأخيرًا: في كثير من الأحيان يُطرح على المطورين المبتدئين السؤال التالي: هل من الممكن تشغيل تطبيق Java بدون mainطريقة. للوهلة الأولى، إذا نظرت إلى الأمثلة أعلاه، فمن الممكن. تم تنفيذ servlet الخاص بنا بدون main. ومع ذلك، فهو ليس كذلك. لدى Tomcat طريقته الخاصة mainالتي يتم استدعاؤها عند بدء تشغيل الخادم. من الممكن أن يتم القبض عليك وأنت تسأل هذا السؤال في المقابلة.

روابط إضافية:

تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION