Övning – Skapa en enkel Tomcat Java-webbapp
Webbprogram används ofta för att hantera verkliga uppgifter som inventeringshantering, onlineformulär och kundinriktade portaler. I den här modulen får du lära dig hur du skapar och distribuerar en Java-webbapp med Apache Tomcat, en populär server med öppen källkod.
Anta att du är utvecklare som arbetar med ett projekt för att skapa ett dynamiskt webbprogram där användare kan ange data och interagera med din plattform i realtid. Klienten vill att den här appen ska vara tillgänglig lokalt för testning och i molnet för enkel åtkomst. Med den här konfigurationen kan du testa på din lokala dator först och sedan distribuera till en livemiljö som en sömlös övergång. Genom att skapa den här konfigurationen från grunden får du flexibilitet för framtida uppdateringar och konfigurationer.
I den här modulen utforskar du de viktigaste stegen för att skapa och distribuera en Java-webbapp med Tomcat. Du har två alternativ: antingen klona en befintlig projektrepo för omedelbar distribution eller skapa ett nytt projekt från grunden med Maven. Den här modulen beskriver hur du konfigurerar ditt Maven-projekt, konfigurerar Tomcat, distribuerar appen lokalt och använder verktyg som Maven för att hantera beroenden och paket.
I slutet av den här modulen kommer du att kunna skapa och distribuera Java-baserade webbprogram på Tomcat, vilket förbereder dig för att stödja distribution av webbprogram både lokalt och i molnbaserade miljöer.
Skapa en Java Tomcat-webbapp
I den här övningen skapar du ett minimalt Java-webbprogram som tar indata och visar resultatet på skärmen. Sedan kör du webbappen lokalt på datorn genom att använda Tomcat. Du har följande två alternativ:
- Alternativ 1: Klona exempeldatabasen och distribuera webbappen omedelbart.
- Alternativ 2: Skapa ett Maven Tomcat-projekt från grunden.
Alternativ 1: Klona exempeldatabasen och distribuera webbappen omedelbart
Om du vill klona lagringsplatsen använder du följande steg:
Klona exempelprojektets lagringsplats med hjälp av följande kommando:
git clone https://github.com/MicrosoftDocs/simple-tomcat-maven-app.gitNavigera till den klonade projektrepoen med hjälp av följande kommando:
cd simple-tomcat-app
Använd följande steg för att konfigurera din lokala Tomcat-server så att du kan distribuera lokalt till Tomcat:
Varning
Lagring av användarnamn och lösenord direkt i konfigurationsfiler som tomcat-users.xml och Mavens settings.xml i oformaterad text anses inte vara säkert, och vi rekommenderar vanligtvis inte den här metoden – särskilt inte för produktionsmiljöer. Andra alternativ ligger dock utanför omfånget för den här utbildningsmodulen. Använd inte ditt riktiga användarnamn och lösenord!
Redigera Konfigurationsfilen Tomcat conf/tomcat-users.xml så att den ser ut som i följande exempel:
<tomcat-users> <user username="your-tomcat-username" password="your-tomcat-password" roles="manager-script"/> </tomcat-users>Lägg till dina autentiseringsuppgifter i filen Maven ~/.m2/settings.xml med hjälp av följande exempel, där du ersätter
your-tomcat-usernamemed ett användarnamn ochyour-tomcat-passwordmed ett lösenord:<servers> <server> <id>TomcatServer</id> <username>your-tomcat-username</username> <password>your-tomcat-password</password> </server> </servers>Använd följande kommando för att paketera och distribuera webbappen:
mvn clean package cargo:deploy
Efter distributionen kan du komma åt din app på http://localhost:8080/simple-tomcat-app.
Alternativ 2: Skapa ett Maven Tomcat-projekt från grunden
Om du vill skapa ett Maven Tomcat-projekt från grunden arbetar du med flera procedurer, från att skapa Maven-projektet och sluta med att distribuera webbappen till Tomcat.
Skapa ett Maven-projekt
Om du vill skapa ett Maven-projekt för java-webbprogrammet använder du följande kommando:
mvn archetype:generate \
-DgroupId=com.example \
-DartifactId=simple-tomcat-app \
-DarchetypeArtifactId=maven-archetype-webapp \
-DinteractiveMode=false
Följande utdata är typiska:
[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] ------------------------------------------------------------------------
Nu har du ett nytt Maven-webbprojekt i en mapp med namnet simple-tomcat-app. Nu är följande filer och kataloger tillgängliga:
└── simple-tomcat-app
├── pom.xml
└── src
├── main
│ ├── java
│ ├── resources
│ └── webapp
│ ├── index.jsp
│ └── WEB-INF
│ └── web.xml
└── test
├── java
└── resources
Ändra filen pom.xml i Maven
Ändra pom.xml-filen med hjälp av följande steg:
Öppna pom.xml och ange Java-versionen till 21 med hjälp av följande exempel:
<java.version>21</java.version> <maven.compiler.source>21</maven.compiler.source> <maven.compiler.target>21</maven.compiler.target>Lägg till plugin-program för Tomcat- och Azure-distribution med hjälp av följande exempel:
<!-- 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>
Här är det fullständiga innehållet i 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>
Skapa ett webbgränssnitt
Om du vill lägga till en webbsida redigerar du filen src/main/webapp/index.jsp med hjälp av följande exempel:
<!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>
Skapa en servlet
En servlet är en Java-programmeringsklass som används för att utöka funktionerna på en server genom att hantera begäranden och generera dynamiskt innehåll. Servletar körs på serversidan i en webbcontainer , till exempel Apache Tomcat, och används främst för att bearbeta HTTP-begäranden i webbprogram. När en klient – till exempel en webbläsare – skickar en begäran till en webbserver bearbetar servleten begäran. servleten utför all nödvändig affärslogik – till exempel att komma åt databaser eller anropa andra tjänster – och genererar sedan ett svar – ofta i form av HTML – för att skicka tillbaka till klienten. Med Servlets kan utvecklare skapa dynamiska, plattformsoberoende webbprogram med Java.
Använd följande steg för att skapa en servlet:
Uppdatera filstrukturen för att lägga till en servlet med hjälp av följande kommando:
mkdir -p src/main/java/com/example && touch src/main/java/com/example/HelloServlet.javaUppdatera innehållet i HelloSeverlet.java-filen med hjälp av följande kodexempel:
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 nya filstrukturen ser ut så här:
└── simple-tomcat-app
├── pom.xml
└── src
├── main
│ ├── java
│ │ └── com
│ │ └── example
│ │ └── HelloServlet.java
│ ├── resources
│ └── webapp
│ ├── index.jsp
│ └── WEB-INF
│ └── web.xml
└── test
├── java
└── resources
Distribuera lokalt till Tomcat
Använd följande steg för att konfigurera din lokala Tomcat-server så att du kan distribuera till den:
Varning
Lagring av användarnamn och lösenord direkt i konfigurationsfiler som tomcat-users.xml och Mavens settings.xml i oformaterad text är inte säkert och rekommenderas vanligtvis inte, särskilt inte för produktionsmiljöer. Andra alternativ ligger dock utanför omfånget för den här utbildningsmodulen. Använd inte ditt riktiga användarnamn och lösenord!
Redigera Konfigurationsfilen Tomcat conf/tomcat-users.xml med hjälp av följande exempel:
<tomcat-users> <user username="your-tomcat-username" password="your-tomcat-password" roles="manager-script"/> </tomcat-users>Lägg till dina autentiseringsuppgifter i Mavens ~/.m2/settings.xml-fil med hjälp av följande exempel och ersätt
your-tomcat-usernamemed ett användarnamn ochyour-tomcat-passwordmed ett lösenord:<servers> <server> <id>TomcatServer</id> <username>your-tomcat-username</username> <password>your-tomcat-password</password> </server> </servers>
Distribuera webbappen till Tomcat
Använd följande kommando för att paketera och distribuera webbappen:
mvn clean package cargo:deploy
Efter distributionen är appen tillgänglig på http://localhost:8080/simple-tomcat-app.