logo

Вступ до сервлетів Java

Сьогодні ми всі усвідомлюємо необхідність творити динамічні веб-сторінки тобто ті, які можуть змінювати вміст сайту відповідно до часу або можуть генерувати вміст відповідно до запиту, отриманого від клієнта. Якщо вам подобається кодувати на Java, ви будете раді дізнатися, що за допомогою Java також існує спосіб генерувати динамічні веб-сторінки, і цей спосіб Java Servlet . Але перш ніж ми перейдемо до нашої теми, давайте спочатку зрозуміємо потребу в розширеннях на стороні сервера.

Що таке Java Servlet?

Сервлети Java — це програми Java, які виконуються на веб-сервері або сервері додатків із підтримкою Java. Вони використовуються для обробки запиту, отриманого від веб-сервера, обробки запиту, отримання відповіді та надсилання відповіді назад на веб-сервер.



Властивості Java Servlet

Властивості сервлетів такі:

  • Сервлети працюють на стороні сервера.
  • Сервлети здатні обробляти складні запити, отримані від веб-сервера.

Архітектура сервлетів Java

Архітектуру сервлету можна зобразити на самому зображенні, як показано нижче:

java для типів циклів

Servlets_architecture



Виконання сервлетів Java

В основному виконання сервлетів передбачає шість основних кроків:

  1. Клієнти надсилають запит на веб-сервер.
  2. Веб-сервер отримує запит.
  3. Веб-сервер передає запит відповідному сервлету.
  4. Сервлет обробляє запит і генерує відповідь у формі виводу.
  5. Сервлет надсилає відповідь на веб-сервер.
  6. Веб-сервер надсилає відповідь клієнту, а клієнтський браузер відображає її на екрані.

Тепер давайте обговоримо ексцентричний момент, навіщо нам потрібні розширення на стороні сервера?

Необхідність серверних розширень

The Серверні розширення це не що інше, як технології, які використовуються для створення динамічних веб-сторінок. Фактично, щоб забезпечити можливості динамічних веб-сторінок, веб-сторінкам потрібен контейнер або веб-сервер. Щоб задовольнити цю вимогу, незалежні постачальники веб-серверів пропонують деякі власні рішення у формі API ( Інтерфейс прикладного програмування).
Ці API дозволяють нам створювати програми, які можуть працювати з веб-сервером. В цьому випадку, Java Servlet також є одним із компонентів API Java Platform Enterprise Edition (зараз відома як «Jakarta EE») який встановлює стандарти для створення динамічних веб-додатків на Java.



Перш ніж дізнатися про щось, важливо знати потребу в цьому чомусь, це не те, що це єдина доступна технологія для створення динамічних веб-сторінок. Технологія Servlet подібна до інших розширень веб-сервера, таких як Загальний інтерфейс шлюзу ( CGI) сценарії та Препроцесор гіпертексту (PHP). Однак Java Servlets більш прийнятні, оскільки вони усувають обмеження CGI такі як низька продуктивність і низький ступінь масштабованості.

Що таке CGI (загальний інтерфейс шлюзу)?

CGI це фактично зовнішня програма, написана за допомогою будь-якої з мов програмування, наприклад C або C++ і це відповідає за обробку запитів клієнтів і створення динамічного вмісту.

вовк проти лисиці

У програмі CGI, коли клієнт робить запит на доступ до динамічних веб-сторінок, веб-сервер виконує такі операції:

  • Спочатку він знаходить запитану веб-сторінку тобто необхідну програму CGI за допомогою URL-адреси.
  • Потім створюється новий процес для обслуговування запиту клієнта.
  • Викликає програму CGI в рамках процесу та передає програмі інформацію про запит.
  • Збирає відповідь із програми CGI.
  • Знищує процес, готує відповідь HTTP та надсилає її клієнту.

CGI

Отже, в CGI сервер повинен створити та знищити процес для кожного запиту. Легко зрозуміти, що цей підхід застосовний для обробки невеликої кількості клієнтів, але зі збільшенням кількості клієнтів збільшується навантаження на сервер, а отже, час, потрібний для обробки запитів, збільшується.

Різниця між сервлетами Java і CGI

Сервлет CGI (загальний інтерфейс шлюзу)
Сервлети портативні та ефективні. CGI не є портативним.
У сервлетах можливий обмін даними. У CGI обмін даними неможливий.
Сервлети можуть безпосередньо спілкуватися з веб-сервером. CGI не може безпосередньо спілкуватися з веб-сервером.
Сервлети дешевші, ніж CGI. CGI дорожчий, ніж сервлети.
Сервлети можуть обробляти файли cookie. CGI не може обробляти файли cookie.

API сервлетів

Сервлети складаються з двох пакетів:

  • javax.servlet(Базовий)
  • javax.servlet.http(Advance)

Різні класи та інтерфейси, присутні в цих пакетах:

