JavaRush /בלוג Java /Random-HE /Tomcat בג'אווה

Tomcat בג'אווה

פורסם בקבוצה
בשלב מסוים, כל מפתח צובר מספיק כישורים שהוא חושב על יצירת פרויקט משלו כדי ליישם את הידע שלו. זה הכי קל לקחת על עצמו פרויקט אינטרנט, מכיוון שהיישום של יישום אינטרנט אינו מוגבל על ידי הגבלות כלשהן, כגון יישומי שולחן עבודה. הלקוח צריך רק דפדפן ויכול ליצור אינטראקציה עם האפליקציה מבלי להוריד הפצות כלשהן. בלי רישום ו-SMS, כמו שאומרים (למרות שזה תלוי באפליקציה עצמה). Tomcat בג'אווה - 1לכן, כדי ליישם יישום אינטרנט טוב ב-Java, אתה לא יכול להסתדר בלי כלי שנקרא Tomcat. תוֹכֶן:

Tomcat מודע ל-Javarush

Tomcat נלמד ברמה 9 של קווסט Java Collections בקורס JavaRush. ב-2 הרצאות, Bilaabo יגיד לך כיצד להוריד ולהגדיר את Tomcat , כמו גם לבנות את יישום האינטרנט הראשון שלך .

Tomcat - מה זה?

Tomcat הוא מיכל שרת קוד פתוח הפועל גם כשרת אינטרנט. במבט ראשון, Tomcat נראה כמו נושא כבד למדי, אבל זה לא המקרה. רוב יישומי Java מופעלים באמצעות שורת הפקודה ומבצעים כמה פעולות. יישומים כאלה מיישמים פונקציה מוגדרת מראש אחת, שלאחריה הם אינם מבוצעים עוד. לתוכניות כאלה יש בדרך כלל שיטה mainשבאמצעותה ניתן להפעיל אותן. אפליקציית האינטרנט מיועדת לאינטראקציה עם הלקוח. אם יש בקשה מהלקוח, היא מעובדת ונשלחת תגובה למשתמש. אם לא, האפליקציה לא פעילה. כיצד ליישם היגיון כזה באפליקציה סטנדרטית, בהתחשב בכך שאתה צריך לתמוך בהפעלות, לקבל בקשות HTTP וכו'? מחזור while-true? לא, אנחנו צריכים כאן פתרון אמין. בשביל זה יש Tomcat. למעשה מדובר באפליקציית Java שדואגת לפתיחת הפורט לאינטראקציה עם הלקוח, הגדרת סשנים, מספר בקשות, אורך כותרת ועוד פעולות רבות.

רכיבי Tomcat

ל- Tomcat יש רכיבים שמבצעים פונקציות ספציפיות שכדאי לדעת עליהם. בואו נסתכל מקרוב.

קטלינה

הודות לרכיב זה, למפתחים יש הזדמנות לפרוס את התוכניות שלהם בקונטיינר. Catalina מיישמת את מפרט ה-API של Servlet, טכנולוגיית הליבה של האינטרנט בתכנות אינטרנט Java. למעשה, Catalina היא מיכל servlet בתוך Tomcat (נתבונן במושג זה ביתר פירוט בהמשך).

יָשׁפֵה

הודות לרכיב זה, המתכנת משתמש בטכנולוגיית JSP. אלו הם כמו קבצי HTML, רק שיש בהם קוד Java מוטבע שניתן להפעיל כאשר הדף נשלח למשתמש. זה מאפשר לך להטמיע באופן דינמי כל נתונים בדף. ג'ספר הופך את קוד Java ל-HTML, וגם עוקב אחר שינויים ומעדכן אותם באופן אוטומטי.

זְאֵב עֲרָבוֹת

זהו רכיב חשוב שמאזין לבקשות HTTP מלקוח בפורט ספציפי, מספק את הנתונים הללו לעיבוד באפליקציה, וגם מחזיר תגובות למשתמשים. כלומר, Coyote מיישמת את הפונקציונליות של שרת HTTP. ניתן לתאר רכיבים אלו מבחינה מבנית על ידי התרשים הבא: Tomcat בג'אווה - 2כאן מוצג תרשים משוער של האינטראקציה של הרכיבים "על האצבעות". למעשה, הדרך שבה Tomcat עובד היא הרבה יותר מורכבת, אבל זה מספיק להבנה בסיסית.

