Разработка сайтов с помощью Java Spring Boot.

Разработка сайтов с помощью Java Spring Boot.

опубликовано
Март, 2021
категория
Разработка сайтов

В предыдущей статье мы говорили о продвижении сайтов и показателей посещаемости на сайте. В данной статье мы поговорим о том, как можно за короткий промежуток времени разработать веб-приложение на фреймворке Spring с помощью Java Spring.

В современном мире веб-разработки очень сложно представить проект, собранный без применения какого-либо фреймворка на основе языка программирования на котором разрабатывается приложение. Из самых известных, это Laravel для PHP, Django для Python, и Spring для Java. К слову, фреймворки - это такой набор инструментов, который нацелен на решение определенных, часто повторяющихся в разработке приложений, задач. Это такой скелет, который состоит из библиотек, которые облегчают процесс разработки приложения с нуля.

создание сайтов на Java

Какую роль играет Spring Boot в создании сайта?

На одном HTML, CSS и JavaScript невозможно написать полноценный проект, потому что у нас есть функционал проекта под капотом, где мы подключаем данные из базы, прописываем функцию для любой кнопочки, берем данные из строки ввода информации и многое другое. Допустим, у Вас есть простая авторизационная страница, где нужно будет вводить и выводить данные о пользователе. Согласитесь, это большая проблема работать с ними только через HTML и JavaScript, для этого существуют языки программирования, которые прописывают всю бэкенд часть (функционал) проекта. В нашем случае, мы используем Java Spring Boot на основе языка программирования Java.

Начнем с того, что Spring Boot - это проект, построенный поверх основного фреймворка Java Spring. Есть много других проектов как Java Spring Data, Spring Batch, каждый из которых имеет свою особенность в работе с ними.

Spring Boot это в первую очередь один из самых быстрых способов создания веб приложений без особо сложных заморочек с поднятием и написанием конфигурации сервера для вашего web-приложения. Как это работает? За счет Spring фреймворка, поверх которого он и был построен, позволяющий нам читать и собирать все необходимые данные из разных мест в проектах и библиотеках, к примеру, через аннотации, они начинаются с символа “@”, вы сразу поймете. Spring Boot - это все, что необходимо для того, чтобы упаковать существующие части фреймворка в пакетик, который мы в будущем будем использовать для разработки веб-приложений и не только с минимальными заморочками для конфигурации.

Практическое применение Java библиотек во фреймворке Spring Boot

Представьте, что будто авторы Spring собрали все самые нужные утилиты, которые автоматизируют процесс настройки сервера, его развертывания и ускоряют это действие до такой степени, что разработчикам больше не надо будет тратить время и нервы на написание специального кода для всего этого. Как раз-таки, теперь у нас есть Spring Boot, а у него есть все самое необходимое для автоматической конфигурации и готовые контейнеры сервлетов. Сервлет - это такой способ/интерфейс взаимодействия с клиентами посредством такого принципа как запрос-ответ, помните слова request, response из веб программирования? Он связывает наш Java класс с ссылкой из адресной строки, проще говоря.

По сути дела, почти всегда, когда разработчик впервые сталкивается с сервлетами, для него это становится чем-то сложным для понятия: как он работает, что это такое и как он действует на сам проект.

Допустим, Вы захотели развернуть свое web-приложение:

✔ Первым делом, Вы загружаете библиотеки из интернета и настраиваете их на наш проект (servlet-api, servlet-jsp-api), которые будут нужны для разработки MVC приложения на Java, закидываете их в папку самого проекта, указываете что, мол, это библиотеки для нашего проекта.

✔ Затем, добавляем наш проект в сервер Tomcat. Не спешите паниковать: Вам просто нужно скачать сервер из интернета, распаковать его, указать путь к нему и задеплоить проект.

Сервлеты это...

Вернемся к понятию сервлеты? Так вот, наш веб-сервер загружает эти самые сервлеты, выполняет их, получает результат и перенаправляет его клиентской части. Клиент отправляет запрос на сервер - Сервер определяет какой сервлет именно необходимо выполнить - Запрос проходит через обработку нужного сервлета - Обработанный запрос отправляется снова на сервер - Сервер отправляет ответ клиенту.

Сервлеты начинают свою работу и заканчивают ее при каждом запросе с клиентской части, ну или могут запуститься тогда, когда мы запускаем наш веб-сервер и существовать ровно до того времени, пока мы его останавливаем. Когда мы запускаем наш сервлет, он вызывает специальный метод init(), который, в свою очередь устанавливает соединение с серверами. В этом случае, становится понятным: сервлеты бывают постоянными и временными. Первые - запускаются и останавливают свою работу при запуске и до завершения работы веб-сервера. Вторые - загружаются только по требованию. Но тем не менее, не стоит думать, что мы пишем отдельный специальный код, чтобы прописать, будет ли этот или иной сервлет постоянным или временным, это функция лежит в основе настроек сервера.

