صفحات خادم جاكرتا
صفحات خادم جاكرتا ( JSP ؛ المعروفة سابقًا باسم صفحات خادم جافا ) [ 1 ] هي مجموعة من التقنيات التي تساعد مطوري البرامج على إنشاء صفحات ويب ديناميكية تعتمد على HTML أو XML أو SOAP أو أنواع أخرى من المستندات. تم إصدارها عام 1999 بواسطة شركة صن مايكروسيستمز [ 2 ] ، وتشبه JSP لغتي PHP و ASP ، ولكنها تستخدم لغة برمجة جافا .
لتفعيل وتشغيل صفحات خادم جاكرتا، يلزم وجود خادم ويب متوافق مع حاوية سيرفلت ، مثل أباتشي تومكات أو جيتي .
ملخص

من الناحية المعمارية، يمكن اعتبار JSP بمثابة تجريد عالي المستوى لـ Jakarta Servlets . تُترجم صفحات JSP إلى servlets في وقت التشغيل، وبالتالي فإن JSP هي servlet؛ يتم تخزين كل servlet من JSP مؤقتًا وإعادة استخدامه حتى يتم تعديل JSP الأصلية. [ 3 ]
يمكن استخدام صفحات خادم جاكرتا بشكل مستقل أو كمكون عرض في تصميم نموذج-عرض-متحكم من جانب الخادم، وعادةً ما يكون JavaBeans هو النموذج و Java servlets (أو إطار عمل مثل Apache Struts ) هو المتحكم. هذا نوع من أنواع بنية النموذج 2. [ 4 ]
تتيح JSP دمج كود Java وبعض الإجراءات المُعرّفة مسبقًا مع محتوى ترميز الويب الثابت، مثل HTML. تُجمّع الصفحة الناتجة وتُنفّذ على الخادم لعرض المستند. تحتوي الصفحات المُجمّعة، بالإضافة إلى أي مكتبات Java تابعة، على بايت كود Java وليس كود الآلة . ومثل أي ملف .jar أو برنامج Java آخر، يجب تنفيذ الكود داخل آلة Java الافتراضية (JVM) التي تتفاعل مع نظام تشغيل الخادم لتوفير بيئة مجردة ومحايدة للمنصة.
تُستخدم صفحات JSP عادةً لتقديم مستندات HTML وXML، ولكن من خلال استخدام OutputStream، يمكنها تقديم أنواع أخرى من البيانات أيضًا. [ 5 ]
يقوم حاوية الويب بإنشاء كائنات JSP ضمنية مثل الطلب، والاستجابة، والجلسة، والتطبيق، والتكوين، والصفحة، وسياق الصفحة، والمخرجات، والاستثناءات. يقوم محرك JSP بإنشاء هذه الكائنات أثناء مرحلة الترجمة.
بناء الجملة
إعلان التوجيهات والنصوص البرمجية والتعبيرات
تستخدم صفحات JSP عدة محددات لكتابة وظائف البرمجة النصية . أبسطها هو <script> ، الذي يحيط بجزء برمجي صغير (scriptlet) من JSP . هذا الجزء البرمجي عبارة عن جزء من كود جافا [ 6 ] يتم تشغيله عندما يطلب المستخدم الصفحة. <% ... %>
تشمل المحددات الشائعة الأخرى التعبيرات ، حيث يتم استبدال النص البرمجي والمحددات بنتيجة تقييم التعبير، والتوجيهات ، المشار إليها بـ . [ 6 ] [ 7 ] <%= ... %><%@ ... %>
لا يُشترط أن يكون كود جافا كاملاً أو مكتفياً ذاتياً ضمن كتلة برمجية واحدة. يمكن أن يمتدّ الكود عبر محتوى الترميز، شريطة أن تكون الصفحة ككل سليمة نحوياً. على سبيل المثال، يجب إغلاق أي كتل if/for/while مفتوحة في جزء برمجي واحد بشكل صحيح في جزء برمجي لاحق لكي يتم تجميع الصفحة بنجاح. هذا يسمح بتداخل الأكواد، مما قد يؤدي إلى ممارسات برمجة سيئة.
يخضع المحتوى الموجود داخل كتلة مقسمة من كود جافا (تمتد على عدة أجزاء برمجية) لهذا الكود. لن يظهر المحتوى الموجود داخل كتلة شرطية (if ) في المخرجات إلا إذا كان الشرط صحيحًا. وبالمثل، قد يظهر المحتوى الموجود داخل حلقة تكرارية عدة مرات في المخرجات، وذلك بحسب عدد مرات تنفيذ جسم الحلقة.
مثال
فيما يلي مثال على حلقة تكرار صالحة في صفحة JSP:
<p> العد حتى ثلاثة: </p> <% for ( int i = 1 ; i < 4 ; i ++ ) { %> <p> هذا الرقم هو <%= i %> . </p> <% } %> <p> صحيح. </p>ستكون النتيجة المعروضة في متصفح الويب الخاص بالمستخدم كالتالي:
العد حتى ثلاثة: هذا الرقم هو 1. هذا الرقم هو 2. هذا الرقم هو 3. نعم.
علامات JSP القياسية
علامة useBean
يُمكّن وسم JSP useBeanالمطور من الوصول إلى Javabean وإنشائه. [ 8 ] على الرغم من أن استخدام هذا useBeanالوسم يبدو مشابهًا لوسم HTML، إلا أن جميع وسوم JSP الخاصة بـ JavaBeans تستخدم صيغة XML. لذلك، فإن الكود الذي يحتوي على هذا useBeanالوسم حساس لحالة الأحرف. [ 9 ]
يحتوي الوسم useBeanعلى عدة سمات. idتُحدد السمة الأولى الاسم المستخدم للوصول إلى الكائن. classوتُحدد السمة الثانية الحزمة والفئة الخاصة بالكائن. وتُحدد السمة الثالثة scopeالكائن المسؤول عن تخزين الكائن. أما قيمة النطاق فتُحدد المدة التي يكون فيها الكائن متاحًا لبقية تطبيق جافا للاستخدام. ويمكن أن تكون قيمة النطاق إحدى القيم الأربع التالية: [ 9 ]
- يشير النطاق
pageإلى أن الكائن موجود فيPageContextالكائن المُعرَّف ضمنيًا، وهو متاح فقط للصفحة الحالية. افتراضيًا، يكون نطاق جميع الكائنات هوpage. - يشير النطاق
requestإلى إمكانية العثور على الكائن البرمجي (Bean) داخلHttpServletRequestالكائن. ويمكن الوصول إلى هذا الكائن البرمجي من قِبل جميع صفحات JSP و servlets الأخرى التي لديها صلاحية الوصول إلى كائن الطلب الحالي. - يشير النطاق
sessionإلى إمكانية العثور على الكائن (bean) داخلHttpSessionالكائن (object). ويمكن الوصول إلى هذا الكائن من قِبل جميع صفحات JSP و servlets الأخرى التي لديها صلاحية الوصول إلىHttpSessionالكائن المحدد. - يشير النطاق
applicationإلى إمكانية العثور على الكائن (bean) داخلServletContextالكائن (object). ويمكن الوصول إلى هذا الكائن من قِبل جميع صفحات JSP و servlets الأخرى التي لديها صلاحية الوصول إلىServletContextالكائن المحدد.
علامات getProperty و setProperty
بعد إنشاء عنصر Java Bean باستخدام useBeanالوسم <container>، يمكن استخدام الوسوم <container> getPropertyو setProperty<container> للحصول على خصائص العنصر وتعيينها. getPropertyتُستخدم setPropertyصفحة JSP للحصول على خصائص العنصر المُنشأ، بينما يُستخدم وسم <container> لتعيين خصائصه. بالنسبة للوسوم getProperty <container> و setProperty<container>، تُستخدم السمة name لتحديد اسم العنصر، لذا يجب أن تتطابق قيمة السمة name مع قيمة السمة id المُقدمة من الوسم useBean<container>. [ 10 ]
لغة التعبير
أضاف الإصدار 2.0 من مواصفات JSP دعمًا للغة التعبير (EL)، المستخدمة للوصول إلى البيانات والوظائف في كائنات جافا. وفي JSP 2.1، تم دمجها في لغة التعبير الموحدة ، المستخدمة أيضًا في JavaServer Faces . [ 11 ]
تستخدم لغة التعبير JSP صيغةً مختصرةً تُمكّن المطور من الحصول على السمات وخصائص JavaBean من كائن طلب مُعطى. عند استخدام لغة التعبير، يجب إضافة علامة الدولار ($) في بداية الكود. يلي علامة الدولار قوس مفتوح ({)، ثم قوس مغلق (}). يُكتب الكود بعد ذلك بين القوسين المفتوح والمغلق. [ 12 ]
مثال
فيما يلي مثال على صيغة لغة التعبير (EL) :
قيمة variableفي الكائن javabeanهي ${javabean.variable}.
علامات إضافية
تُضيف صيغة JSP وسومًا إضافية، تُسمى إجراءات JSP، لاستدعاء وظائف مُدمجة. [ 7 ] بالإضافة إلى ذلك، تُتيح هذه التقنية إنشاء مكتبات وسوم JSP مُخصصة تعمل كامتدادات لصيغة JSP القياسية. [ 13 ] ومن هذه المكتبات مكتبة JSTL . [ 14 ]
مكتبة علامات جاكرتا القياسية
تدعم مكتبة علامات جاكرتا القياسية (JSTL) المهام الشائعة التي يجب تنفيذها في صفحات JSP. [ 15 ] تشمل الأمثلة التكرار والشروط (ما يعادل عبارات "for" و"if" في جافا). [ 14 ]
من بين جميع مكتبات JSTL، تُعد مكتبة JSTL الأساسية الأكثر استخدامًا. يجب استخدام توجيه taglib لتحديد معرّف الموارد الموحد (URI) لمكتبة JSTL الأساسية باستخدام بادئة. على الرغم من وجود العديد من الخيارات المختلفة للبادئة، إلا أن البادئة "c" هي الأكثر شيوعًا لهذه المكتبة. [ 16 ]
JSP متوافق مع XML
يمكن أيضًا كتابة صفحات JSP باستخدام صيغة XML صحيحة تمامًا. [ 17 ] تستخدم ملفات JSP هذه عادةً امتداد الملف البديل .jspx، مما يؤدي عادةً إلى قيام خادم التطبيق بالتحقق من صحة صيغة XML.
بما أن صيغة JSP المعتادة غير صالحة في XML، يجب على المطور استخدام علامات بديلة توفرها JSP. على سبيل المثال، يمكن كتابة التوجيه الشائع كعلامة <script>، ويتم استيراد مكتبات العلامات باستخدام مساحات أسماء XML ، بدلاً من العلامة المعتادة .<% ... %><%@ page .. %><jsp:directive.page .. /><%@ taglib .. %>
المترجم
مُجمِّع صفحات جافا سيرفر هو برنامج يقوم بتحليل صفحات جافا سيرفر وتحويلها إلى ملفات جافا سيرفلت قابلة للتنفيذ . عادةً ما يتم تضمين هذا النوع من البرامج في خادم التطبيقات ويتم تشغيله تلقائيًا عند الوصول إلى صفحة جافا سيرفر لأول مرة، ولكن يمكن أيضًا تجميع الصفحات مسبقًا لتحسين الأداء، أو تجميعها كجزء من عملية البناء لاختبار الأخطاء. [ 18 ]
تدعم بعض حاويات JSP إمكانية ضبط عدد مرات فحص الحاوية للطوابع الزمنية لملفات JSP لمعرفة ما إذا كانت الصفحة قد تغيرت. عادةً، يتم ضبط هذا الطابع الزمني على فاصل زمني قصير (ربما ثوانٍ) أثناء تطوير البرمجيات ، وفاصل زمني أطول (ربما دقائق، أو حتى لا يتم الفحص مطلقًا) لتطبيق ويب منشور . [ 19 ]
نقد
بحسب جويل موراش ومايكل أوربان، مؤلفي كتاب "موراش جافا سيرفلتس وJSP"، فإن تضمين كود جافا في JSP يُعدّ ممارسة سيئة عمومًا. [ 20 ] ويتمثل النهج الأفضل في نقل منطق الواجهة الخلفية المُضمّن في JSP إلى كود جافا في ملف HTML Servlet. [ 20 ] في هذه الحالة، Servletيكون ملف HTML مسؤولاً عن المعالجة، بينما يكون ملف JSP مسؤولاً عن عرض HTML، [ 20 ] مما يحافظ على فصل واضح بين المهام .
في عام 2000، وصف جيسون هانتر، مؤلف كتاب "برمجة جافا سيرفلت"، عددًا من "المشاكل" المتعلقة بصفحات جافا سيرفر (JSP). [ 21 ] ومع ذلك، كتب أنه على الرغم من أن JSP قد لا تكون "الحل الأمثل لمنصة جافا"، إلا أنها "حل جافا الأقرب إلى الحلول غير القائمة على جافا"، وكان يقصد بذلك صفحات الخادم النشطة (Active Server Pages ) من مايكروسوفت . لاحقًا، أضاف ملاحظة إلى موقعه الإلكتروني تفيد بأن JSP قد تحسنت منذ عام 2000، ولكنه أشار أيضًا إلى منافسيها، أباتشي فيلوسيتي (Apache Velocity) ولغة القوالب (Tea). [ 21 ] اليوم، تُعتبر العديد من البدائل وعدد من الصفحات الموجهة نحو JSP في تطبيقات الويب الكبيرة بمثابة ديون تقنية.
انظر أيضاً
حاويات سيرفلت
بدائل القوالب المستندة إلى جافا
مراجع
- ↑ ماثيو تايسون (9 سبتمبر 2022). "ما هي صفحات خادم جاكرتا؟ مقدمة إلى صفحات خادم جاكرتا" . إنفوورلد . تم الاطلاع عليه في 30 مايو 2024 .
- ↑ "أرشيف FoRK: برنامج Sun JSP 1.0 *غير* متوفر" . www.xent.com .
- ↑ دورة حياة صفحة JSP (وثائق صن)
- ↑ سيشادري، جوفيند (29 ديسمبر 1999). "فهم بنية JavaServer Pages Model 2" . JavaWorld . تم الاسترجاع في 17 يوليو 2020 .
- ↑ "تم الحصول على OutputStream بالفعل (منتدى JSP في Coderanch)" . coderanch.com .
- 1 2 مرجع بناء جملة JSP 1.2
- ↑ Murach & Urban 2014 ، ص 198 ، §2 مهارات أساسية في servlet و JSP - ملخص.
- 1 2 Murach & Urban 2014 ، ص 186-187 ، §2 مهارات أساسية في servlet و JSP - كيفية كتابة علامة useBean.
- ↑ لغة التعبير الموحدة (شبكة مطوري صن)
- ↑ Murach & Urban 2014 ، ص 176-177 ، §2 مهارات أساسية في servlet و JSP - كيفية استخدام EL للحصول على السمات وخصائص JavaBean.
- ↑ دليل مكتبات الوسوم - ما هي مكتبة الوسوم؟ (صحيفة ذا صن) مؤرشف في 19 أبريل 2012 على موقع Wayback Machine
- 1 2 "مكتبة علامات JavaServer Pages القياسية - البرنامج التعليمي لـ Java EE 5" . docs.oracle.com .
- ↑ Murach & Urban 2014 ، ص 270-273 ، §2 مهارات أساسية في servlet و JSP - مقدمة إلى JSTL.
- ↑ Murach & Urban 2014 ، ص 178 ، §2 مهارات أساسية في servlet و JSP - كيفية تمكين مكتبة JSTL الأساسية.
- ↑ "دليل Java EE 5، الفصل 6: مستندات صفحات JavaServer" . oracle.com . تم الاطلاع عليه بتاريخ 27-07-2022 .
- ↑ "مستندات IBM" . www.ibm.com .
- ↑ "SyBooks Online" . infocenter.sybase.com .
- 1 2 3 موراش وأوربان 2014 ، ص 46-47، §1 ابدأ بشكل صحيح - JSP للصفحة الثانية.
- 1 2 مشاكل JSP (25 يناير 2000)
المراجع
- موراش، جويل؛ أوربان، مايكل (2014). تطبيقات جافا سيرفلت وJSP من موراش . مايك موراش وشركاؤه. ISBN 978-1-890774-78-3.
للمزيد من القراءة
- بيرجستن، هانز (2003). صفحات جافا سيرفر ( الطبعة الثالثة). أورايلي وسائل الإعلام . رقم ISBN 978-0-596-00563-4.
- براون، سيمون؛ دالتون، سام؛ جيب، دانيال؛ جونسون، ديف؛ لي، سينغ؛ رايبل، مات. برو جيه إس بي 2. أبريس . رقم الكتاب المعياري الدولي 1-59059-513-0.
- هانا، فيل (2003). JSP 2.0 - المرجع الكامل . ماكجرو هيل أوزبورن ميديا . ISBN 978-0-07-222437-5.
- سييرا، كاثي؛ بيتس، بيرت؛ باشام، برايان. هيد فيرست سيرفليتس وجيه إس بي . أورايلي ميديا . رقم ISBN 978-0-596-00540-5.
روابط خارجية
- الموقع الرسمي

- مرجع بناء جملة JSP الإصدار 2.0
- بطاقة بناء جملة JavaServer Pages الإصدار 2.0 ( الإصدار 1.2 )
- مواصفات صفحات خادم جاكرتا، أحدث إصدار
- الدليل الرسمي: دليل Java EE 5، الفصل 5، تقنية صفحات خادم Java
- تاريخ السيرفلت
- منصة جافا للمؤسسات
- طلبات مواصفات جافا
- محركات القوالب
