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

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

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

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

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

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

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

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

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

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

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

— Тогда начнем.

Шаг 1 – создаем новый web-проект

run simple web application - 1

— Есть.

Шаг 2 – указываем тип модуля – Java, задаем тип приложения – WebApplication и версию JDK

run simple web application - 2

— Есть.

Шаг 3 – задаем имя проекта

run simple web application - 3

— Есть.

— Ты должен видеть новый созданный пустой проект.

Почти пустой. В нем будет один файл – index.jsp. Найди его.

Шаг 4 – Находим jsp-файл

run simple web application - 4

— Нашел.

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

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

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

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

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

Шаг 5 – выбираем в меню Run -> EditConfiguration

run simple web application - 5

— Готово.

Шаг 6 – создаем новую конфигурацию – жми плюсик

run simple web application - 6

— Есть.

Шаг 7 – указываем что запускать – TomcatServer, Local

run simple web application - 7

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

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

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

Шаг 8 – конфигурируем запуск приложения

run simple web application - 8

Теперь надо выбрать папку, где находится Tomcat:

Шаг 9 – указываем месторасположение Tomcat’а

run simple web application - 9 run simple web application - 10 run simple web application - 11

— Готово.

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

Шаг 10 – результат настройки:

run simple web application - 12

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

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

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

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

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

run simple web application - 13

— Готово.

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

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

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

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

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

Шаг 12 – меняем порт на 8888

run simple web application - 14

— Сделал.

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

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

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

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

Шаг 13 – меняем index.jsp

run simple web application - 15

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

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

Шаг 14 – запускаем сервлет и Tomcat

run simple web application - 16

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

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

Шаг 15 – лог запущенного Tomcat

run simple web application - 17

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

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

Шаг 16 – меняем index.jsp

run simple web application - 18

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

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

http://localhost:8888/index.jsp

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

— Ну не скажи.

Шаг 17 – меняем 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-страниц.

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

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