علامات عمل JSP
⚡ ملخص ذكي
تستخدم علامات JSP Action Tags صيغة XML للتحكم في سلوك محرك servlet، مما يُمكّن المطورين من تضمين الملفات، وإعادة توجيه الطلبات، والعمل مع Javaالفاصوليا، وتضمين المحتوى الديناميكي أثناء معالجة الطلب.

ما هو وسم الإجراء JSP؟
تستخدم علامات JSP Action Tags بنى XML للتحكم في سلوك محرك servlet. يمكن للمطورين إدراج ملف ديناميكيًا، وإعادة استخدامه Javaتقوم مكونات Bean بإعادة توجيه المستخدم إلى صفحة أخرى، وتنفذ عمليات مماثلة أثناء التشغيل عبر علامات JSP Action Tags مثل include و forward. على عكس التوجيهات، تُعاد تقييم علامات Action Tags في كل مرة يتم فيها الوصول إلى الصفحة، مما يجعلها مثالية للسلوك الديناميكي أثناء معالجة الطلبات.
بناء الجملة:
<jsp:action_name attribute="value" />
في هذا الدرس التعليمي حول علامات الإجراءات القياسية في JSP، ستتعلم كيفية عمل كل علامة إجراء، وماذا تفعل، وكيفية تطبيقها في ملف JSP حقيقي.
قائمة بعلامات الإجراءات الشائعة الاستخدام في JSP
هناك 11 نوعًا من علامات الإجراء القياسية في JSP، وهنا القائمة الكاملة لها.
| اسم علامة العمل | بناء الجملة | الوصف |
|---|---|---|
| jsp:useBean | يتم استخدامه لاستدعاء واستخدام الفاصوليا في صفحة JSP. | |
| jsp:تشمل | <jsp:include page=”page URL” flush=”true/false” /> | يتضمن ملف JSP آخر في الملف الحالي أثناء معالجة الطلب. |
| jsp:setProperty | تعيين خاصية الفاصوليا. | |
| jsp:getProperty | يقوم باسترجاع خاصية الفاصوليا ويحولها إلى سلسلة للإخراج. | |
| جسب: إلى الأمام | إعادة توجيه الطلب إلى صفحة JSP أخرى أو صفحة ثابتة. | |
| jsp: البرنامج المساعد | يدخل Java مكونات مثل التطبيقات الصغيرة أو الحبوب في JSP وتوليد العلامات تلقائيًا. | |
| جسب: الجسم | يقوم بتعريف عناصر XML التي يتم إنشاؤها ديناميكيًا أثناء معالجة الطلب. | |
| جسب:نص | نص القالب | يتم استخدامه لإدراج نص القالب في صفحات JSP، والذي يحتوي فقط على النص وتعبيرات EL. |
| jsp:param | يقوم بتمرير المعلمات داخل إجراء jsp:plugin لإضافة بيانات إضافية. | |
| jsp: السمة | يقوم بتعريف سمات XML التي يتم إنشاؤها ديناميكيًا. | |
| جسب: الإخراج | يقوم بتحديد إعلان XML أو DOCTYPE الذي سيتم استخدامه في الإخراج. |
الآن بعد أن أصبح لديك القائمة الكاملة، سنستكشف كل علامة من علامات JSP Action هذه واحدة تلو الأخرى مع بناء الجملة ومثال عملي.
علامة الإجراء jsp:useBean
- يُستخدم اسم هذا الإجراء عندما تريد استخدام JavaBeans في صفحة JSP.
- باستخدام هذه العلامة، يمكنك بسهولة استدعاء عنصر برمجي وإعادة استخدام مكونات جانب الخادم.
صيغة jsp:useBean:
<jsp:useBean id="" class="" />
هنا يحدد id المعرف الخاص بهذا الكائن، و class هو المسار الكامل لفئة الكائن.
على سبيل المثال:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Action JSP1</title> </head> <body> <jsp:useBean id="name" class="demotest.DemoClass"> </body> </html>
شرح الكود:
Code خط 10: في الكود أعلاه، تستخدم "معرف الكائن" و"مسار الفئة" للكائن.
jsp:include Action Tag
- تُستخدم الدالة jsp:include لإدراج ملف JSP في ملف آخر أثناء معالجة الطلب، على غرار تضمين تعليمات.
- تتم إضافتها أثناء مرحلة معالجة الطلب، مما يعني أنه يتم تقييم المحتوى المضمن في كل مرة يتم فيها طلب الصفحة.
صيغة jsp:include:
<jsp:include page="page URL" flush="true/false">
على سبيل المثال:
في Action_jsp2 (Code في السطر 10)، نقوم بتضمين ملف date.jsp.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Date Guru JSP</title> </head> <body> <jsp:include page="date.jsp" flush="true" /> </body> </html>
Date.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <p> Today's date: <%= new java.util.Date().toLocaleString()%> </p> </body> </html>
شرح الكود:
Action_jsp2.jsp
Code خط 10: في الملف الأول، نقوم بتضمين ملف date.jsp في action_jsp2.jsp.
التاريخ.jsp:
Code خط 11: نقوم بطباعة تاريخ اليوم في السطر 11 من الكود في ملف date.jsp.
عند تنفيذ الكود، ستكون النتيجة كالتالي.
الإخراج:
- يعرض تاريخ اليوم مع الوقت حيث يتم تضمين ملف التاريخ في صفحة JSP الرئيسية.
علامة الإجراء jsp:setProperty
- يُستخدم هذا الإجراء القياسي في JSP لتعيين خاصية الكائن.
- يجب عليك تعريف عنصر (bean) قبل تعيين الخاصية.
بناء الجملة:
<jsp:setProperty name="" property="" >
هنا، يُحدد الاسم الكائن الذي تُعيّن خاصيته، و"property" هي الخاصية التي ترغب في تعيينها. يمكنك أيضًا تعيين سمات "value" و"param". هنا، "value" اختيارية، وتُحدد القيمة المُسندة إلى الخاصية. أما "param" فهو اسم مُعامل الطلب الذي يُمكن من خلاله جلب القيمة. سيتم توضيح مثال على استخدام "setProperty" مع "getProperty" أدناه.
علامة الإجراء jsp:getProperty
- يُستخدم هذا الإجراء للحصول على خاصية الكائن.
- يقوم بتحويل الخاصية إلى سلسلة نصية ثم يقوم بإدراجها في الناتج.
بناء الجملة:
<jsp:getProperty name="" property="" >
هنا، يُمثل الاسم الكائن الذي يجب استرجاع الخاصية منه، ويجب تعريف هذا الكائن. أما سمة الخاصية فهي اسم خاصية الكائن المراد استرجاعها.
مثال على setProperty وgetProperty:
تيست بين.جافا:
package demotest; import java.io.Serializable; public class TestBean implements Serializable{ private String msg = "null"; public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } }
Action_jsp3.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Action 3</title> </head> <body> <jsp:useBean id="GuruTest" class="demotest.TestBean" /> <jsp:setProperty name="GuruTest" property="msg" value="GuruTutorial" /> <jsp:getProperty name="GuruTest" property="msg" /> </body> </html>
شرح الكود:
تيست بين.جافا:
Code خط 5: يقوم TestBean بتنفيذ فئة Serializable. وهي فئة Bean تحتوي على دوال getters و setters في الكود.
Code خط 7هنا نأخذ متغير السلسلة الخاص msg على أنه "null".
Code الخط 9-14هنا نستخدم دوال الوصول والتعديل للمتغير "msg".
Action_jsp3.jsp
Code خط 10: هنا نستخدم علامة "useBean"، حيث تحدد الكائن (TestBean) الذي يجب استخدامه في فئة JSP هذه.
Code خط 11: هنا نقوم بتعيين قيمة الخاصية msg للكائن TestBean على النحو التالي: "Guruدرس تعليمي".
Code خط 12: هنا، باستخدام getProperty، نحصل على قيمة الخاصية msg للكائن TestBean (Guruالبرنامج التعليمي)، والذي يظهر في المخرجات.
عند تنفيذ الكود أعلاه، ستحصل على الناتج التالي:
الإخراج:
في هذا المثال، باستخدام TestBean، نقوم بتعيين الخاصية "msg" باستخدام setProperty والحصول على قيمة الخاصية باستخدام getProperty كـ "Guruدرس تعليمي".
علامة الإجراء jsp:forward
تُستخدم علامة الإجراء jsp:forward لإعادة توجيه الطلب إلى صفحة JSP أخرى أو أي صفحة ثابتة.
هنا يمكن إعادة توجيه الطلب بدون معلمات أو باستخدام معلمات.
بناء الجملة:
<jsp:forward page="value">
تمثل القيمة هنا المكان الذي يجب إعادة توجيه الطلب فيه.
على سبيل المثال:
Action_jsp41.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Action JSP1</title> </head> <body> <jsp:forward page="jsp_action_42.jsp" /> </body> </html>
Jsp_action_42.jsp
Guru Action JSP2</title> </head> <body> <a>This is after forward page</a> </body> </html>
شرح الكود:
Action_jsp41.jsp
Code خط 10: هنا نستخدم إجراء JSP الأمامي لإعادة توجيه الطلب إلى الصفحة المذكورة في السمة، أي jsp_action_42.jsp.
Jsp_action_42.jsp
Code خط 10: بمجرد استدعاء action_jsp41.jsp، يتم توجيه الطلب إلى هذه الصفحة، ونحصل على الناتج على النحو التالي: "هذه هي صفحة ما بعد التوجيه".
عند تنفيذ الكود أعلاه، نحصل على المخرجات التالية.
الإخراج:
نقوم باستدعاء action_jsp41.jsp، ولكن يتم إعادة توجيه الطلب إلى jsp_action_42.jsp، ونحصل على الناتج من تلك الصفحة على أنه "هذه هي الصفحة التالية لإعادة التوجيه".
jsp:plugin Action Tag
- يتم استخدامه للتعريف Java المكونات في JSP، حيث Java يمكن أن تكون المكونات إما تطبيقًا صغيرًا أو كائنًا.
- يقوم باكتشاف المتصفح ويضيف أو أضف العلامات إلى الملف.
بناء الجملة:
<jsp:plugin type="applet/bean" code="objectcode" codebase="objectcodebase">
- هنا يحدد النوع إما كائنًا أو عنصرًا برمجيًا (bean).
- Code يحدد اسم فئة التطبيق المصغر أو الكائن.
- Codeتحتوي القاعدة على القاعدة URL التي تحتوي على ملفات الفئات.
jsp:param Action Tag
- هذا عنصر فرعي من عنصر الملحق الموصوف أعلاه.
- يجب أن يحتوي على إجراء واحد أو أكثر لتوفير معلمات إضافية.
بناء الجملة:
<jsp:params> <jsp:param name="val" value="val"/ > </jsp:params>
مثال على المكون الإضافي والمعامل:
Action_jsp5.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Action guru jsp5</title> </head> <body> <jsp:plugin type="bean" code="Student.class" codebase="demotest.Student"> <jsp:params> <jsp:param name="id" value="5" /> <jsp:param name="name" value="guru" /> </jsp:params> </jsp:plugin> </body> </html>
طالب. java
package demotest; import java.io.Serializable; public class Student implements Serializable { public String getName () { return name; } public void setName (String name) { this.name = name; } public int getId() { return id; } public void setId (int id) { this.id = id; } private String name = "null"; private int id = 0; }
شرح الكود:
Action_jsp5.jsp
Code خط 10: هنا نستخدم كائن jsp:plugin حيث نأخذ ثلاث سمات.
- النوع – في هذه الحالة هو الفاصوليا.
- Code – اسم الملف.
- Codeالمسار الأساسي – المسار الذي يحتوي على اسم الحزمة.
Code السطر 11-14: هنا نأخذ كائن jsp:params، والذي يوجد تحته كائن param فرعي يحتوي على سمات الاسم والقيمة، ونقوم بتعيين قيم id و name في هذه السمات.
طالب. java
Code 7-17: نحن نستخدم دوال الوصول والتعديل للمتغيرين id و name.
Code 19-20: نقوم بتهيئة المتغيرين id و name.
هنا سنحصل على مخرجات في حالة استخدام القيم المُحددة للمعامل في كائن الطالب. في هذه الحالة، لن نحصل على أي مخرجات لأننا نقوم فقط بتعيين واسترجاع قيم المعامل دون طباعتها في أي مكان.
jsp:body Action Tag
- تُستخدم هذه العلامة لتعريف XML ديناميكيًا، حيث عناصر يمكن توليدها أثناء وقت الطلب بدلاً من وقت التجميع.
- يحدد هذا الأمر ملف XML، الذي يتم إنشاؤه ديناميكيًا كعنصر body.
بناء الجملة:
<jsp:body></jsp:body>
هنا نكتب وسم نص XML داخل هذه الوسوم.
jsp:attribute Action Tag
- تُستخدم هذه العلامة لتعريف XML ديناميكيًا، حيث يمكن إنشاء العناصر أثناء وقت الطلب بدلاً من وقت التجميع.
- يحدد هذا الخاصية الخاصة بملف XML والتي سيتم إنشاؤها ديناميكيًا.
بناء الجملة:
<jsp:attribute></jsp:attribute>
هنا نكتب سمة الوسم في XML.
مثال على الجسم والصفة:
Action_jsp6.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Action Guru JSP6</title> </head> <body> <jsp:element name="GuruXMLElement"> <jsp:attribute name="GuruXMLattribute"> Value </jsp:attribute> <jsp:body>Guru XML</jsp:body> </jsp:element> </body> </html>
شرح الكود:
Code خط 10: هنا نقوم بتعريف عنصر يتم إنشاؤه ديناميكيًا على النحو التالي: XMLوسيكون اسمها GuruXMLElement.
Code السطر 11-13: هنا نقوم بتعريف سمة، والتي ستكون سمة XML لملف XML الذي يتم إنشاؤه ديناميكيًا.
Code خط 14: هنا لدينا إجراء كتابة نص XML، والذي سيتم إنشاؤه ديناميكيًا.
عند تنفيذ الكود أعلاه، ستحصل على الناتج التالي:
الإخراج:
هنا نحصل على الناتج من وسم <body> في ملف XML المُنشأ.
jsp:text Action Tag
- يُستخدم لإدراج نص القالب في صفحات JSP.
- لا يحتوي جسمه على أي عناصر أخرى، ويحتوي فقط على نصوص وتعبيرات EL.
بناء الجملة:
<jsp:text>template text</jsp:text>
يشير نص القالب هنا إلى نص القالب فقط (والذي يمكن أن يكون أي نص عام يحتاج إلى الطباعة على JSP) أو أي تعبير إل.
على سبيل المثال:
Action_jsp7.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Action JSP7</title> </head> <body> <jsp:text>Guru Template Text</jsp:text> </body> </html>
شرح الكود:
Code خط 10: هنا نقوم بأخذ كائن النص لطباعة نص القالب.
عند تنفيذ الكود أعلاه، ستحصل على الإخراج التالي.
الإخراج:
نحن نحصل Guru نص القالب، الذي يتم وضعه داخل كائن إجراء النص.
jsp:output Action Tag
- يحدد هذا تعريف XML أو تعريف DOCTYPE الخاص بـ JSP.
- يتم تعريف تعريف XML و DOCTYPE بواسطة المخرجات.
بناء الجملة:
<jsp:output doctype-root-element="" doctype-system="">
هنا، يشير doctype-root-element إلى العنصر الجذر لمستند XML في DOCTYPE. أما doctype-system فيشير إلى نوع المستند الذي يتم إنشاؤه في المخرجات ويعطي قيمة حرفية للنظام.
على سبيل المثال:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Action Guru JSP8</title> </head> <body> <jsp:output doctype-root-element="html PUBLIC" doctype-system="http://www.w3.org/TR/html4/loose.dtd"/> </body> </html>
شرح الكود:
Code خط 10: هنا نستخدم كائن إجراء الإخراج لإنشاء ملف DOCTYPE، وسيتم إنشاؤه داخليًا بهذا الشكل:
لن يكون هناك أي مخرج مرئي لهذا الأمر لأنه سيتم إنشاؤه داخليًا.