התקנת Tomcat

כדי להשתמש ב-Tomcat ב-Java, זה צריך להיות מותקן על המערכת. אתה יכול לקרוא על אופן התקנת Tomcat במאמר זה, אשר מכסה גם שרתי יישומים אחרים. אז, עם Tomcat עובד מובנה ב-IDEA, אתה יכול לנסות להכין את הסרבלט הראשון שלך.

כיצד ליצור יישום אינטרנט

כדי ליצור יישום אינטרנט, עליך לדבוק במבנה תיקיות ספציפי. ל- IntelliJ IDEA יש פונקציית יצירת יישומי אינטרנט בתפריט יצירת הפרויקט. לאחר יצירת הפרויקט בצורה זו, אתה יכול לראות מבנה פשוט: Tomcat בג'אווה - 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, ניתן להפעיל את שרת היישומים: Tomcat בג'אווה - 4הלקוח מקבל את תוכן הקובץ index.jsp בדפדפן כאשר הוא מנווט אל '/', כלומר לעמוד הראשי. כעת נוסיף קישור לדף בו יתמקם זמן השרת הנוכחי. כדי ליצור את הסרבלט הראשון שלך, עליך להשתמש בספריית 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תיקרא ותחזיר את העמוד 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, אשר ממוסגר על ידי <%=ו %>. אלו תגיות תבנית. הקוד המצורף בתגים אלה נקרא לפני שליחתו ללקוח. ובכן, אובייקטים 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>
בואו נריץ את הדוגמה: Tomcat בג'אווה - 5עקוב אחר הקישור: Tomcat בג'אווה - 6מעולה, הכל עובד. בדוגמה הטמענו מעבר מהעמוד הראשי לדף העזר אליו הועבר פרמטר והוצג למשתמש. אם יש לך בעיות בהפעלת servlets, אני ממליץ לקרוא את הפוסט הזה , שנותן עצות לפתרון בעיה זו. להקדמה מלאה יותר ל-servlets, אנו ממליצים לקרוא את המאמרים ( חלק 1 , חלק 2 ), שבהם המחבר מתאר בפירוט את יצירת אפליקציה פשוטה באמצעות servlets ו-jsp.

כיצד להטמיע אפליקציה בשרת פועל

למרות שהטומקט המובנה ב-IDEA הוא תכונה נוחה, ניתן להעביר את אפליקציית האינטרנט לשרת אחר ולמכולה אחרת. הבה נשקול את האפשרות כאשר אתה צריך להטמיע את היישום שלך בשרת שכבר פועל. ראשית, יש צורך להבין יותר את המטרה והתפקודים של מיכל servlet . התוכנית המוצגת בדוגמה למעלה היא יישום אינטרנט. הכיתה TimeWorkerהיא סרבלט. רכיבים מבצעים באופן בלעדי עיבוד בקשות. רכיבים אלה חייבים להיות מובנים בתוך מיכל servlet מיוחד. המטרה של מיכל servlet היא לתמוך ב-servlets ולהבטיח את מחזור החיים שלהם. הדוגמה הפשוטה ביותר לאופן שבו Tomcat עובד היא סריקת תיקיה ספציפית כדי לקבוע אם הופיע בה סרבלט חדש. אם כן, אתחל אותו והכין אותו לקבלת בקשות מלקוחות. אם ה-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: Tomcat בג'אווה - 7В появившемся поле нужно нажать на deployed_war. Затем начнется сборка проекта и Intellij IDEA создаст папку out, в которой появится папка artifacts с именем нашего артефакта. В этой папке будет лежать файл deployed_war.war: Tomcat בג'אווה - 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 קלאסי.

ולבסוף: לעתים קרובות מאוד שואלים מפתחים מתחילים את השאלה: האם ניתן להריץ אפליקציית ג'אווה ללא main-שיטה. במבט ראשון, אם מסתכלים על הדוגמאות לעיל, זה אפשרי. הסרבלט שלנו הוצא להורג ללא ה main. עם זאת, זה לא. ל- Tomcat יש שיטה משלה mainשנקראת כשהשרת מתחיל. אתה יכול להיתפס כשאתה שואל את השאלה הזו בראיון.

קישורים נוספים:

הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION