Øvelse – Opret en simpel Tomcat Java-webapp

Fuldført

Webprogrammer bruges i vid udstrækning til at håndtere opgaver i den virkelige verden, f.eks. lagerstyring, onlineformularer og kundeorienterede portaler. I dette modul lærer du, hvordan du opretter og installerer et Java-webprogram ved hjælp af Apache Tomcat, der er en populær server med åben kildekode.

Lad os antage, at du er udvikler og arbejder på et projekt for at bygge et dynamisk webprogram, hvor brugerne kan angive data og interagere med din platform i realtid. Din klient ønsker, at denne app skal være tilgængelig lokalt til test og i cloudmiljøet, så den er nem at få adgang til. Med denne konfiguration kan du teste på din lokale computer først og derefter installere i et dynamisk miljø som en problemfri overgang. Hvis du bygger denne konfiguration fra bunden, får du fleksibilitet til fremtidige opdateringer og konfigurationer.

I dette modul udforsker du de vigtige trin til oprettelse og installation af en Java-webapp med Tomcat. Du har to muligheder: Klon et eksisterende projekt-lager til øjeblikkelig udrulning, eller opret et nyt projekt fra bunden med Maven. Dette modul dækker konfiguration af dit Maven-projekt, konfiguration af Tomcat, installation af appen lokalt og brug af værktøjer som Maven til at administrere afhængigheder og pakker.

Når du er færdig med dette modul, kan du oprette og installere Java-baserede webprogrammer på Tomcat og dermed forberede dig på at understøtte udrulning af webprogrammer både lokalt og i cloudbaserede miljøer.

Opret en Java Tomcat-webapp

I denne øvelse skal du oprette et minimalt Java-webprogram, der tager et input og viser resultatet på skærmen. Du installerer derefter webappen lokalt på din computer ved hjælp af Tomcat. Du har følgende to muligheder:

  • Mulighed 1: Klon eksempel-lageret, og udrul straks din webapp.
  • Mulighed 2: Opret et Maven Tomcat-projekt fra bunden.

Mulighed 1: Klon eksempel-lageret, og udrul straks din webapp

Hvis du vil klone lageret, skal du benytte følgende fremgangsmåde:

  1. Klon eksempelprojektets lager ved hjælp af følgende kommando:

    git clone https://github.com/MicrosoftDocs/simple-tomcat-maven-app.git
    
    
  2. Naviger til det klonede projekt-lager ved hjælp af følgende kommando:

    cd simple-tomcat-app
    

Brug følgende trin til at konfigurere din lokale Tomcat-server, så du kan installere lokalt på Tomcat:

Advarsel

Lagring af brugernavne og adgangskoder direkte i konfigurationsfiler som tomcat-users.xml og Mavens settings.xml i almindelig tekst anses ikke for at være sikker, og vi anbefaler generelt ikke denne praksis – især til produktionsmiljøer. Andre alternativer er dog uden for dette træningsmoduls anvendelsesområde. Brug ikke dit rigtige brugernavn og din adgangskode!

  1. Rediger tomcat-konfigurationsfilens konf/tomcat-users.xml , så den ligner følgende eksempel:

    <tomcat-users>
        <user username="your-tomcat-username" password="your-tomcat-password" roles="manager-script"/>
    </tomcat-users>
    
  2. Føj dine legitimationsoplysninger til filen Maven ~/.m2/settings.xml ved hjælp af følgende eksempel, hvor du erstatter your-tomcat-username med et brugernavn og your-tomcat-password med en adgangskode:

    <servers>
        <server>
            <id>TomcatServer</id>
            <username>your-tomcat-username</username>
            <password>your-tomcat-password</password>
        </server>
    </servers>
    
  3. Brug følgende kommando til at pakke og installere din webapp:

    mvn clean package cargo:deploy
    

Efter udrulningen kan du få adgang til din app på http://localhost:8080/simple-tomcat-app.

Mulighed 2: Opret et Maven Tomcat-projekt fra bunden

Hvis du vil oprette et Maven Tomcat-projekt fra bunden, skal du gennemgå flere procedurer, der starter fra oprettelsen af Maven-projektet og slutter med at udrulle din webapp til Tomcat.

Opret et Maven-projekt

Hvis du vil oprette et Maven-projekt til dit Java-webprogram, skal du bruge følgende kommando:

mvn archetype:generate \
    -DgroupId=com.example \
    -DartifactId=simple-tomcat-app \
    -DarchetypeArtifactId=maven-archetype-webapp \
    -DinteractiveMode=false

Følgende output er typisk:

[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] ------------------------------------------------------------------------

Du har nu et nyt Maven-webprojekt i en mappe med navnet simple-tomcat-app. Følgende filer og mapper er nu tilgængelige:

└── simple-tomcat-app
    ├── pom.xml
    └── src
        ├── main
        │   ├── java
        │   ├── resources
        │   └── webapp
        │       ├── index.jsp
        │       └── WEB-INF
        │           └── web.xml
        └── test
            ├── java
            └── resources

Rediger filen Maven pom.xml

Rediger pom.xml-filen ved hjælp af følgende trin:

  1. Åbn pom.xml , og angiv Java-versionen til 21 ved hjælp af følgende eksempel:

    <java.version>21</java.version>
    <maven.compiler.source>21</maven.compiler.source>
    <maven.compiler.target>21</maven.compiler.target>
    
  2. Tilføj Plug-ins til Tomcat og Azure-udrulning ved hjælp af følgende eksempel:

    <!-- 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>
    

Her er det fulde indhold af pom.xml-filen :

<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>

Opret en webgrænseflade

Hvis du vil tilføje en webside, skal du redigere filen src/main/webapp/index.jsp ved hjælp af følgende eksempel:

<!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>

Opret en servlet

En servlet er en Java-programmeringsklasse, der bruges til at udvide en servers funktioner ved at håndtere anmodninger og generere dynamisk indhold. Servlets kører på serversiden i en webobjektbeholder – f.eks Apache Tomcat – og bruges primært til at behandle HTTP-anmodninger i webprogrammer. Når en klient – f.eks. en webbrowser – sender en anmodning til en webserver, behandler servlet'en anmodningen. Servlet'en udfører enhver nødvendig forretningslogik – f.eks. at få adgang til databaser eller kalde andre tjenester – og genererer derefter et svar – ofte i form af HTML – for at sende tilbage til klienten. Servlets gør det muligt for udviklere at oprette dynamiske, platformuafhængige webprogrammer ved hjælp af Java.

Hvis du vil oprette en tjeneste, skal du benytte følgende fremgangsmåde:

  1. Opdater filstrukturen for at tilføje en servlet ved hjælp af følgende kommando:

    mkdir -p src/main/java/com/example && touch src/main/java/com/example/HelloServlet.java
    
  2. Opdater indholdet af HelloSeverlet.java-filen ved hjælp af følgende kodeeksempel:

    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>");
        }
    }
    

Den nye filstruktur ser sådan ud:

└── simple-tomcat-app
    ├── pom.xml
    └── src
        ├── main
        │   ├── java
        │   │   └── com
        │   │       └── example
        │   │           └── HelloServlet.java
        │   ├── resources
        │   └── webapp
        │       ├── index.jsp
        │       └── WEB-INF
        │           └── web.xml
        └── test
            ├── java
            └── resources

Udrul lokalt på Tomcat

Brug følgende trin til at konfigurere din lokale Tomcat-server, så du kan installere den:

Advarsel

Lagring af brugernavne og adgangskoder direkte i konfigurationsfiler som tomcat-users.xml og Mavens settings.xml i almindelig tekst er ikke sikker og anbefales generelt ikke, især ikke til produktionsmiljøer. Andre alternativer er dog uden for dette træningsmoduls anvendelsesområde. Brug ikke dit rigtige brugernavn og din adgangskode!

  1. Rediger tomcat-konfigurationsfilens conf/tomcat-users.xml ved hjælp af følgende eksempel:

    <tomcat-users>
        <user username="your-tomcat-username" password="your-tomcat-password" roles="manager-script"/>
    </tomcat-users>
    
  2. Føj dine legitimationsoplysninger til Mavens ~/.m2/settings.xml-fil ved hjælp af følgende eksempel ved at erstatte your-tomcat-username med et brugernavn og your-tomcat-password med en adgangskode:

    <servers>
        <server>
            <id>TomcatServer</id>
            <username>your-tomcat-username</username>
            <password>your-tomcat-password</password>
        </server>
    </servers>
    

Udrul din webapp på Tomcat

Brug følgende kommando til at pakke og installere din webapp:

mvn clean package cargo:deploy

Efter udrulningen er din app tilgængelig på http://localhost:8080/simple-tomcat-app.