Упражнение. Создание простого веб-приложения Tomcat Java
Веб-приложения широко используются для обработки реальных задач, таких как управление инвентаризацией, онлайн-формы и порталы, предназначенные для клиентов. В этом модуле вы узнаете, как создать и развернуть веб-приложение Java с помощью Apache Tomcat, популярного сервера с открытым кодом.
Предположим, вы являетесь разработчиком, работающим над проектом, чтобы создать динамическое веб-приложение, где пользователи могут вводить данные и взаимодействовать с платформой в режиме реального времени. Клиент хочет, чтобы это приложение было доступно локально для тестирования и в облаке для простого доступа. Эта настройка позволяет сначала тестировать на локальном компьютере, а затем развертывать в реальной среде как плавный переход. Создание этой установки с нуля обеспечивает гибкость для будущих обновлений и конфигураций.
В этом модуле вы изучите основные шаги по созданию и развертыванию веб-приложения Java с помощью Tomcat. У вас есть два варианта: клонирование существующего репозитория проекта для немедленного развертывания или создание нового проекта с нуля с помощью Maven. В этом модуле рассматривается настройка проекта Maven, настройка Tomcat, развертывание приложения локально и использование таких средств, как Maven для управления зависимостями и пакетами.
К концу этого модуля вы сможете создавать и развертывать веб-приложения на основе Java в Tomcat, подготавливая вас к поддержке развертывания веб-приложений как локально, так и в облачных средах.
Создание веб-приложения Java Tomcat
В этом упражнении создается минимальное веб-приложение Java, которое принимает входные данные и отображает результат на экране. Затем вы развертываете веб-приложение локально на компьютере с помощью Tomcat. У вас есть следующие два варианта:
- Вариант 1. Клонирование примера репозитория и немедленное развертывание веб-приложения.
- Вариант 2. Создание проекта Maven Tomcat с нуля.
Вариант 1. Клонирование примера репозитория и немедленное развертывание веб-приложения
Чтобы клонировать репозиторий, выполните следующие действия.
Клонируйте пример репозитория проекта с помощью следующей команды:
git clone https://github.com/MicrosoftDocs/simple-tomcat-maven-app.git
Перейдите к репозиторию клонированного проекта с помощью следующей команды:
cd simple-tomcat-app
Чтобы настроить локальный сервер Tomcat и развернуть приложения локально, выполните следующие действия:
Предупреждение
Хранение имен пользователей и паролей непосредственно в файлах конфигурации, таких как tomcat-users.xml и settings.xml Maven в обычном тексте, не считается безопасным, и мы, как правило, не рекомендуем использовать эту практику, особенно для рабочих сред. Однако другие альтернативные варианты находятся вне области этого модуля обучения. Не используйте реальное имя пользователя и пароль!
Измените conf/tomcat-users.xml файла конфигурации Tomcat, чтобы он выглядел следующим образом:
<tomcat-users> <user username="your-tomcat-username" password="your-tomcat-password" roles="manager-script"/> </tomcat-users>
Добавьте свои учетные данные в файл Maven ~/.m2/settings.xml с помощью следующего примера, в котором вы заменяете
your-tomcat-username
имя пользователя иyour-tomcat-password
пароль:<servers> <server> <id>TomcatServer</id> <username>your-tomcat-username</username> <password>your-tomcat-password</password> </server> </servers>
Используйте следующую команду для упаковки и развертывания веб-приложения:
mvn clean package cargo:deploy
После развертывания вы можете получить доступ к приложению по адресу http://localhost:8080/simple-tomcat-app
.
Вариант 2. Создание проекта Maven Tomcat с нуля
Чтобы создать проект Maven Tomcat с нуля, необходимо выполнить несколько процедур, начиная с создания проекта Maven и заканчивая развертыванием веб-приложения в Tomcat.
Создание проекта Maven
Чтобы создать проект Maven для веб-приложения Java, используйте следующую команду:
mvn archetype:generate \
-DgroupId=com.example \
-DartifactId=simple-tomcat-app \
-DarchetypeArtifactId=maven-archetype-webapp \
-DinteractiveMode=false
Ниже приведены типичные выходные данные:
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: basedir, Value: /home/XXXXXXXX/LearnProjects/simple-tomcat-maven-app
[INFO] Parameter: package, Value: com.microsoft.azure.samples
[INFO] Parameter: groupId, Value: com.microsoft.azure.samples
[INFO] Parameter: artifactId, Value: azure-javaweb-app-simple
[INFO] Parameter: packageName, Value: com.microsoft.azure.samples
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] project created from Old (1.x) Archetype in dir: /private/tmp/TMP/azure-javaweb-app
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.657 s
[INFO] Finished at: 2024-10-18T12:39:41-07:00
[INFO] ------------------------------------------------------------------------
Теперь у вас есть новый веб-проект Maven в папке с именем simple-tomcat-app. Вам доступны следующие файлы и каталоги:
└── simple-tomcat-app
├── pom.xml
└── src
├── main
│ ├── java
│ ├── resources
│ └── webapp
│ ├── index.jsp
│ └── WEB-INF
│ └── web.xml
└── test
├── java
└── resources
Измените файл pom.xml Maven
Измените файлpom.xml , выполнив следующие действия.
Откройте pom.xml и задайте для версии Java значение 21, используя следующий пример:
<java.version>21</java.version> <maven.compiler.source>21</maven.compiler.source> <maven.compiler.target>21</maven.compiler.target>
Добавьте плагины для развертывания на Tomcat и Azure, используя следующий пример:
<!-- Tomcat 10 Maven Plugin --> <plugin> <groupId>org.codehaus.cargo</groupId> <artifactId>cargo-maven3-plugin</artifactId> <version>1.9.9</version> <configuration> <!-- Container Configuration --> <container> <containerId>tomcat10x</containerId> <type>remote</type> </container> <!-- Configuration for Remote Deployment --> <configuration> <type>runtime</type> <properties> <cargo.remote.uri>http://localhost:8080/manager/text</cargo.remote.uri> <cargo.remote.username>cargo</cargo.remote.username> <cargo.remote.password>your-cargo-password</cargo.remote.password> </properties> </configuration> <!-- Deployable Artifact Configuration --> <deployables> <deployable> <groupId>${project.groupId}</groupId> <artifactId>${project.artifactId}</artifactId> <type>war</type> <properties> <context>${project.artifactId}</context> </properties> </deployable> </deployables> </configuration> </plugin>
Ниже приведено полное содержимое файла pom.xml :
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>simple-tomcat-app</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>simple-tomcat-app</name>
<properties>
<java.version>21</java.version>
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>6.0.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<finalName>simple-tomcat-app</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.10.1</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
<!-- Tomcat 10 Maven Plugin -->
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven3-plugin</artifactId>
<version>1.9.9</version>
<configuration>
<!-- Container Configuration -->
<container>
<containerId>tomcat10x</containerId>
<type>remote</type>
</container>
<!-- Configuration for Remote Deployment -->
<configuration>
<type>runtime</type>
<properties>
<cargo.remote.uri>http://localhost:8080/manager/text</cargo.remote.uri>
<cargo.remote.username>cargo</cargo.remote.username>
<cargo.remote.password>your-cargo-password</cargo.remote.password>
</properties>
</configuration>
<!-- Deployable Artifact Configuration -->
<deployables>
<deployable>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<type>war</type>
<properties>
<context>${project.artifactId}</context>
</properties>
</deployable>
</deployables>
</configuration>
</plugin>
</plugins>
</build>
</project>
Создание веб-интерфейса
Чтобы добавить веб-страницу, измените файл src/main/webapp/index.jsp с помощью следующего примера:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Simple Tomcat App</title>
</head>
<body>
<h1>Welcome to the Simple Tomcat App</h1>
<form action="hello" method="get">
<label for="name">Enter your name:</label>
<input type="text" id="name" name="name">
<button type="submit">Submit</button>
</form>
</body>
</html>
Создание сервлета
Сервлет — это класс программирования Java, используемый для расширения возможностей сервера путем обработки запросов и создания динамического содержимого. Сервлеты выполняются на стороне сервера в веб-контейнере, например Apache Tomcat, и в основном используются для обработки HTTP-запросов в веб-приложениях. Когда клиент ( например, веб-браузер) отправляет запрос на веб-сервер, сервлет обрабатывает запрос. Сервлет выполняет любую необходимую бизнес-логику, например доступ к базам данных или вызову других служб, а затем создает ответ ( часто в виде HTML- для отправки клиенту обратно. Сервлеты позволяют разработчикам создавать динамические, независимые от платформы веб-приложения с помощью Java.
Чтобы создать сервлет, выполните следующие действия.
Обновите структуру файла, чтобы добавить сервлет с помощью следующей команды:
mkdir -p src/main/java/com/example && touch src/main/java/com/example/HelloServlet.java
Обновите содержимое файла HelloSeverlet.java с помощью следующего примера кода:
package com.example; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; @WebServlet("/hello") public class HelloServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String name = request.getParameter("name"); response.setContentType("text/html"); response.getWriter().write("<h1>Hello, " + name + "!</h1>"); } }
Новая структура файла выглядит следующим образом:
└── simple-tomcat-app
├── pom.xml
└── src
├── main
│ ├── java
│ │ └── com
│ │ └── example
│ │ └── HelloServlet.java
│ ├── resources
│ └── webapp
│ ├── index.jsp
│ └── WEB-INF
│ └── web.xml
└── test
├── java
└── resources
Развертывание локально в Tomcat
Чтобы настроить локальный сервер Tomcat для возможности развертывания, выполните следующие шаги:
Предупреждение
Хранение имен пользователей и паролей непосредственно в файлах конфигурации, таких как tomcat-users.xml и settings.xml Maven в обычном тексте, не является безопасным и обычно не рекомендуется, особенно для рабочих сред. Однако другие альтернативные варианты находятся вне области этого модуля обучения. Не используйте реальное имя пользователя и пароль!
Измените файл конфигурации Tomcat /tomcat-users.xml с помощью следующего примера:
<tomcat-users> <user username="your-tomcat-username" password="your-tomcat-password" roles="manager-script"/> </tomcat-users>
Добавьте учетные данные в файл Maven ~/.m2/settings.xml с помощью следующего примера, заменив
your-tomcat-username
имя пользователя иyour-tomcat-password
пароль:<servers> <server> <id>TomcatServer</id> <username>your-tomcat-username</username> <password>your-tomcat-password</password> </server> </servers>
Развертывание веб-приложения в Tomcat
Используйте следующую команду для упаковки и развертывания веб-приложения:
mvn clean package cargo:deploy
После развертывания приложение будет доступно по адресу http://localhost:8080/simple-tomcat-app
.