تمرين - إنشاء تطبيق ويب Tomcat Java بسيط
تستخدم تطبيقات الويب على نطاق واسع للتعامل مع مهام العالم الحقيقي مثل إدارة المخزون والنماذج عبر الإنترنت والمداخل التي تواجه العملاء. في هذه الوحدة، ستتعلم كيفية إنشاء تطبيق ويب Java ونشره باستخدام Apache Tomcat، وهو خادم مفتوح المصدر شائع.
لنفترض أنك مطور يعمل على مشروع لإنشاء تطبيق ويب ديناميكي حيث يمكن للمستخدمين إدخال البيانات والتفاعل مع النظام الأساسي الخاص بك في الوقت الفعلي. يريد عميلك أن يكون هذا التطبيق متوفرا محليا للاختبار، وعلى السحابة للوصول السهل. يتيح لك هذا الإعداد الاختبار على جهازك المحلي أولا، ثم النشر إلى بيئة مباشرة كمرحلة انتقالية سلسة. يمنحك إنشاء هذا الإعداد من البداية مرونة للتحديثات والتكوينات المستقبلية.
في هذه الوحدة النمطية، يمكنك استكشاف الخطوات الأساسية لبناء ونشر تطبيق Java على الويب باستخدام Tomcat. لديك خياران: إما استنساخ مستودع مشروع موجود للتوزيع الفوري، أو إنشاء مشروع جديد من البداية باستخدام Maven. تغطي هذه الوحدة إعداد مشروع Maven وتكوين Tomcat ونشر التطبيق محليا واستخدام أدوات مثل Maven لإدارة التبعيات والحزم.
بنهاية هذه الوحدة النمطية، ستتمكن من إنشاء ونشر تطبيقات الويب المستندة إلى Java على Tomcat، مما يعدك لدعم نشر تطبيق الويب محليا وفي البيئات المستضافة على السحابة.
إنشاء تطبيق ويب Java Tomcat
في هذا التمرين، يمكنك إنشاء تطبيق ويب Java الحد الأدنى الذي يأخذ إدخالا ويعرض النتيجة على الشاشة. ثم تقوم بنشر تطبيق الويب محليا على جهاز الكمبيوتر الخاص بك باستخدام Tomcat. لديك الخياران التاليان:
- الخيار 1: استنساخ نموذج المستودع ونشر تطبيق الويب الخاص بك على الفور.
- الخيار 2: إنشاء مشروع Maven Tomcat من البداية.
الخيار 1: استنساخ نموذج المستودع ونشر تطبيق الويب الخاص بك على الفور
لاستنساخ المستودع، استخدم الخطوات التالية:
استنساخ نموذج مستودع المشروع باستخدام الأمر التالي:
git clone https://github.com/MicrosoftDocs/simple-tomcat-maven-app.gitانتقل إلى مستودع المشروع المستنسخ باستخدام الأمر التالي:
cd simple-tomcat-maven-app
استخدم الخطوات التالية لتكوين خادم Tomcat المحلي حتى تتمكن من النشر محليا إلى Tomcat:
تحذير
تخزين أسماء المستخدمين وكلمات المرور مباشرة في ملفات التكوين مثل tomcat-users.xml و pom.xml بالنص العادي لا يعتبر آمنا، ونحن عموما لا نوصي بهذه الممارسة - خاصة في بيئات الإنتاج. ومع ذلك، فإن البدائل الأخرى خارج نطاق وحدة التدريب هذه. لا تستخدم اسم المستخدم وكلمة المرور الحقيقيين!
تحرير تكوين ملف تكوين Tomcat /tomcat-users.xml بحيث يبدو مثل المثال التالي:
<tomcat-users> <user username="your-tomcat-username" password="your-tomcat-password" roles="manager-script"/> </tomcat-users>في pom.xml، قم بتحديث بيانات اعتماد Cargo عن بعد لتطابق مع اسم المستخدم وكلمة المرور التي أضفتها إلىtomcat-users.xml:
<cargo.remote.username>your-tomcat-username</cargo.remote.username> <cargo.remote.password>your-tomcat-password</cargo.remote.password>استخدم الأمر التالي لحزم تطبيق الويب ونشره:
mvn clean package cargo:deploy
بعد النشر، يمكنك الوصول إلى تطبيقك على http://localhost:8080/simple-tomcat-app.
الخيار 2: إنشاء مشروع Maven Tomcat من البداية
لإنشاء مشروع Maven Tomcat من البداية، يمكنك العمل من خلال إجراءات متعددة، بدءا من إنشاء مشروع Maven، وتنتهي بنشر تطبيق الويب الخاص بك إلى Tomcat.
إنشاء مشروع Maven
لإنشاء مشروع Maven لتطبيق ويب Java الخاص بك، استخدم الأمر التالي:
mvn archetype:generate \
-DgroupId=com.example \
-DartifactId=simple-tomcat-app \
-DarchetypeArtifactId=maven-archetype-webapp \
-DinteractiveMode=false
الإخراج التالي نموذجي:
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: basedir, Value: /home/XXXXXXXX/LearnProjects
[INFO] Parameter: package, Value: com.example
[INFO] Parameter: groupId, Value: com.example
[INFO] Parameter: artifactId, Value: simple-tomcat-app
[INFO] Parameter: packageName, Value: com.example
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] project created from Old (1.x) Archetype in dir: /home/XXXXXXXX/LearnProjects/simple-tomcat-app
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.657 s
[INFO] Finished at: 2024-10-18T12:39:41-07:00
[INFO] ------------------------------------------------------------------------
لديك الآن مشروع ويب Maven جديد في مجلد يسمى simple-tomcat-app. تتوفر الملفات والدلائل التالية الآن:
└── simple-tomcat-app
├── pom.xml
└── src
├── main
│ ├── java
│ ├── resources
│ └── webapp
│ ├── index.jsp
│ └── WEB-INF
│ └── web.xml
└── test
├── java
└── resources
تعديل ملف Maven pom.xml
تعديل ملف pom.xml باستخدام الخطوات التالية:
افتح pom.xml وضبط إصدار Java على 21 باستخدام المثال التالي:
<java.version>21</java.version> <maven.compiler.source>21</maven.compiler.source> <maven.compiler.target>21</maven.compiler.target>أضف إضافة Cargo Maven لنشر Tomcat المحلي باستخدام المثال التالي:
<!-- Tomcat 10 Maven Plugin --> <plugin> <groupId>org.codehaus.cargo</groupId> <artifactId>cargo-maven3-plugin</artifactId> <version>1.10.27</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>your-tomcat-username</cargo.remote.username> <cargo.remote.password>your-tomcat-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>
فيما يلي المحتوى الكامل لملف 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.15.0</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.10.27</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>your-tomcat-username</cargo.remote.username>
<cargo.remote.password>your-tomcat-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>
إنشاء واجهة ويب
لإضافة صفحة ويب، قم بتحرير ملف src/main/webapp/index.jsp باستخدام المثال التالي:
<!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>
إنشاء servlet
servlet هي فئة برمجة Java تستخدم لتوسيع قدرات الخادم من خلال معالجة الطلبات وإنشاء محتوى ديناميكي. يتم تشغيل Servlets على جانب الخادم داخل حاوية ويب - مثل Apache Tomcat - وتستخدم بشكل أساسي لمعالجة طلبات HTTP في تطبيقات الويب. عندما يرسل عميل - على سبيل المثال، مستعرض ويب - طلبا إلى خادم ويب، يعالج servlet الطلب. ينفذ servlet أي منطق عمل ضروري - على سبيل المثال، الوصول إلى قواعد البيانات أو استدعاء خدمات أخرى - ثم ينشئ استجابة - غالبا في شكل HTML - لإرسالها مرة أخرى إلى العميل. تمكن Servlets المطورين من إنشاء تطبيقات ويب ديناميكية ومستقلة عن النظام الأساسي باستخدام Java.
لإنشاء servlet، استخدم الخطوات التالية:
تحديث بنية الملف لإضافة servlet باستخدام الأمر التالي:
mkdir -p src/main/java/com/example && touch src/main/java/com/example/HelloServlet.javaقم بتحديث محتويات ملف HelloServlet.java باستخدام مثال الكود التالي:
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>"); } }
تبدو بنية الملف الجديدة كما يلي:
└── simple-tomcat-app
├── pom.xml
└── src
├── main
│ ├── java
│ │ └── com
│ │ └── example
│ │ └── HelloServlet.java
│ ├── resources
│ └── webapp
│ ├── index.jsp
│ └── WEB-INF
│ └── web.xml
└── test
├── java
└── resources
النشر محليا إلى Tomcat
استخدم الخطوات التالية لتكوين خادم Tomcat المحلي حتى تتمكن من النشر إليه:
تحذير
تخزين أسماء المستخدمين وكلمات المرور مباشرة في ملفات التكوين مثل tomcat-users.xml و pom.xml بالنص العادي ليس آمنا ولا ينصح به عموما، خاصة في بيئات الإنتاج. ومع ذلك، فإن البدائل الأخرى خارج نطاق وحدة التدريب هذه. لا تستخدم اسم المستخدم وكلمة المرور الحقيقيين!
تحرير تكوين ملف تكوين Tomcat /tomcat-users.xml باستخدام المثال التالي:
<tomcat-users> <user username="your-tomcat-username" password="your-tomcat-password" roles="manager-script"/> </tomcat-users>تأكد من أن بيانات اعتماد Cargo عن بعد في pom.xml تطابق اسم المستخدم وكلمة المرور التي أضفتها إلىtomcat-users.xml:
<cargo.remote.username>your-tomcat-username</cargo.remote.username> <cargo.remote.password>your-tomcat-password</cargo.remote.password>
نشر تطبيق الويب الخاص بك إلى Tomcat
استخدم الأمر التالي لحزم تطبيق الويب ونشره:
mvn clean package cargo:deploy
بعد النشر، يتوفّر التطبيق الخاص بك في http://localhost:8080/simple-tomcat-app.