Latihan - Membuat aplikasi web Tomcat Java sederhana

Selesai

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:

  1. Kloning repositori proyek sampel dengan menggunakan perintah berikut:

    git clone https://github.com/MicrosoftDocs/simple-tomcat-maven-app.git
    
    
  2. Navigasi 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!

  1. 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>
    
  2. Tambahkan kredensial Anda ke file Maven ~/.m2/settings.xml dengan menggunakan contoh berikut, di mana Anda mengganti your-tomcat-username dengan nama pengguna, dan your-tomcat-password dengan kata sandi:

    <servers>
        <server>
            <id>TomcatServer</id>
            <username>your-tomcat-username</username>
            <password>your-tomcat-password</password>
        </server>
    </servers>
    
  3. 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:

  1. 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>
    
  2. 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:

  1. Perbarui struktur file untuk menambahkan servlet dengan menggunakan perintah berikut:

    mkdir -p src/main/java/com/example && touch src/main/java/com/example/HelloServlet.java
    
  2. Perbarui 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!

  1. 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>
    
  2. Tambahkan kredensial Anda ke file settings.xml~/.m2/ Maven dengan menggunakan contoh berikut, mengganti your-tomcat-username dengan nama pengguna dan your-tomcat-password dengan 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.