Latihan - Membuat aplikasi web Tomcat Java sederhana
Aplikasi web banyak digunakan untuk menangani tugas dunia nyata seperti manajemen inventaris, formulir online, dan portal yang menghadap pelanggan. Dalam modul ini, Anda mempelajari cara membuat dan menyebarkan aplikasi web Java menggunakan Apache Tomcat, server sumber terbuka yang populer.
Misalkan Anda adalah pengembang yang mengerjakan proyek untuk membangun aplikasi web dinamis di mana pengguna dapat memasukkan data dan berinteraksi dengan platform Anda secara real time. Klien Anda ingin aplikasi ini tersedia secara lokal untuk pengujian, dan di cloud untuk akses yang mudah. Penyiapan ini memungkinkan Anda menguji komputer lokal terlebih dahulu, lalu menyebarkan ke lingkungan langsung sebagai transisi yang mulus. Membangun pengaturan ini dari awal memberi Anda fleksibilitas untuk pembaruan dan konfigurasi di masa mendatang.
Dalam modul ini, Anda menjelajahi langkah-langkah penting untuk membangun dan menyebarkan aplikasi web Java dengan Tomcat. Anda memiliki dua opsi: mengkloning repositori proyek yang ada untuk penyebaran segera, atau membangun proyek baru dari awal dengan Maven. Modul ini mencakup pengaturan proyek Maven Anda, mengonfigurasi Tomcat, menyebarkan aplikasi secara lokal, dan menggunakan alat seperti Maven untuk mengelola dependensi dan paket.
Pada akhir modul ini, Anda akan dapat membuat dan menyebarkan aplikasi web berbasis Java di Tomcat, mempersiapkan Anda untuk mendukung penyebaran aplikasi web baik secara lokal maupun di lingkungan yang dihosting cloud.
Membuat aplikasi web Java Tomcat
Dalam latihan ini, Anda membuat aplikasi web Java minimal yang mengambil input dan menampilkan hasilnya di layar. Anda kemudian menyebarkan aplikasi web secara lokal di komputer Anda menggunakan Tomcat. Anda memiliki dua opsi berikut:
- Opsi 1: Kloning repositori sampel dan segera sebarkan aplikasi web Anda.
- Opsi 2: Buat proyek Maven Tomcat dari awal.
Opsi 1: Kloning repositori sampel dan segera sebarkan aplikasi web Anda
Untuk mengkloning repositori, gunakan langkah-langkah berikut:
Kloning repositori proyek sampel dengan menggunakan perintah berikut:
git clone https://github.com/MicrosoftDocs/simple-tomcat-maven-app.gitNavigasi ke repositori proyek kloning dengan menggunakan perintah berikut:
cd simple-tomcat-app
Gunakan langkah-langkah berikut untuk mengonfigurasi server Tomcat lokal Anda sehingga Anda dapat menyebarkan secara lokal ke Tomcat:
Peringatan
Menyimpan nama pengguna dan kata sandi secara langsung dalam file konfigurasi seperti tomcat-users.xml dan settings.xml Maven dalam teks biasa tidak dianggap aman, dan kami umumnya tidak merekomendasikan praktik ini - terutama untuk lingkungan produksi. Namun, alternatif lain berada di luar cakupan modul pelatihan ini. Jangan gunakan nama pengguna dan kata sandi asli Anda!
Edit file konfigurasi Tomcat conf/tomcat-users.xml sehingga terlihat seperti contoh berikut:
<tomcat-users> <user username="your-tomcat-username" password="your-tomcat-password" roles="manager-script"/> </tomcat-users>Tambahkan kredensial Anda ke file Maven ~/.m2/settings.xml dengan menggunakan contoh berikut, di mana Anda mengganti
your-tomcat-usernamedengan nama pengguna, danyour-tomcat-passworddengan kata sandi:<servers> <server> <id>TomcatServer</id> <username>your-tomcat-username</username> <password>your-tomcat-password</password> </server> </servers>Gunakan perintah berikut untuk mengemas dan menyebarkan aplikasi web Anda:
mvn clean package cargo:deploy
Setelah penyebaran, Anda dapat mengakses aplikasi di http://localhost:8080/simple-tomcat-app.
Opsi 2: Membuat proyek Maven Tomcat dari awal
Untuk membuat proyek Maven Tomcat dari awal, Anda bekerja melalui beberapa prosedur, mulai dari membuat proyek Maven, dan mengakhiri penyebaran aplikasi web Anda ke Tomcat.
Membuat proyek Maven
Untuk membuat proyek Maven untuk aplikasi web Java Anda, gunakan perintah berikut:
mvn archetype:generate \
-DgroupId=com.example \
-DartifactId=simple-tomcat-app \
-DarchetypeArtifactId=maven-archetype-webapp \
-DinteractiveMode=false
Output berikut ini umum:
[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] ------------------------------------------------------------------------
Anda sekarang memiliki proyek web Maven baru di folder bernama simple-tomcat-app. File dan direktori berikut sekarang tersedia:
└── simple-tomcat-app
├── pom.xml
└── src
├── main
│ ├── java
│ ├── resources
│ └── webapp
│ ├── index.jsp
│ └── WEB-INF
│ └── web.xml
└── test
├── java
└── resources
File Maven pom.xml yang dimodifikasi
Ubah file pom.xml dengan menggunakan langkah-langkah berikut:
Buka pom.xml dan atur versi Java ke 21 dengan menggunakan contoh berikut:
<java.version>21</java.version> <maven.compiler.source>21</maven.compiler.source> <maven.compiler.target>21</maven.compiler.target>Tambahkan plugin penyebaran Tomcat dan Azure dengan menggunakan contoh berikut:
<!-- 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>
Berikut adalah konten lengkap file 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>
Membuat antarmuka web
Untuk menambahkan halaman web, edit file src/main/webapp/index.jsp dengan menggunakan contoh berikut:
<!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>
Membuat servlet
Servlet adalah kelas pemrograman Java yang digunakan untuk memperluas kemampuan server dengan menangani permintaan dan menghasilkan konten dinamis. Servlet berjalan di sisi server dalam kontainer web - seperti Apache Tomcat - dan terutama digunakan untuk memproses permintaan HTTP dalam aplikasi web. Ketika klien - misalnya, browser web - mengirim permintaan ke server web, servlet memproses permintaan. Servlet melakukan logika bisnis yang diperlukan - misalnya, mengakses database atau memanggil layanan lain - dan kemudian menghasilkan respons - seringkali dalam bentuk HTML - untuk mengirim kembali ke klien. Servlet memungkinkan pengembang untuk membuat aplikasi web dinamis dan independen platform menggunakan Java.
Untuk membuat servlet, gunakan langkah-langkah berikut:
Perbarui struktur file untuk menambahkan servlet dengan menggunakan perintah berikut:
mkdir -p src/main/java/com/example && touch src/main/java/com/example/HelloServlet.javaPerbarui konten file HelloSeverlet.java dengan menggunakan contoh kode berikut:
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>"); } }
Struktur file baru Anda terlihat seperti ini:
└── simple-tomcat-app
├── pom.xml
└── src
├── main
│ ├── java
│ │ └── com
│ │ └── example
│ │ └── HelloServlet.java
│ ├── resources
│ └── webapp
│ ├── index.jsp
│ └── WEB-INF
│ └── web.xml
└── test
├── java
└── resources
Menyebarkan secara lokal ke Tomcat
Gunakan langkah-langkah berikut untuk mengonfigurasi server Tomcat lokal Anda sehingga Anda dapat menyebarkannya:
Peringatan
Menyimpan nama pengguna dan kata sandi secara langsung dalam file konfigurasi seperti tomcat-users.xml dan settings.xml Maven dalam teks biasa tidak aman dan umumnya tidak direkomendasikan, terutama untuk lingkungan produksi. Namun, alternatif lain berada di luar cakupan modul pelatihan ini. Jangan gunakan nama pengguna dan kata sandi asli Anda!
Edit file konfigurasi Tomcat conf/tomcat-users.xml dengan menggunakan contoh berikut:
<tomcat-users> <user username="your-tomcat-username" password="your-tomcat-password" roles="manager-script"/> </tomcat-users>Tambahkan kredensial Anda ke file settings.xml~/.m2/ Maven dengan menggunakan contoh berikut, mengganti
your-tomcat-usernamedengan nama pengguna danyour-tomcat-passworddengan kata sandi:<servers> <server> <id>TomcatServer</id> <username>your-tomcat-username</username> <password>your-tomcat-password</password> </server> </servers>
Menyebarkan aplikasi web Anda ke Tomcat
Gunakan perintah berikut untuk mengemas dan menyebarkan aplikasi web Anda:
mvn clean package cargo:deploy
Setelah aplikasi diterapkan, aplikasi Anda tersedia di http://localhost:8080/simple-tomcat-app.