символ до int у java
компонент Тип Пакет
Сервлет Інтерфейс javax.servlet.*
ServletRequest Інтерфейс javax.servlet.*
ServletResponse Інтерфейс javax.servlet.*
GenericServlet Клас javax.servlet.*
HttpServlet Клас javax.servlet.http.*
HttpServletRequest Інтерфейс javax.servlet.http.*
HttpServletResponse Інтерфейс javax.servlet.http.*
фільтр Інтерфейс javax.servlet.*
ServletConfig Інтерфейс javax.servlet.*

Переваги Java Servlet

  • Сервлет є швидше ніж CGI, оскільки він не передбачає створення нового процесу для кожного нового отриманого запиту.
  • Сервлети, написані на Java, не залежать від платформи.
  • Усуває накладні витрати на створення a новий процес для кожного запиту, оскільки Servlet не виконується в окремому процесі. Існує лише один екземпляр, який обробляє всі запити одночасно. Це також економить пам’ять і дозволяє сервлету легко керувати станом клієнта.
  • Це серверний компонент, тому Servlet успадковує безпеки надається веб-сервером.
  • The API розроблений для Java Servlet автоматично отримує переваги платформ Java, такі як незалежність від платформи та портативність. Крім того, він, очевидно, може використовувати широкий спектр API, створених на платформах Java, таких як JDBC для доступу до бази даних.
  • Багато веб-серверів, придатних для особистого користування або веб-сайтів із низьким трафіком, пропонуються безкоштовно або за дуже високою ціною дешеві витрати напр. Сервлет Java. Однак більшість веб-серверів комерційного рівня є досить дорогими, за помітним винятком Apache, який є безкоштовним.

Контейнер сервлетів

Контейнер для сервлетів , також відомий як двигун сервлетів, це інтегрований набір об’єктів, які забезпечують середовище виконання для компонентів Java Servlet. Простими словами, це система, яка керує компонентами Java Servlet поверх веб-сервера для обробки запитів веб-клієнта.

Сервіси, які надає контейнер Servlet:

  • Послуги мережі: Завантажує клас Servlet. Завантаження може відбуватися з локальної файлової системи, віддаленої файлової системи або інших мережевих служб. Контейнер Servlet забезпечує мережеві служби, через які надсилаються запит і відповідь.
  • Декодування та кодування повідомлень на основі MIME: Надає послугу декодування та кодування повідомлень на основі MIME.
  • Керувати контейнером Servlet: Керує життєвим циклом сервлета.
  • Управління ресурсами Керує статичними та динамічними ресурсами, такими як HTML-файли, сервлети та JSP-сторінки.
  • Служба безпеки: Займається авторизацією та автентифікацією доступу до ресурсів.
  • Керування сеансом: Підтримує сеанс, додаючи a ідентифікатор сесії до URL-шляху.

Висновок

Сервлети Java є ключовими компонентами для визначення бізнес-логіки та обробки складних веб-запитів. Ці компоненти сприяють динамічному розвитку веб-сайту та мають великий потенціал для зміни динаміки програми. Ось деякі з ключових функцій, про які ми дізнаємося в цій статті:

  • Сервлети Java допомагають у розробці програм на стороні сервера та забезпечують спосіб роботи з динамічним вмістом для створення надійних та інтерактивних веб-сайтів.
  • Як тільки запит досягає веб-сервера, екземпляр сервлета ініціалізується за допомогою тепло() метод, а запит HTTP залежно від його типу може оброблятися методами doGet() або doPost().
  • Сервлети роблять нашу веб-програму більш сприйнятливою та ефективнішою, оскільки вона не створює та не знищує процес кожного разу, коли надходить запит.

Поширені запитання про Java Servlet

Q1. Що таке життєвий цикл Java Servlet?

Java Servlet має попередньо визначений життєвий цикл, починаючи з ініціалізації (виділення пам’яті) до знищення об’єкта (звільнення пам’яті). Це відбувається в наступні кроки:

розміром чайної ложки
  1. init() – викликається, як тільки веб-сервер отримує запит і ініціалізується новий екземпляр сервлета.
  2. service() – для обробки запиту клієнта та перенаправлення запиту на відповідний doGet() або doPost()
  3. destroy() – викликається під час обробки запиту, відповідь надсилається назад клієнту та, нарешті, звільняється пам’ять, виділена сервлету.

Q2. Як налаштувати Java Servlet?

Конфігурація Java Servlet визначається всередині a дескриптор розгортання файл – web.xml. Хоча зараз це застаріло, оскільки більшість додатків на основі сервлетів нині використовують конфігурацію на основі анотацій для налаштування сервлета Java за допомогою анотації @WebServlet.

Приклад: @WebServlet(name = MyServlet, urlPatterns = /myServlet)

Q3. Що таке сервлет-фільтр?

Сервлет-фільтр є додатковим компонентом для виконання попередньої обробки веб-запитів, як-от журналювання, моніторинг, налагодження та усунення несправностей.