Bài tập - Tạo một ứng dụng web Tomcat Java đơn giản
Các ứng dụng web được sử dụng rộng rãi để xử lý các tác vụ trong thế giới thực như quản lý hàng tồn kho, biểu mẫu trực tuyến và cổng thông tin đối mặt với khách hàng. Trong mô-đun này, bạn tìm hiểu làm thế nào để tạo ra và triển khai một ứng dụng web Java bằng cách sử dụng Apache Tomcat, một máy chủ mã nguồn mở phổ biến.
Giả sử bạn là nhà phát triển đang làm việc trên một dự án để xây dựng một ứng dụng web động, nơi người dùng có thể nhập dữ liệu và tương tác với nền tảng của bạn trong thời gian thực. Khách hàng của bạn muốn ứng dụng này khả dụng cục bộ để thử nghiệm và trên đám mây để dễ dàng truy cập. Thiết lập này cho phép bạn kiểm tra trên máy tính cục bộ trước tiên, sau đó triển khai đến môi trường trực tiếp dưới dạng chuyển tiếp liền mạch. Việc xây dựng thiết lập này từ đầu sẽ giúp bạn linh hoạt với các cấu hình và bản cập nhật trong tương lai.
Trong mô-đun này, bạn khám phá các bước cần thiết để xây dựng và triển khai ứng dụng Web Java với Tomcat. Bạn có hai tùy chọn: sao chép sổ ghi chép dự án hiện có để triển khai ngay lập tức hoặc xây dựng một dự án mới từ đầu với Maven. Mô-đun này đề cập đến việc thiết lập dự án Maven của bạn, đặt cấu hình Tomcat, triển khai ứng dụng cục bộ và sử dụng các công cụ như Maven để quản lý các phụ thuộc và gói.
Đến cuối mô-đun này, bạn sẽ có thể tạo và triển khai các ứng dụng web dựa trên Java trên Tomcat, chuẩn bị cho bạn hỗ trợ triển khai ứng dụng web cả cục bộ và trong môi trường lưu trữ trên đám mây.
Tạo ứng dụng web Java Tomcat
Trong bài tập này, bạn tạo ra một ứng dụng Java web tối thiểu có một đầu vào và hiển thị kết quả trên màn hình. Sau đó, bạn triển khai ứng dụng web cục bộ trên máy tính của mình bằng tomcat. Bạn có hai tùy chọn sau:
- Tùy chọn 1: Sao chép repo mẫu và triển khai ngay ứng dụng web của bạn.
- Tùy chọn 2: Tạo dự án Maven Tomcat từ đầu.
Tùy chọn 1: Sao chép hồ sơ mẫu và triển khai ngay ứng dụng web của bạn
Để sao chép repo, hãy làm theo các bước sau:
Sao chép báo cáo dự án mẫu bằng cách sử dụng lệnh sau đây:
git clone https://github.com/MicrosoftDocs/simple-tomcat-maven-app.gitDẫn hướng đến báo cáo dự án nhân bản bằng cách sử dụng lệnh sau đây:
cd simple-tomcat-app
Sử dụng các bước sau để cấu hình máy chủ Tomcat cục bộ của bạn để bạn có thể triển khai cục bộ đến Tomcat:
Cảnh báo
Lưu trữ tên người dùng và mật khẩu trực tiếp trong các tệp cấu hình như tomcat-users.xml và settings.xml của Maven ở dạng văn bản thuần không được coi là an toàn và chúng tôi thường không khuyên bạn thực hành này - đặc biệt là đối với môi trường sản xuất. Tuy nhiên, các lựa chọn thay thế khác nằm ngoài phạm vi của mô-đun đào tạo này. Không sử dụng tên người dùng và mật khẩu thực của bạn!
Chỉnh sửa tập tin cấu hình Tomcat conf /tomcat-users.xml để nó trông giống như ví dụ sau đây:
<tomcat-users> <user username="your-tomcat-username" password="your-tomcat-password" roles="manager-script"/> </tomcat-users>Thêm thông tin xác thực của bạn vào tệp Maven ~/.m2/settings.xml bằng cách sử dụng ví dụ sau đây,
your-tomcat-usernameyour-tomcat-passwordnơi bạn thay thế bằng tên người dùng và bằng mật khẩu:<servers> <server> <id>TomcatServer</id> <username>your-tomcat-username</username> <password>your-tomcat-password</password> </server> </servers>Sử dụng lệnh sau đây để đóng gói và triển khai ứng dụng web của bạn:
mvn clean package cargo:deploy
Sau khi triển khai, bạn có thể truy nhập vào ứng dụng của mình tại http://localhost:8080/simple-tomcat-app.
Tùy chọn 2: Tạo dự án Maven Tomcat từ đầu
Để tạo dự án Maven Tomcat từ đầu, bạn phải thực hiện nhiều quy trình, bắt đầu từ việc tạo dự án Maven và kết thúc bằng việc triển khai ứng dụng web của bạn cho Tomcat.
Tạo dự án Maven
Để tạo dự án Maven cho ứng dụng web Java của bạn, hãy sử dụng lệnh sau:
mvn archetype:generate \
-DgroupId=com.example \
-DartifactId=simple-tomcat-app \
-DarchetypeArtifactId=maven-archetype-webapp \
-DinteractiveMode=false
Đầu ra sau đây là điển hình:
[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] ------------------------------------------------------------------------
Bây giờ bạn có một dự án web Maven mới trong một thư mục có tên đơn giản-tomcat-app. Các tệp và thư mục sau hiện đã có sẵn:
└── simple-tomcat-app
├── pom.xml
└── src
├── main
│ ├── java
│ ├── resources
│ └── webapp
│ ├── index.jsp
│ └── WEB-INF
│ └── web.xml
└── test
├── java
└── resources
Sửa đổi tệp Kết pom.xml Maven
Sửa đổi tệp pom.xml bằng cách sử dụng các bước sau đây:
Mở pom.xml và đặt phiên bản Java thành 21 bằng cách sử dụng ví dụ sau:
<java.version>21</java.version> <maven.compiler.source>21</maven.compiler.source> <maven.compiler.target>21</maven.compiler.target>Thêm bổ trợ triển khai Tomcat và Azure bằng cách sử dụng ví dụ sau:
<!-- 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>
Dưới đây là nội dung đầy đủ của tệppom.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>
Tạo giao diện web
Để thêm trang web, hãy chỉnh sửa tệp src/main/webapp/index.jsp cách sử dụng ví dụ sau:
<!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>
Tạo một máy chủ
Một servlet là một lớp lập trình Java được sử dụng để mở rộng khả năng của một máy chủ bằng cách xử lý các yêu cầu và tạo ra nội dung động. Các Servlet chạy ở phía máy chủ trong một bộ chứa web - chẳng hạn như Apache Tomcat - và chủ yếu được sử dụng để xử lý các yêu cầu HTTP trong các ứng dụng web. Khi máy khách - ví dụ: trình duyệt web - gửi yêu cầu đến máy chủ web, máy chủ sẽ xử lý yêu cầu. Các servlet thực hiện bất kỳ logic kinh doanh cần thiết - ví dụ, truy cập cơ sở dữ liệu hoặc gọi các dịch vụ khác - và sau đó tạo ra một phản ứng - thường ở dạng HTML - để gửi lại cho khách hàng. Servlets cho phép nhà phát triển tạo ra các ứng dụng web động, độc lập với nền tảng sử dụng Java.
Để tạo một máy chủ, hãy làm theo các bước sau:
Cập nhật cấu trúc tệp để thêm một dịch vụ bằng cách sử dụng lệnh sau đây:
mkdir -p src/main/java/com/example && touch src/main/java/com/example/HelloServlet.javaCập nhật nội dung của tệp HelloSeverlet.java bằng cách sử dụng ví dụ mã sau đây:
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>"); } }
Cấu trúc tệp mới của bạn trông như thế này:
└── simple-tomcat-app
├── pom.xml
└── src
├── main
│ ├── java
│ │ └── com
│ │ └── example
│ │ └── HelloServlet.java
│ ├── resources
│ └── webapp
│ ├── index.jsp
│ └── WEB-INF
│ └── web.xml
└── test
├── java
└── resources
Triển khai cục bộ đến Tomcat
Sử dụng các bước sau để cấu hình máy chủ Tomcat cục bộ của bạn để bạn có thể triển khai máy chủ này:
Cảnh báo
Lưu trữ tên người dùng và mật khẩu trực tiếp trong các tệp cấu hình như tomcat-users.xml và settings.xml của Maven ở dạng văn bản thuần không an toàn và nói chung không được khuyến nghị, đặc biệt là đối với môi trường sản xuất. Tuy nhiên, các lựa chọn thay thế khác nằm ngoài phạm vi của mô-đun đào tạo này. Không sử dụng tên người dùng và mật khẩu thực của bạn!
Chỉnh sửa tập tin cấu hình Tomcat conf /tomcat-users.xml bằng cách sử dụng ví dụ sau đây:
<tomcat-users> <user username="your-tomcat-username" password="your-tomcat-password" roles="manager-script"/> </tomcat-users>Thêm thông tin xác thực của bạn vào tệp thư mục ~/.m2/settings.xmlcủa Maven bằng cách sử dụng ví dụ sau đây,
your-tomcat-usernameyour-tomcat-passwordthay thế bằng tên người dùng và bằng mật khẩu:<servers> <server> <id>TomcatServer</id> <username>your-tomcat-username</username> <password>your-tomcat-password</password> </server> </servers>
Triển khai ứng dụng web của bạn đến Tomcat
Sử dụng lệnh sau đây để đóng gói và triển khai ứng dụng web của bạn:
mvn clean package cargo:deploy
Sau khi triển khai, ứng dụng của bạn sẽ khả dụng tại http://localhost:8080/simple-tomcat-app.