Интерфейс сервлета включает три (основных) метода, которые применяются в жизненном цикле сервлета в программе, это: init,service и destroy.

✔ init - инициализирует и запускает сервлет;

✔ service - тот самый метод, который обрабатывает запросы с клиентской части;

✔ destroy - метод, вызов которого прекращает работу сервлета.

init и destroy работают вызываются только по одному разу за весь рабочий цикл сервлета.

Напомним, что интерфейс связывает между собой несколько классов, у которых, в большинстве случаев, нет ничего общего, это его и отличает от абстрактных “классов”, которые связывают классы, близких друг к другу, между собой.

Сервлеты, которые работают через веб с клиентами экстендят (наследуют) свойства от класса HttpServlet.

У нас есть два типа запроса: get и post, которые являются наиболее используемыми типами запросов HTTP. get, который получает информацию и post, который передает наши данные на сервер.

В нашем parent-class HttpServlet есть методы как:

✔ doGet

✔ doPost

которые обрабатывают запросы GET и POST за счет принятия в качестве аргументов HTTPServletRequest/Response, которые как раз-таки являются объектами, работающими между клиентской и серверной частями. Эти готовые методы и их принципы, способы работы нам не нужно расписывать самим, вспомним. Логика и цепочка работы уже готова к реализации. То есть, намного легче пользоваться чем-то готовым, нежели каждый раз писать все заново, как мы уже поняли.

Настроили Tomcat, задеплоили проект, добавили зависимости и все, приложение может запускаться само, а Вы в это время можете менять контент уже готовых шаблонов, допустим request, response и получать первые “Hello, World!” через клик по кнопке. Это, конечно, здорово звучит, но и не так просто это сразу понять.

Важно помнить, что Spring Boot не генерирует код из ничего и не меняет так же в вашем коде, но безусловно, он просматривает ваш classpath, который был сконфигурирован вами лично, когда Вы только построили проект, и до-добавляет то, чего вашему проекту не хватает. Это работает так, потому что программа понимает что от чего зависит и что без чего не может работать корректно.

Еще у нас есть стартер-пакеты (starter-packs), по сути готовые шаблонные зависимости, которые можно будет подключить к проекту без лишних заморочек и без лишнего поиска кусочков кода для Вашего будущего проекта на костылях (если Вы не будете понимать принцип работы веб-приложений на Java Spring, разумеется).

Так, и давайте постараемся понять что такое XML файл перед тем как подведем итоги, перечислив особенности Spring Boot. Наш первый xml файл в проекте будет называться web.xml, с него мы и начинаем создание веб-страниц. Нет никакой связи между текстом в адресной строке и страницей в Вашем проекте для машины, которая будет искать нужный java файл, чтобы достучаться до сервлета. В интернете Вы можете найти стандартный код, который мы прописываем в наш web.xml файл, в котором мы указываем url метку сервлета. Теперь еще раз повторим то же самое, только более понятным языком:

✔ машина получает путь к java классу, который перенаправит нас на нужную страницу, через сервлет из файла web.xml.

Преимущества Spring перед другими фреймворками для бэкенд разработки.

Вот некоторые из них:

✔ Скорость Разработки

✔ Уменьшение шаблонного кода

✔ Мощная экосистема

✔ Сильное комьюнити - очень популярный фреймворк, в мире много программистов, у которых были такие же проблемы, которые Вы встретите на разработке на Java Spring и засчет того, что они всегда готовы помочь - Ваша проблема решаема в пару кликов в гугле.

✔ Простота и гибкость - декларативное программирование это когда у Вас задача представлена в виде проблемы, которую необходимо решить.

✔ DI (dependency injection) - Как Вы собирается управлять 10000 классами в большем приложении? DI - это инициализация объектов в зависимости от их использования. Нам нужен объект студент, Spring за нас начнет инициализировать зависимые объекты университет, столовая, расписание и так далее. Нам не надо вручную писать new Universitet каждый раз. В каждом 10000-ом классе.

Давайте перечислим особенности Spring Boot-а в заключение:

✔ Автоматическая настройка Spring и сторонних библиотек, когда это возможно.

✔ Создание автономных приложений. Автономные приложения = приложения, работающие без интернета. Да, безусловно, серверные приложения намного удобнее и они, в отличие от автономных, не теряют актуальность со временем, но и у автономных приложений есть свои плюсы тоже.

✔ Предоставляет опцию-выборку 'starter' зависимости для упрощения конфигурации сборки Вашего приложения, когда Вы только-только начинаете запускать проект.

✔ А что ещё важнее всего, оно вам сразу пропишет конфигурацию XML, так что абсолютно никакой генерации кода и никаких требований к конфигурации XML.

Создание сайтов в Алматы.

Похожие Статьи