— А вот и я. Как ты и просил, сейчас я расскажу тебе, как написать первую программу для веб-сервера.

Веб-сервер – это как операционная система. Он ценен не сам по себе, а потому, что в нем можно запускать специальные веб-программы – сервлеты (Servlet).

Именно эти сервлеты и обрабатывают запросы, приходящие от пользователей.

— А как они обрабатывают запросы? Как вообще запустить свою программу внутри веб-сервера?

— Чтобы написать свой сервлет, надо унаследовать класс от класса HttpServlet. Затем реализовать там методы doGet() и doPost(). Когда от пользователя придет запрос, веб сервер создаст объект твоего класса-сервлета и вызовет у него метод doGet(). Или doPost(), в зависимости от типа запроса из браузера.

— А как моя программа вообще попадет в web-server?

— Тут все просто. Ты пишешь программу, компилируешь ее и кладешь в специальную папку, в директорию, куда установил Tomcat.

Сервлеты – это большая отдельная и интересная тема. Поэтому я не буду тебе сегодня ее рассказывать. Я расскажу тебе немного о другом.

Есть одна очень интересная разновидность сервлетов – это JSP. Чем-то напоминает PHP.

Давай мы напишем самую простую веб-программу с использованием JSP, и запустим ее.

— Давай! Я – готов.

— Тогда начнем. Тебе понадобятся: Intellij IDEA Ultimate и Apache Tomcat 9


Инструкция актуальна для версии IDEA Ultimate 2020.2.3

Шаг 1. Cоздай новый проект

— Есть.

Шаг 2. Выбери тип модуля (Java) и версию JDK

— Есть.

Шаг 3. Подключи библиотеку — Servlet

— Есть.

Шаг 4. Укажи имя проекта и жми Finish

— Есть.

Шаг 5. Создай файл index.jsp. Правый клик по webapp > New > JSP/JSPX. Назови файл index

— Ты должен видеть новый созданный пустой проект. В нем будет один файл – index.jsp

Шаг 6. Найди jsp-файл в дереве проекта

— Нашел.

— Отлично. Вот в нем можно будет написать код нашего сервлета.

Но давай сначала немного настроим Intellij IDEA.

Можно запускать сервлеты в Tomcat’е прямо из Intellij IDEA. Дебажить их, если надо. В общем, это очень удобно и круто. Ты это оценишь, когда придет время.

— Верю. Так что делать дальше?

— Мы «научим» Intellij IDEA запускать наш webmodule (наше приложение) в Tomcat.

Шаг 7. Зайди в меню Run, во вкладку EditConfiguration

— Готово.

Шаг 8. Чтобы создать новую конфигурацию, нажми на плюсик. Укажи что именно нужно запускать (TomcatServer, Local)

— Есть.

Шаг 9. Теперь пропишем конфигурации запуска приложения

— Задаем имя этой конфигурации в поле Name – отмечено красным.

Зеленым выделен порт, на котором будет запускаться сервлет с Tomcat’ом.

Надо еще указать IntellijIDEA, где находится наш Tomcat. Жми кнопку Configure…

Шаг 10. Укажи месторасположение Tomcat’а

— Готово.

— Должно получиться что-то типа такого:

Шаг 11. Результат настройки будет выглядеть так:

Теперь нужно привязать наш проект к Tomcat’у.

— Сколько всего надо сделать. Хорошо, что есть такая подробная инструкция.

— А, то! Для друга же стараюсь.

Шаг 12. Теперь жми кнопку Fix, и IDEA все сделает сама

— Есть.

Шаг 13. IDEA делает привязку проекта и Tomcat

— Готово.

— Отлично. Еще одно замечание. Порт 8080 уже скорее всего занят. Ведь Tomcat запустился сразу после установки.

Intellij IDEA умеет «подкладывать» сервлеты к уже запущенному проекту, но сейчас для простоты она будет каждый раз запускать новый Tomcat.

— Т.е. у нас будет несколько запущенных Tomcat’ов?

— Ага. И каждому нужен свой порт. Поэтому, давай-ка в настройках проекта поменяем порт 8080, на порт 8888.

— 4 восьмерки – мне нравится.

Шаг 14. Измени порт на 8888

— Сделал.

— Отлично. С настройками мы покончили.

— Так, а что дальше?

— Теперь давай немного поменяем наш index.jsp

Напиши там что-нибудь, например «Вся власть – крабообразным».

Шаг 15. Измени текст в файле index.jsp, например, следующим образом:

— Не, я лучше «Вся власть роботам!» напишу.

— Отлично. Теперь осталось совсем немного.

Шаг 16. Запусти сервлет и Tomcat (Run ‘WebApp’)

Должен быть виден лог работающего Tomcat, без ошибок и stackTrace.

Что-то типа такого:

Шаг 17. Лог запущенного Tomcat выглядит так:

При этом IDEA должна открыть браузер с ссылкой на твой сервлет.

Должно получиться что-то типа такого:

run simple web application - 18

— Ага. Так и есть. Круто!

— А теперь напиши в браузере ссылку:

http://localhost:8888/index.jsp

— Ничего не поменялось.

— Ну не скажи.

run simple web application - 19

Тут в браузере отображается тот файл index.jsp, который ты видел в IntellijIDEA.

— Который я менял?

— Да.

Но если в запросе браузера указан только домен без остальной части запроса, то будет вызван обработчик по умолчанию. В нашем случае – это index.jsp

Допустим, у тебя есть три файла: index.jspapple.jspgoogle.jsp. Вот как будут обстоять дела:

Запрос Ответ
http://localhost:8888 index.jsp
http://localhost:8888/ index.jsp
http://localhost:8888/index.jsp index.jsp
http://localhost:8888/apple.jsp apple.jsp
http://localhost:8888/samsung.jsp Сообщение об ошибке – сервлет не найден
http://localhost:8888/google.jsp google.jsp
http://localhost:8888/index Сообщение об ошибке – сервлет не найден

— Это я понял.

Билаабо. Ты так долго рассказывал, что JSP это круто. Но они же очень похожи на самые обычные HTML-страницы. Все то же самое.

— Ну не совсем. Попробуй написать в JSP такой текст:

JSP-код
<%@ page contentType="text/html; charset=UTF-8" language="java" %>
<html>
<head>
<title>Привет от Амиго</title>
</head>
<body>
<%--это еще HTML--%>
<%
//А тут можно писать Java-код

String s = "Вся власть роботам!";
for(int i=0; i<10; i++)
{
 out.println(s);
 out.println("<br>");
}

%>
<%--а это уже опять HTML--%>
</body>
</html>

Внутри JSP-страницы можно делать вставки Java-кода и он будет работать!

Java-код в JSP-странице называется скриптлетом и обозначается двумя «скобками – « <% » и « %> »

— Ничего себе.

Ладно. Пойду напишу пару своих JSP-страниц.

Большое тебе спасибо, Билаабо.

— И тебе спасибо, друг!