Как запустить веб приложение
Мы объясним, расскажем и покажем на примере, как это сделали бы мы.
Начнем с самого начала:
ЧТО ТАКОЕ ПРОСТОЕ ПРИЛОЖЕНИЕ?
Простое приложение предполагает, что:
- могут использоваться операции CRUD (создать, прочесть, обновить, удалить) без сложной логики endpoint (конечных точек);
Конечная точка (англ. endpoint) - это URL (единый указатель ресурса), а проще говоря, адрес местонахождения ресурса в сети Интернет. Этот адрес использует клиент, чтобы получить доступ к ресурсу.
- отсутствует разделение на роли;
- отсутствует система аутентификации;
- не используется библиотеки, расширяющие язык (babel, typescript).
ВЫ ХОТИТЕ СОЗДАТЬ ИМЕННО ТАКОЕ ВЕБ-ПРИЛОЖЕНИЕ?
Тогда наш совет - используйте JavaScript. Node.js. Express.
ПОЧЕМУ JAVASCRIPT?
- JavaScript изначально задумывался как простой язык , который могли бы использовать не только программисты. Задумка удалась: на данный момент у нас есть несложный язык для реализации как простых , так и сложных продуктов.
- JavaScript обеспечивает динамичность страницы . Анимация, интерактивные кнопки и графические элементы: мы уже с трудом представляем себе приложения без всего этого.
- с одной стороны, JavaScript - это клиентский язык . Клиентом в этом случае является браузер, которые интерпретирует код приложения и исполняет его. Интерпретатор кода встроен во все популярные браузеры, то есть в плане поддержки никаких ограничений не существует.
- с другой стороны, JavaScript можно использовать и на стороне сервера благодаря платформе Node.js, о которой мы поговорим позже.
Исходя из всего этого, неудивительно, что JavaScript стабильно занимает позицию самого используемого языка программирования
Согласно результатам опроса Stackoverflow , в котором в 2017г. участвовали более 64 000 разработчиков, JavaScript уверенно лидирует среди наиболее часто используемых языков программирования (61,9%).
JavaScript сохраняет за собой первое место в течение пяти лет подряд. А это уже о чем-то говорит.
В течение этих лет язык, конечно же, не стоит на месте, а развивается, причем развивается семимильными шагами. Появляются новые библиотеки и фреймворки, развиваются и расширяются уже существующие.
Angular, React, jQuery, Vue, Lodash - о них много говорят и спорят, но, главное, их успешно используют, и они выполняют свое предназначение.
ЧТО ТАКОЕ NODE.JS?
- По сути, этосреда программирования , в которой созданы условия для применения JavaScript как серверного языка. То есть разработчик может использовать JavaScript и для стороны сервера, и для стороны клиента, и ему не нужно переключаться на специфику другого языка программирования, и при этом сохраняется формат данных.
Каждый программист ответит по-своему на вопрос о том, какой язык лучше использовать для серверной части. В каждом случае сыграют роль накопленный опыт работы, привычка, особенности разрабатываемого продукта.
- При помощи Node.js, можно создавать практически любые веб-приложения , кроме, разве, сложных вычислений. Хотя сложные вычисления всегда можно сделать на другом языке, а потом предоставить эти данные для использования и манипулирования ими уже на JavaScript. Но мы сейчас говорим о простом приложении.
- Специфической областью применения платформы Node.js является микросервисная архитектура. То есть Node.js оптимально использовать для приложений, которые разбиты на небольшие модули (лента новостей, чат, магазин и т.д.). При этом каждый модуль не зависит друг от друга, но все вместе они составляют единую структуру.
- Дополнительное преимущество заключается в том, что вокруг Node.js образовалось развитое сообщество . Благодаря этому доступна хорошая документация, а также существует большое количество готовых примеров для использования, фреймворков и библиотек, которые позволяют облегчить и ускорить разработку.
Согласитесь, неразумно отказываться от предлагаемых возможностей в виде готовых решений и писать код полностью вручную. Это сложно, долго, нерационально. Тем более, что мы говорим о простом приложении, а не о чем-то сложном и уникальном.
В сети предлагается множество пошаговых инструкций, которые подробно описывают создание веб-приложения при помощи Node.js. Какие-то из них рассчитаны на подготовленных разработчиков, мы же предлагаем рассмотреть простой пример разработки на Node.js для начинающих программистов и для тех, кто не силен в программировании, но кому интересна логика процесса.
ПОДГОТОВКА
Чтобы начать работу с Node.js, нужно, как минимум, установить Node.js.
Процедура несложная и не отнимет много времени. Используйте один из вариантов установки, предлагаемых на официальном сайте Node.js.
Вместе с Node.js автоматически устанавливается менеджер пакетов npm.
В Node.js используется модульный подход, то есть можно расширять функционал за счет подключения большого количества модулей. Именно за их установку и отвечает менеджер пакетов.
В нашем примере мы будем использовать систему управления базами данных (СУБД) MongoDB. Так же как и в случае с Node.js, на официальном сайте продукта есть подробная документация и инструкция по установке.
Для создания простого приложения нам понадобятся :
- фреймворк для создания каркаса приложения (Express);
- драйвер для системы управления базами данных MongoDB;
- инструмент (пере-) запуска веб-сервера (nodemon).
Благодаря сервисной программе nodemon, сервер будет автоматически перезапускаться при каждом изменении кода.
EXPRESS
Почему именно этот фреймворк?
При своей минималистичности и легкости он предлагает весь необходимый набор функций для веб-приложения.
Чтобы создать каркас приложения при помощи этого фреймворка, можно использовать генератор приложений Express.
Перейдите по ссылке и вы увидите, насколько все просто.
В документации описана последовательность действий и команд и показаны результаты их выполнения.
Генератор Express - это одна из возможностей создания приложения с использованием Express.
Как вы ею воспользуетесь, зависит от специфики продукта и от опыта за плечами у разработчика. С одной стороны, это обеспечивает разработчику определенную свободу действий. С другой стороны, гибкость, которая особенно характерна для Node.js, часто осложняет жизнь разработчиков, особенно начинающих.
Никто не даст вам конкретных указаний о том, что и как именно нужно сделать. Структура директории, количество файлов, подключаемые внешние модули: выбор остается за вами.
Теперь посмотрим, как все описанное выше реализуется на примере.
ПРИМЕР
- Создаем папку с будущим проектом , переходим в нее и выполняем инициализацию проекта, отвечая на вопросы установщика.
Для этого используем следующие команды:
- Потом устанавливаем необходимые модули :
- Устанавливаем инструмент для автоматического перезапуска сервера , который существенно облегчит процесс разработки:
- Когда все нужные нам модули установлены, создаем файлindex.js.
Здесь мы подключаем необходимые зависимости (сторонние коды, которые будет использовать наше приложение).
Вторая возможность проверить работу сервера: использование программы Postman .
Postman - это специальная программа, которая облегчает разработчикам создание, тестирование и мониторинг API. С ее помощью можно направлять на сервер запросы, а также настраивать параметры запросов и тестировать работу приложения.
В зависимости от того, что именно будет делать приложение, настраиваем endpoint для выполнения нужных нам запросов.
- Cоздадим первую endpoint в папке app/. Логика в данном случае простая: мы хотим обратиться к серверу по адресу /books и получить от него определенный ответ:
- Допустим, мы не хотим в нашем приложении ограничиваться одной endpoint, а хотим использовать несколько (хотим создавать, читать, обновлять и удалять данные), тогда подключаем все обработчики , которые помогут реализовать эти действия, в одном файле api/index.js:
- Когда первая endpoint написана, мы ее регистрируем и проверяем :
- Перед тем как перейти к другим endpoints, подключаем модуль body-parser (который будет отвечать за обработку запросов) и указываем формат входных и выходных данных endpoints - JSON:
- Теперь устанавливаем соединение с базой данных “test” , используя заранее установленный драйвер mongodb. После того как соединение с БД установлено - передадим объект database вторым параметром в регистрируемые роуты:
- Дальше мы можем писать endpoint для создания (CREATE) новой записи в БД. Запись имеет поля author, title, text.
Логика создания такой endpoint тоже очень простая:
- получаем данные в формате JSON и формируем объект book;
- вставляем объект в коллекцию books;
- получаем результат: либо произошла ошибка, либо создан документ;
- отправляем результат пользователю.
- Создаем endpoint для получения (READ) записи из БД.
Логику вы уже можете предположить самостоятельно:
- используем id из параметров запроса и формируем запрос;
- отправляем запрос в БД;
- обрабатываем результат: либо произошла ошибка, либо получаем документ с данными;
- отправляем результат пользователю.
- Аналогичным путем создаем endpoint для обновления (UPDATE) записи в БД:
- используем id из параметров запроса и формируем запрос;
- получаем данные в формате JSON и формируем
объект book; - обновляем документ в БД;
- обрабатываем результат: либо произошла ошибка, либо получаем статус операции;
- отправляем результат пользователю.
А также создаем endpoint для удаления (DELETE) записи:
- используем id из параметров запроса и формируем запрос;
- удаляем документ из БД;
- обрабатываем результат: либо произошла ошибка, либо получаем статус операции;
- отправляем результат пользователю.
Мы рассказали о том, как создать простое приложение с использованием Node.js. Используя это приложение, как основу, можно расширять его функционал за счет дополнительных модулей. Но это уже зависит от того, для чего вы планируете использовать будущий проект.
Остались вопросы? Нужна помощь в разработке? Чем быстрее вы свяжитесь c Umbrella IT, тем быстрее ваши идеи будут воплощены в реальность.
Azure PowerShell — рекомендуемое средство для создания приложений на платформе размещение Windows. Для создания приложений в Linux используйте другой инструмент, например Azure CLI
Предварительные требования
Если у вас уже установлена версия Visual Studio 2022:
- Установите последние обновления для Visual Studio, выбрав Справка > Проверить обновления.
- Добавьте рабочую нагрузку, выбрав Инструменты > Получить средства и компоненты.
- Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно. .
- Расширение Azure Tools.
Откройте Visual Studio и выберите Создать проект.
В разделе Настройка нового проекта присвойте приложению имя MyFirstAzureWebApp и щелкните Далее.
Для параметра Тип проверки подлинности укажите значение Нет. Щелкните Создать.
В меню Visual Studio выберите Отладка > Запустить без отладки, чтобы запустить приложение локально.
Откройте Visual Studio и выберите Создать проект.
В окне Настройка нового проекта присвойте приложению имя MyFirstAzureWebApp и щелкните Создать.
Выберите шаблон MVC .
Убедитесь, что для параметра Проверка подлинности задано значение Без проверки подлинности. Щелкните Создать.
В меню Visual Studio выберите Отладка > Запустить без отладки, чтобы запустить приложение локально.
В окне терминала создайте новую папку с именем MyFirstAzureWebApp и откройте ее в Visual Studio Code.
в Visual Studio Code откройте окно терминала, введя Ctrl + ` .
В окне Терминал Visual Studio Code запустите приложение в локальной среде с помощью команды dotnet run .
В том же сеансе терминала запустите приложение локально с помощью команды dotnet run .
Публикация веб-приложения
Прежде чем опубликовать веб-приложение, следует создать и настроить новую Службу приложений, в которой вы сможете опубликовать это приложение.
В процессе настройки Службы приложений вы создадите следующее:
- Новая группа ресурсов для всех ресурсов Azure, которые потребуются для этой службы.
- Новый план размещения, который позволяет определить расположение, размер и функции фермы веб-серверов для размещения приложения.
Выполните следующие действия, чтобы создать Службу приложений и опубликовать свой проект:
Щелкните правой кнопкой мыши проект MyFirstAzureWebApp в Обозревателе решений и выберите Опубликовать.
В разделе Публикация выберите Azure и нажмите кнопку Далее.
Выберите Указанный целевой объект: Служба приложений Azure (Linux) или Служба приложений Azure (Windows) . Затем щелкните Далее.
Доступные параметры зависят от того, вошли ли вы в Azure и есть ли у вас учетная запись Visual Studio, связанная с учетной записью Azure. Выберите Добавить учетную запись или Войти, чтобы войти в подписку Azure. Если вы уже вошли, выберите нужную учетную запись.
Справа от списка Экземпляры Службы приложений выберите + .
В разделе Группа ресурсов выберите Создать. В разделе Новое имя группы ресурсов введите myResourceGroup и щелкните ОК.
В разделе План размещения щелкните Создать.
В диалоговом окне План размещения. Создать новый введите значения, указанные в следующей таблице.
Параметр | Рекомендуемое значение | Описание |
---|---|---|
План размещения | MyFirstAzureWebAppPlan | Имя плана службы приложений. |
Расположение | Западная Европа | Центр обработки данных, где размещается веб-приложение. |
Размер | Бесплатный | Ценовая категория определяет возможности размещения. |
Выберите Создать, чтобы создать ресурсы Azure.
В диалоговом окне Публикация убедитесь, что в качестве экземпляра Службы приложений выбрано новое приложение Службы приложений, а затем щелкните Готово. Visual Studio создаст профиль публикации для выбранного приложения Службы приложений.
Visual Studio создает, упаковывает и публикует приложение в Azure, а затем запускает его в браузере по умолчанию.
В Visual Studio Code откройте раздел Палитра команд и нажмите клавиши CTRL + SHIFT + P .
Ответьте на запросы следующим образом:
Во всплывающем окне Всегда развертывать рабочую область MyFirstAzureWebApp в <app-name> выберите Да. Таким образом, пока вы находитесь в той же рабочей области, Visual Studio Code будет каждый раз выполнять развертывание в одном и том же приложении Службы приложений.
Когда публикация завершится, щелкните Обзор веб-сайта в открывшемся уведомлении и нажмите кнопку Открыть при появлении запроса.
Войдите в учетную запись Azure с помощью команды az login и выполните следующий запрос:
Разверните код в локальном каталоге MyFirstAzureWebApp с помощью команды az webapp up :
Откройте браузер и перейдите по этому URL-адресу:
Azure PowerShell — рекомендуемое средство для создания приложений на платформе размещение Windows. Для создания приложений в Linux используйте другое средство, например Azure CLI
Войдите в учетную запись Azure с помощью команды Connect-AzAccount и выполните следующий запрос:
Создайте приложение с помощью команды New-AzWebApp:
- Замените <app-name> именем, уникальным для всех регионов Azure (допустимыми символами являются a-z , 0-9 и - ). Рекомендуется использовать сочетание названия компании и идентификатора приложения.
- При необходимости вы можете использовать параметр -Location <location-name> , где <location-name> является доступным регионом Azure. Список допустимых регионов для учетной записи Azure можно получить, выполнив команду Get-AzLocation .
Выполнение этой команды может занять несколько минут. При выполнении создается группа ресурсов, план службы приложений и ресурс Службы приложений.
В корневой папке приложения подготовьте свое локальное приложение MyFirstAzureWebApp к развертыванию, выполнив команду dotnet publish :
Перейдите в каталог версии и создайте ZIP-файл из содержимого:
Опубликуйте ZIP-файл в приложении Azure с помощью команды Publish-AzWebApp:
-ArchivePath нужно предоставить полный путь к ZIP-файлу.
Откройте браузер и перейдите по этому URL-адресу:
Обновление и повторное развертывание приложения
Чтобы обновить и повторно развернуть веб-приложение, сделайте следующее:
В Обозревателе решений откройте файл Index.cshtml вашего проекта.
Замените первый элемент <div> следующим кодом:
Чтобы выполнить повторное развертывание в Azure, щелкните правой кнопкой мыши проект MyFirstAzureWebApp в Обозревателе решений, а затем выберите Опубликовать.
На странице Публикация со сводными сведениями щелкните Опубликовать.
По завершении публикации Visual Studio открывает в браузере страницу с URL-адресом веб-приложения.
Замените первый элемент <div> следующим кодом:
В Visual Studio Code откройте раздел Палитра команд и нажмите клавиши CTRL + SHIFT + P .
Щелкните Развернуть при появлении запроса.
Когда публикация завершится, щелкните Обзор веб-сайта в открывшемся уведомлении и нажмите кнопку Открыть при появлении запроса.
В локальном каталоге выберите файл Index.cshtml. Замените первый элемент <div> следующим кодом:
Сохраните изменения, а затем повторно разверните приложение с помощью команды az webapp up .
Эта команда использует значения, которые кэшируются локально в файле .azure/config, включая имя приложения, группу ресурсов и план службы приложений.
После завершения развертывания переключитесь в окно браузера, открытое на этапе перехода в приложение, и щелкните "Обновить".
В локальном каталоге выберите файл Index.cshtml. Замените первый элемент <div> следующим кодом:
В корневой папке приложения подготовьте свое локальное приложение MyFirstAzureWebApp к развертыванию, выполнив команду dotnet publish :
Перейдите в каталог версии и создайте ZIP-файл из содержимого:
Опубликуйте ZIP-файл в приложении Azure с помощью команды Publish-AzWebApp:
-ArchivePath нужно предоставить полный путь к ZIP-файлу.
После завершения развертывания переключитесь в окно браузера, открытое на этапе перехода в приложение, и щелкните "Обновить".
Управление приложением Azure
Чтобы управлять веб-приложением, перейдите на портал Azure, найдите и выберите Службы приложений.
На странице Службы приложений выберите имя веб-приложения.
На странице Обзор для веб-приложения вы можете выполнять базовые задачи управления: просмотр, завершение, запуск, перезагрузку и удаление. В меню слева есть дополнительные страницы для настройки приложения.
Очистка ресурсов
На предыдущем шаге вы создали ресурсы Azure в группе ресурсов. Если вы не планируете использовать эти ресурсы в будущем, вы можете удалить их, удалив саму группу ресурсов.
- На странице Обзор веб-приложения на портале Azure щелкните ссылку myResourceGroup в разделе Группы ресурсов.
- На странице группы ресурсов проверьте, действительно ли требуется удалить перечисленные ресурсы.
- Выберите Удалить, введите myResourceGroup в текстовое поле, после чего щелкните Удалить.
Очистка ресурсов
На предыдущем шаге вы создали ресурсы Azure в группе ресурсов. Если вы не планируете использовать эти ресурсы в будущем, вы можете удалить их, удалив саму группу ресурсов.
- На странице Обзор веб-приложения на портале Azure щелкните ссылку myResourceGroup в разделе Группы ресурсов.
- На странице группы ресурсов проверьте, действительно ли требуется удалить перечисленные ресурсы.
- Выберите Удалить, введите myResourceGroup в текстовое поле, после чего щелкните Удалить.
Очистка ресурсов
На предыдущем шаге вы создали ресурсы Azure в группе ресурсов. Если эти ресурсы вам не понадобятся в будущем, вы можете удалить группу ресурсов, выполнив следующую команду в Cloud Shell:
Ее выполнение может занять до минуты.
Очистка ресурсов
На предыдущем шаге вы создали ресурсы Azure в группе ресурсов. Если эти ресурсы вам не понадобятся в будущем, удалите группу ресурсов, выполнив следующую команду PowerShell:
Ее выполнение может занять до минуты.
Дальнейшие действия
В этой статье объясняется, что такое Java Web Start (JWS), как настроить его на стороне сервера и как создать простое приложение.
1. Обзор
В этой статье объясняется, что такое Java Web Start (JWS), как настроить его на стороне сервера и как создать простое приложение.
Примечание: JWS был удален из Oracle JDK, начиная с Java 11. В качестве альтернативы рассмотрите возможность использования Open Web Start .
2. Введение
JWS-это среда выполнения, которая поставляется вместе с Java SE для веб-браузера клиента и существует с версии Java 5.
При загрузке файлов JNLP (также известных как протокол запуска сети Java) с веб-сервера эта среда позволяет нам удаленно запускать пакеты JAR, на которые она ссылается.
С общего веб-сайта можно загрузить файл JNLP для выполнения приложения JWS. После загрузки его можно запустить непосредственно из ярлыка на рабочем столе или средства просмотра кэша Java. После этого он загружает и выполняет файлы JAR.
Этот механизм может быть очень полезен для предоставления графического интерфейса, который не является веб-интерфейсом (без HTML), такого как приложение для безопасной передачи файлов, научный калькулятор, безопасная клавиатура, локальный браузер изображений и так далее.
3. Простое приложение JNLP
Хороший подход-написать приложение и упаковать его в файл WAR для обычных веб-серверов. Все, что нам нужно, это написать желаемое приложение (обычно с помощью Swing) и упаковать его в файл JAR. Затем этот JAR, в свою очередь, должен быть упакован в файл WAR вместе с JNLP, который будет ссылаться, загружать и выполнять класс Main своего приложения в обычном режиме.
Нет никакой разницы с обычным веб-приложением, упакованным в файл WAR, за исключением того факта, что нам нужен файл JNLP для включения JWS, как будет показано ниже.
3.1. Java-приложение
Давайте начнем с написания простого Java-приложения:
Мы видим, что это довольно простой класс свинга. Действительно, ничего не было добавлено, чтобы сделать его совместимым с JWS.
3.2. Веб-приложение
Все, что нам нужно, это упаковать этот пример класса Swing в файл WAR вместе со следующим файлом JNLP:
Давайте назовем его hello.jndi и поместим в любую веб-папку нашей ВОЙНЫ. И JAR, и WAR загружаются, поэтому нам не нужно беспокоиться о том, чтобы поместить JAR в папку lib .
URL-адрес нашей последней банки жестко закодирован в файле JNLP, что может вызвать некоторые проблемы с распространением. Если мы изменим серверы развертывания, приложение больше не будет работать.
Давайте исправим это с помощью правильного сервлета позже в этой статье. А пока давайте просто поместим файл JAR для загрузки в корневую папку в качестве index.html , и связать его с элементом привязки:
Давайте также установим основной класс в нашем JAR-манифесте . Это может быть достигнуто путем настройки плагина JAR в pom.xml файл. Аналогично, мы перемещаем файл JAR за пределы WEB-INF/lib , поскольку он предназначен только для загрузки, т. е. не для загрузчика классов:
4. Специальные конфигурации
4.1. Вопросы безопасности
Чтобы запустить приложение, нам нужно подписать банку . Создание действительного сертификата и использование плагина JAR Sign Maven выходит за рамки этой статьи, но мы можем обойти эту политику безопасности в целях разработки или если у нас есть административный доступ к компьютеру нашего пользователя.
5. JnlpDownloadServlet
5.1. Алгоритмы сжатия
Есть специальный сервлет, который можно включить в нашу ВОЙНУ. Он оптимизирует загрузку, ища наиболее сжатую скомпилированную версию нашего файла JAR, если она доступна, а также исправляет жестко закодированное значение codebase в файле JLNP.
Поскольку наша БАНКА будет доступна для загрузки, рекомендуется упаковать ее с помощью алгоритма сжатия, такого как Pack200, и доставить обычную банку и любой пакет JAR.PACK.GZ или JAR.GZ сжатая версия в той же папке, чтобы этот сервлет мог выбрать лучший вариант для каждого случая.
К сожалению, пока нет стабильной версии плагина Maven для этого алгоритма сжатия, но мы можем работать с исполняемым файлом Pack200, который поставляется с JRE (обычно устанавливается по пути /jre/bin/ ).
Без изменения JNLP и путем размещения jar.gz и jar.pack.gz версии JAR в той же папке, сервлет выбирает лучшую, как только он получает вызов от удаленного JNLP. Это улучшает пользовательский интерфейс и оптимизирует сетевой трафик.
5.2. Динамическая подстановка Кодовой Базы
Сервлет также может выполнять динамические замены жестко закодированных URL-адресов в теге . Изменив JNLP на подстановочный знак , он доставит тот же окончательный тег визуализации.
5.3. Добавление сервлета в путь к классу
Чтобы добавить сервлет, давайте настроим обычное сопоставление сервлетов для шаблонов JAR и JNLP для вашего web.xml :
Сам сервлет поставляется в виде набора банок ( jardiff.jar и jnlp-servlet.jar ), которые в настоящее время находятся в разделе демонстраций и образцов на странице загрузки Java SDK.
В примере GitHub эти файлы включены в папку java-core-samples-lib и включены в качестве веб-ресурсов плагином Maven WAR:
6. Заключительные мысли
Java Web Start-это инструмент, который может использоваться в средах (интрасети), где нет сервера приложений. Кроме того, для приложений, которым необходимо манипулировать локальными файлами пользователей.
Одной из самых приятных особенностей Java является её многогранная природа. Конечно, создание традиционных десктопных и даже мобильных приложений — это здорово. Но что, если вы хотите уйти с проторенных дорожек и зайти на территорию разработки web приложений на Java? Для вас есть хорошая новость: в комплекте с языком идёт полноценный Servlet API, который позволяет вам создавать надёжные веб-приложения без особых хлопот.
Это статья для продолжающих. Если вы только начинаете знакомство с Java, советуем пройти быстрый старт, посмотреть видеокурс и выбрать одну из книг для новичков.
Создание приложений на Java с помощью Servlets
Встречайте сервлеты, особый тип Java-программ, выполняемый в пределах веб-контейнера (также называемый контейнером сервлетов, как, например, Tomcat и Jelly), которые позволяют обрабатывать запросы клиентов и ответы сервера просто и эффективно. Сейчас не время и не место дотошно объяснять вам, что из себя представляет сервлет. Достаточно сказать, что сервлеты создаются и уничтожаются их контейнерами, а не разработчиком, и действуют как промежуточный уровень между клиентами (как правило, веб-браузерами) и другими приложениями, запущенными на сервере (например, базами данных).
Сервлет — классная штука, которая помимо всего прочего может принимать данные от клиента, как правило через GET и POST-запросы, работать с cookie и параметрами сеанса. А ещё она обрабатывает данные через дополнительные уровни приложений и отправляет выходные данные клиенту как в текстовом, так и в бинарном форматах (HTML, XML, PDF, JPG, GIF и т.д.), во многих случаях используя Java Server Pages (JSP) файлы.
Лучше всего начинать работу с сервлетами через конкретный пример. Мы создадим простое веб-приложение, которое позволит клиентам регистрироваться с помощью простой HTML-формы. Данные, предоставленные клиентами, будут собираться сервлетом и проверяться валидаторами.
Разбираемся с конфигурационными файлами
Чтобы вы понимали структуру нашего будущего приложения, вот как она будет выглядеть:
Первым шагом к созданию приложения является определение так называемого дескриптора развёртывания. Он указывает, как приложение должно быть развёрнуто в определенной среде. Когда дело касается веб-приложений, дескриптор развёртывания представляет собой простой XML-файл, называемый web.xml и является частью стандартной спецификации Java EE. В нашем случае он будет выглядеть так:
Как вы видите, web . xml только определяет версию Java Servlet Specification (3.1), которую мы будем использовать в приложении. Разумеется, в нём может быть гораздо больше содержимого, включая директивы сопоставления сервлетов, параметры инициализации, список приветственных файлов и несколько дополнительных настроек. Но чтобы не усложнять процесс разработки, давайте оставим его таким как есть.
25–26 ноября, Москва и онлайн, От 24 000 до 52 000 ₽
Так как наше приложение будет использовать Servlet API и Java Servlet Pages (JSP) для отображения данных клиента, нам нужно загрузить все необходимые JAR. Maven сделает за нас трудную работу, вот как будет выглядеть файл POM:
Если говорить просто, pom.xml определяет все зависимости, необходимые для работы с сервлетами: JSP, Java Standard Tag Library (JSTL) и Java Expression Language (JEL).
Итак, мы уже создали конфигурационные файлы приложения. Однако в текущем состоянии оно буквально ничего не делает. Мы хотим, чтобы клиенты могли регистрироваться с помощью HTML-формы, поэтому следующее, что нам нужно сделать, — это создать JSP-файлы, которые будут отображать вышеупомянутую форму и данные клиента после успешного завершения регистрации. Этим мы сейчас и займёмся.
Работаем над внешним видом
Внешний вид приложения будет определяться двумя JSP-файлами — в контексте MVC они называются представлениями. Первый будет отвечать за отображение формы регистрации и возможных ошибок, вызванных после проверки введённых данных. Второй будет обычной страницей приветствия, в которой будут показаны данные, введённые клиентом, после успешного завершения процесса регистрации.
Вот первый JSP-файл:
Файл содержит простой HTML с парочкой дополнений. Вот она, прелесть JSP в сочетании с JSTL и JEL. Обратите внимание на то, как легко проверить наличие ошибок валидации, используя такие стандартные теги, как <с:if> и <c:forEach> .
Атрибут формы регистрации action указывает на следующий URL: $/processcustomer . Это значит, что каждый раз, когда клиент пытается зарегистрироваться, данные будут отправляться в processcustomer независимо от URL, по которому доступна форма. Это достигается за счёт функциональности объектов, доступных из JSP-файла, таких как request .
Скоро мы увидим, как сервлет связывается с URL processcustomer и как он взаимодействует с введёнными данными. А пока давайте посмотрим на JSP-файл, который отвечает за страницу приветствия:
Теперь, когда мы разобрались с отображением страниц, следующим шагом будет создание сервлета, ответственного за сбор данных клиента из POST-запросов и подтверждение данных простым способом.
Пишем контроллер
Вот как он выглядит:
Здесь мы назвали сервлет CustomerController , так как считается хорошей практикой использовать имя класса сервлета в качестве значения атрибута name аннотации @WebServlet . В противном случае некоторые контейнеры не смогут выполнить сопоставление, что приведёт к ошибке 404.
Валидаторы — это простые классы, которые проверяют определённые свойства, например, является ли строка пустой и выглядит ли email как email. На GitLab автора можно посмотреть на их реализацию.
Результат валидации влияет на дальнейший ход событий: если данные не валидны, клиент перенаправляется через объект RequestDispatcher на страницу регистрации, где отображаются соответствующие ошибки. Если всё в порядке, то отображается страница приветствия.
Итак, мы создали целое веб-приложение на Java, которое позволяет зарегистрировать клиентов с помощью HTML-формы, базового сервлета и нескольких JSP-файлов. Пора его запустить.
Запускаем приложение
Для запуска приложения нужно проделать следующие шаги:
- Для начала нам понадобится Git (убедитесь, что скачиваете подходящую версию), Maven и контейнер сервлета (например, Apache Tomcat, Jetty, или JBoss Wildfly). Если что-то из этого уже включено в вашу IDE, то вы можете использовать встроенный вариант.
- Используйте Git, чтобы клонировать репозиторий приложения, и импортируйте его в вашу IDE, желательно как проект Maven.
- Разверните проект в контейнере сервлета и запустите его. Развёртывание подразумевает создание WAR-файла или exploded WAR и его помещение в папку развёртывания контейнера по умолчанию. Зачастую IDE способна сделать развёртывание за вас, поэтому не перегружайте себя лишней работой и посмотрите документацию вашей IDE (документация для IntelliJ IDEA). Когда вы развернёте проект и запустите его, должен запуститься бразуер по умолчанию с окном регистрации.
- Попробуйте заполнить не все поля в форме или вовсе не заполнить их и вы увидите, как поверх соответствующих полей отобразятся ошибки. Введите всё как положено, и вас перенаправит на страницу приветствия.
Заключение
Итак, вы приобрели все навыки, необходимые для создания собственного веб-приложения на Java без необходимости прибегать к сложным фреймворкам. Всё, что вам нужно, — Servlet API, технология вроде JSP для отображения и встроенные средства Java. Здорово, правда?
Для работы с этим учебным курсом требуется следующее программное обеспечение и ресурсы.
Версия 7.2, 7.3, 7.4, 8.0, Java EE
GlassFish Server Open Source Edition или Контейнер сервлетов Tomcat или Сервер Oracle Web Logic
11gR1 (10.3.3) или более поздние версии
Примечания
Установка Java EE (но не Java SE!) позволяет, при желании, установить сервер GlassFish и контейнер сервлетов Apache Tomcat.
Если вы хотите сравнить проект с рабочим решением, можно загрузить демонстрационное приложение.
Настройка проекта веб-приложения
Выберите в главном меню "Файл" > "Новый проект" (CTRL+SHIFT+N). В области "Категории" выберите "Java Web". В области "Projects" (Проекты) выберите "Web Application" (Веб-приложение) и нажмите кнопку "Next" (Далее).
В экране 2 введите HelloWeb в текстовом поле "Project Name" (Имя проекта).
В поле "Project Location" укажите любой каталог на компьютере. В данном учебном курсе этот каталог будет называться $PROJECTHOME .
Установите флажок "Использовать отдельную папку для хранения библиотек" и укажите местоположение папки библиотек (необязательно). Дополнительные сведения об этой функции см. в разделе Создание проектов Java в документе Разработка приложений в IDE NetBeans
В среде IDE будет создана папка проекта $PROJECTHOME/HelloWeb . Структуру файлов проекта можно просмотреть в окне "Files" (Ctrl+2), а его логическую структуру – в окне "Projects" (Ctrl+1).
Папка проекта содержит все исходные файлы и метаданные проекта, например сценарий сборки Ant. После этого проект "HelloWeb" откроется в среде IDE. В главном окне редактора исходного кода откроется страница приветствия index.jsp .
Примечание. В зависимости от версий сервера и Java EE, указанных при создании проекта, IDE может создать страницу index.html в качестве стандартной страницы приветствия для веб-проекта. Вы можете следовать инструкциям этого руководства и использовать файл index.html либо создать файл index.jsp , который будет использоваться в качестве страницы приветствия, в мастере создания файлов. В последнем случае необходимо удалить файл index.html .
Создание и изменение исходных файлов веб-приложения
Наиболее важной функцией среды IDE является создание и изменение исходных файлов. Именно эти операции при разработке чаще всего отнимают наибольшее количество времени. Среда IDE предоставляет широкий спектр средств, подходящих под личный стиль любого разработчика — как сторонника кодирования вручную, так и разработчика, предпочитающего предоставить среде IDE создание крупных блоков кода.
Создание пакета Java и исходного файла Java
В окне 'Проекты' разверните узел 'Исходные пакеты'. Обратите внимание, что узел "Source Packages" содержит только пустой узел пакета по умолчанию.
Объявите в редакторе исходного кода переменную String , введя непосредственно под объявлением класса следующую строку:
Читайте также: