undefined

Run simple web application

Java Collections
9 уровень , 2 лекция
Доступна

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

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

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

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

Комментарии (93)
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION
Rock133 Уровень 39
27 июня 2021
Для тех, кто растерялся, попробуйте видео с еще одной пошаговой инструкцией: Работа с Tomcat через Intellij IDEA
Aleksandr Уровень 41
24 марта 2021
Сижу на KDE Neon. ставил так:

sudo snap install intellij-idea-ultimate --classic 
sudo apt install maven
sudo apt install tomcat9
При добавлении новой конфигурации Application server [Tomcat 9.0.16 (Ubuntu)] - Configure: пути: Tomcat Home: /usr/share/tomcat9 Tomcat base directory: /var/lib/tomcat9 Остальное как советовали в File - Project Structure. P.S: tomcat в чистом виде уже не используется и всё что мы узнали тут уже устарело.
Андрей Уровень 41 Самара
16 февраля 2021
Господа студенты! У вас есть возможность получить Ultimate версию идеи совершенно бесплатно. Для на сайте JetBrains, заполнив простую форму, вы можете получить годовой доступ ко всем платным продуктам JetBrains
Александр один Эс Уровень 41 Минск Беларусь
5 февраля 2021
9 TomCat на 10 JDK нормально НЕ работает, не видит библиотеку jsp. У предопределенного поля out в файле jsp не будет методов нужных. Решение: Если не хотите искать новую JDK то, связка 8 TomCat и 10 JDK Вам в помощь.
Алексей Мирный Уровень 41 Москва Россия
20 января 2021
Из какого тысячелетия скрины выше? У меня прошлогодняя Идея стоит и там целая куча отличий
wan-derer.ru Уровень 40 Москва Россия
3 января 2021
Блин... А новая IDEA сама сделала и это, и кое-что ещё. В частности, сделала файл в папке Java где Java-код без дурацких <% %>. Остаётся вопрос, кто здесь программист: я Амиго или IDEA?
Иван Уровень 39 Москва
25 декабря 2020
Забежал чуток вперёд и решил поставить tomcat, а так же поиграть с сервлетами. но в IDEA получаю экраны, которые отличаются от инструкции и возможно при установке IDEA сразу что-то пошло не так, но это было уже давно и проблем в работе пока не замечал. Подскажите, что нужно поправить.
Dark_Side Уровень 34 Нижний Новгород Россия
11 декабря 2020
Эта ошибка появляется, когда я пытаюсь запустить приложение, как это можно пофиксить?
Валерьян Уровень 41 Сыктывкар
25 ноября 2020
я правильно понимаю, что для корректного прохождения лекции нужна версия Ультимейт?
Dr-John Zoidberg Уровень 41 Марс Лесной Moderator
13 октября 2020
Лекция обновлена. Если нужно внести правки, то пишите тут.