0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Цикл "запрос-обработка-ответ" включает множество элементов, которые идентичны для всех сайтов. Поэтому возникли так называемые<strong>фреймворки</strong>- библиотеки, которые определяют структуру программы. В этом их отличие от обычных библиотек. Благодаря фреймворкам можно сосредоточиться на логике сайта, а не на продумывании базовой архитектуры или разработке вспомогательных инструментов.</p>
1
<p>Цикл "запрос-обработка-ответ" включает множество элементов, которые идентичны для всех сайтов. Поэтому возникли так называемые<strong>фреймворки</strong>- библиотеки, которые определяют структуру программы. В этом их отличие от обычных библиотек. Благодаря фреймворкам можно сосредоточиться на логике сайта, а не на продумывании базовой архитектуры или разработке вспомогательных инструментов.</p>
2
<p>Веб-фреймворки подразделяются на две большие группы:</p>
2
<p>Веб-фреймворки подразделяются на две большие группы:</p>
3
<ul><li>Фреймворки</li>
3
<ul><li>Фреймворки</li>
4
<li>Микрофреймворки</li>
4
<li>Микрофреймворки</li>
5
</ul><p>Микрофреймворки устроены значительно проще. Они содержат только минимально необходимую обвязку для комфортной работы в архитектуре HTTP - это "запрос-ответ". Они идеально подходят для обучения, потому что просты и не отвлекают от главного.</p>
5
</ul><p>Микрофреймворки устроены значительно проще. Они содержат только минимально необходимую обвязку для комфортной работы в архитектуре HTTP - это "запрос-ответ". Они идеально подходят для обучения, потому что просты и не отвлекают от главного.</p>
6
<p>В Java таким микрофреймворком стал<a>Javalin</a>. В этом уроке мы начнем изучать принципы работы веб-приложений через призму этого микрофреймворка. Изученные здесь концепции одинаково работают во всех остальных фреймворках, включая Spring Boot, который изучается в следующих курсах.</p>
6
<p>В Java таким микрофреймворком стал<a>Javalin</a>. В этом уроке мы начнем изучать принципы работы веб-приложений через призму этого микрофреймворка. Изученные здесь концепции одинаково работают во всех остальных фреймворках, включая Spring Boot, который изучается в следующих курсах.</p>
7
<h2>Установка</h2>
7
<h2>Установка</h2>
8
<p>Для начала создайте Gradle-проект со следующими параметрами:</p>
8
<p>Для начала создайте Gradle-проект со следующими параметрами:</p>
9
<ul><li>Название -<em>HexletJavalin</em></li>
9
<ul><li>Название -<em>HexletJavalin</em></li>
10
<li>Группа -<em>org.example</em></li>
10
<li>Группа -<em>org.example</em></li>
11
<li>Версия -<em>1.0-SNAPSHOT</em></li>
11
<li>Версия -<em>1.0-SNAPSHOT</em></li>
12
</ul><p>Это можно сделать через редактор или с помощью команды gradle init, как показано ниже:</p>
12
</ul><p>Это можно сделать через редактор или с помощью команды gradle init, как показано ниже:</p>
13
<p>Проверьте, выглядит ли ваш файл<em>build.gradle.kts</em>так же, как в примере ниже:</p>
13
<p>Проверьте, выглядит ли ваш файл<em>build.gradle.kts</em>так же, как в примере ниже:</p>
14
<p>Добавьте директорию для хранения исходных файлов:</p>
14
<p>Добавьте директорию для хранения исходных файлов:</p>
15
<p>Создайте файл<em>HelloWorld.java</em>со следующим содержимым:</p>
15
<p>Создайте файл<em>HelloWorld.java</em>со следующим содержимым:</p>
16
<p>Последний шаг - создайте репозиторий<em>hexlet-javalin</em>на Github и залейте туда код нашего проекта. Он понадобится для экспериментов во время всего курса.</p>
16
<p>Последний шаг - создайте репозиторий<em>hexlet-javalin</em>на Github и залейте туда код нашего проекта. Он понадобится для экспериментов во время всего курса.</p>
17
<h2>Запуск</h2>
17
<h2>Запуск</h2>
18
<p>Перейдем к запуску - он выполняется командой ./gradlew run. Во время выполнения задачи Gradle скачивает зависимости, компилирует проект и запускает веб-сервер, встроенный в Javalin:</p>
18
<p>Перейдем к запуску - он выполняется командой ./gradlew run. Во время выполнения задачи Gradle скачивает зависимости, компилирует проект и запускает веб-сервер, встроенный в Javalin:</p>
19
<p>По умолчанию сервер стартует на<em><a>http://localhost:7070</a></em>. Если открыть адрес в браузере, появится надпись<em>Hello World</em>. Одновременно с этим, веб-сервер выведет такие строки в том месте, где мы его запустили:</p>
19
<p>По умолчанию сервер стартует на<em><a>http://localhost:7070</a></em>. Если открыть адрес в браузере, появится надпись<em>Hello World</em>. Одновременно с этим, веб-сервер выведет такие строки в том месте, где мы его запустили:</p>
20
<p>Этот вывод называется<strong>логом</strong>. Он помогает понять, как браузер взаимодействует с веб-сервером. На каждый запрос в логе появляются новые строчки, которые показывают:</p>
20
<p>Этот вывод называется<strong>логом</strong>. Он помогает понять, как браузер взаимодействует с веб-сервером. На каждый запрос в логе появляются новые строчки, которые показывают:</p>
21
<ul><li>Какой запрос пришел на сервер</li>
21
<ul><li>Какой запрос пришел на сервер</li>
22
<li>Что сервер сделал в ответ на запрос</li>
22
<li>Что сервер сделал в ответ на запрос</li>
23
<li>Чтобы было в полученном запросе (метод, адрес, параметры, заголовки, тело)</li>
23
<li>Чтобы было в полученном запросе (метод, адрес, параметры, заголовки, тело)</li>
24
<li>Есть ли в коде ошибки, из-за которых возникают исключения</li>
24
<li>Есть ли в коде ошибки, из-за которых возникают исключения</li>
25
</ul><p>В будущем мы не раз будем обращаться к логу для отладки.</p>
25
</ul><p>В будущем мы не раз будем обращаться к логу для отладки.</p>
26
<p>Теперь вы умеете запускать веб-сервер Javalin. Чтобы остановить его, можно воспользоваться командой Ctrl-C.</p>
26
<p>Теперь вы умеете запускать веб-сервер Javalin. Чтобы остановить его, можно воспользоваться командой Ctrl-C.</p>
27
<h2>Внесение изменений</h2>
27
<h2>Внесение изменений</h2>
28
<p>Когда веб-сервер запускается, исходный код компилируется и загружается в память. Любые дальнейшие изменения в коде никак не повлияют на запущенное приложение. Это создает неудобства во время разработки - приходится перезапускать сервер каждый раз, когда мы хотим проверить результат изменений. Но для наших задач это не проблема.</p>
28
<p>Когда веб-сервер запускается, исходный код компилируется и загружается в память. Любые дальнейшие изменения в коде никак не повлияют на запущенное приложение. Это создает неудобства во время разработки - приходится перезапускать сервер каждый раз, когда мы хотим проверить результат изменений. Но для наших задач это не проблема.</p>