— А вот и я. Как ты и просил, сейчас я расскажу тебе, как написать первую программу для веб-сервера.
Веб-сервер – это как операционная система. Он ценен не сам по себе, а потому, что в нем можно запускать специальные веб-программы – сервлеты (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 должна открыть браузер с ссылкой на твой сервлет.
Должно получиться что-то типа такого:

— Ага. Так и есть. Круто!
— А теперь напиши в браузере ссылку:
http://localhost:8888/index.jsp |
— Ничего не поменялось.
— Ну не скажи.

Тут в браузере отображается тот файл index.jsp, который ты видел в IntellijIDEA.
— Который я менял?
— Да.
Но если в запросе браузера указан только домен без остальной части запроса, то будет вызван обработчик по умолчанию. В нашем случае – это index.jsp
Допустим, у тебя есть три файла: index.jsp, apple.jsp, google.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 такой текст:
<%@ 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-страниц.
Большое тебе спасибо, Билаабо.
— И тебе спасибо, друг!
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