В даному матеріалі мова піде про Java Servlet. Розберемось що таке сервлет і як він повʼязаний з веб розробкою на Java.
Servlet — це клас Java, який запускається на веб-сервері або сервері додатків із підтримкою Java. Він використовується для обробки запиту, отриманого від веб-сервера, отримання відповіді, а потім надсилання відповіді назад на веб-сервер.
Пакети javax.servlet і javax.servlet.http надають інтерфейси та класи для написання сервлетів. Щоб ваш клас став сервлетом, він повинен успадкувати HttpServlet. Далі потрібно перевизначити методи doGet і doPost, для обробки відповідно GET і POST HTTP запитів.

Контейнер сервлетів
Сам по собі клас сервлет нічого робити не може. Навіть якщо ви написали методи обробки і перенаправлення запитів, зуміли запустити свою програму – обробляти запити вона не вмітиме. Зверніть увагу на зображення вище. Перед тим як запит потрапляє в Java Servlet, він спочатку проходить через веб сервер.
Веб сервер це спеціальне програмне забезпечення яке встановлюється на компʼютер. Воно дає змогу приймати вхідні запити від клієнтів. В нашому випадку це HTTP запити від браузера. Однак клієнтом може виступати як браузер, мобільний додаток, інший сервер і тд.
Існує досить багато вебсерверів, як платних так і безкоштовних, які можуть слугувати нам для приймання запитів і перенаправлення їх на Java Servlet. Ми зупинимось на Apache Tomcat.
Apache Tomcat — це вебсервер написаний мовою програмування Java. Розробляється Apache Software Foundation як вільне та відкрите програмне забезпечення. В термінології Java, Apache Tomcat це контейнер сервлетів.
Таким чином, спочатку запит від браузера буде перехоплений контейнером сервлетів. Далі він направить запит в наш сервлет. Сервлет опрацює запит і відправить відповідь назад до томкат. Далі відповідь отримає браузер і відобразить інформацію користувачеві.
Життєвий цикл сервлету
Servlet має визначений життєвий цикл, яким керує контейнер сервлетів. У наших прикладах це Apache Tomcat. Під час роботи нашого додатку контейнер сервлетів (Tomcat) завантажує, ініціалізує та керує життєвим циклом сервлета.
Коли ми тільки запустили наш веб сервер, Tomcat завантажує та ініціалізує наш сервлет, викликавши його метод init(). Коли користувач вводить адресу нашого додатка в браузері, створюється окремий потік, у якому викликається метод service() для обробки запитів клієнта. Метод service() призначений для одночасної обробки безлічі запитів. Коли додаток завершує роботу, викликається метод destroy() і сервлет вивантажується з пам’яті.
Коли ми говоримо про те, що спрацьовує метод service або destroy – це означає, що вони можуть викликатися без нашої участі. Ви можете наприклад помістити код звільнення зайнятих сервлетом ресурсів в метод destroy(), але викликати чи перевизначати ці методи необов’язково.
Приклад Java Servlet
Тепер, коли ми розібрались з теорією, можна приступити до написання прикладу. Щоб звичайний Java клас став сервлетом, потрібно успадкувати його від HttpServlet.
В свою чергу HttpServlet знаходиться в пакеті javax.servlet.http.HttpServlet бібліотеки javaee-web-api.
Тому перед тим як створювати клас, потрібно додати залежність до нашого проєкту:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>8.0</version>
<scope>provided</scope>
</dependency>
Ще не знаєте що таке залежності і Maven? Тоді треба прочитати Що таке Maven.
Тепер можна успадкувати клас від HttpServlet і реалізувати потрібні нам HTTP методи.
package org.example.controller;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/") //анотація яка вказує який шлях буде слухати сервлет
public class HomeServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//logic for get method
String username = req.getParameter("username");//отримання параметру з запиту
System.out.println("Hi " + username);
req.getRequestDispatcher("/hi.jsp").forward(req, resp);//перенаправлення запиту на hi.jsp сторінку
//сторінка hi.jsp знаходиться в папці webapp
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//logic for post method
}
}
Структура моїх класів і папок виглядає таким чином:

Після того, як вся логіка написана і ви готові подивитись на свій проєкт в браузері, його треба помістити в Tomcat і запусити сервер. Цей процес називається деплоймент.
Зберіть ваш проєкт як war архів. Для цього в pom.xml потрібно вказати <packaging>war</packaging>
Повний вид мого maven файлу:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>untitled3</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>untitled3 Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>8.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.1</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>19</source>
<target>19</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
Виконайте команду mvn clean install. Після її завершення в папці проєкту має зʼявитись target директорія. В ній треба знайти war файл.

Скачайте Apache Tomcat з офіційного сайту. Розпакуйте архів в зручну для вас директорію на компʼютері.
Далі скопіюйте war файл в папку webapps. Дана папка знаходиться в корені томкат директорії. Я раджу змінити імʼя war файлу на щось більш простіше. Наприклад app. Оскільки саме за іменем файлу потрібно буде звертатись до додатку в браузері.

Тепер в терміналі потрібно перейти в bin яка знаходиться в корені томкат і виконати команду sh catalina.sh start. Якщо у вас Windows то просто запустіть файл startup.bat.
Після цього можна перейти в браузер і ввести http://localhost:8080/app
Ви маєте побачит свою jsp сторінку.

Щоб не деплоїти вручну кожного разу як потрібно побачити зміни, можна скористатись Intellij Idea. Якщо у вас безкоштовна версія, потрібно скачати плагін, що дозволяє працювати з Apache Tomcat. Називається він Smart Tomcat.
Далі можна налаштувати його таким чином:

Після цього у вас буде можливість запускати ваш проєкт через IDEE як ви це звикли робити. Але то вже деталі. Схожим чином запуск можна налаштувати і в Eclipse і Netbeans.
Головне, розуміти що таке Java Servlet, для чого він потрібен, та як його написати. А з цим я думаю ми сьогодні впорались 🙂
Щоб різібратись в подальшій веб розробці на Java, я рекомендую більш детальний матеріал про JSP.

Залишити відповідь