HTML Diff
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>