تجعل لغة JSP Expression Language (EL) الوصول إلى البيانات المخزنة في JavaBeans أمرًا بسيطًا للغاية. يمكن استخدام JSP EL لإنشاء التعبيرات الحسابية والمنطقية. يمكن استخدام الأعداد الصحيحة وأرقام الفاصلة العائمة والسلاسل والثوابت true وfalse وnull في تعبيرات JSP EL.
عادةً، عندما تحتاج إلى تحديد قيمة سمة في علامة JSP، يمكنك ببساطة استخدام سلسلة:
<jsp:setProperty name="box" property="perimeter" value="100"/>
يسمح لك JSP EL بتحديد تعبير لتمثيل قيمة الخاصية. بناء جملة التعبير البسيط هو كما يلي:
${إكسبر}
فيما بينها،
EXPRيشير إلى تعبير. العوامل المشتركة في JSP EL هي
"."و
"[]". يتيح لك هذان العاملان الوصول إلى مجموعة متنوعة من
JavaBeansخصائص.
على سبيل المثال، ما سبق
<jsp:setProperty>يمكن إعادة كتابة العلامات باستخدام لغة التعبير كما يلي:
<jsp:setProperty name="box" property="perimeter" value="${2*box.width+2*box.height}"/>
عندما يرى مترجم JSP "
${}"بعد التنسيق، يقوم بإنشاء تعليمات برمجية لتقييم التعبير وإنتاج بديل لقيمة التعبير.
يمكنك أيضًا استخدام لغات التعبير في نص قالب التسمية. على سبيل المثال
<jsp:نص>تقوم العلامة ببساطة بإدراج النص الموجود في نصها في مخرجات JSP:
<jsp:text><h1>مرحبًا JSP!</h1></jsp:text>
الآن، في
<jsp:نص>استخدم تعبيرًا في نص العلامة، مثل هذا:
<jsp:text>محيط الصندوق هو: ${2*box.width + 2*box.height</jsp:text>
يمكن استخدام الأقواس لتنظيم التعبيرات الفرعية في تعبيرات EL. على سبيل المثال
${(1 + 2) * 3}يساوي 9، ولكن
${1 + (2 * 3)}يساوي 7.
لتعطيل تقييم تعبيرات EL، استخدم
صفحةالتعليمات سوف
isELIgnoredتم ضبط قيمة السمة على
حقيقي:
<%@ page isELIgnored ="true|false" %>
بهذه الطريقة، يتم تجاهل تعبيرات EL. إذا تم تعيينه على
خطأ شنيعستقوم الحاوية بتقييم تعبير EL.
تدعم تعبيرات EL معظم العوامل الحسابية والمنطقية التي توفرها Java:
المشغل | يصف |
---|---|
. | قم بزيارة أفولالسمة أو إدخال الخريطة |
[] | الوصول إلى عناصر مصفوفة أو قائمة مرتبطة |
( ) | تنظيم تعبير فرعي لتغيير الأسبقية |
+ | يضيف |
- | ناقص أو سلبي |
* | يأخذ |
/ أو شعبة | يزيل |
% أو تعديل | خذ القالب |
== أو مكافئ | اختبار المساواة |
!= أو ني | اختبار إذا كان غير متكافئ |
< أو لتر | اختبار إذا كان أقل من |
> أو جي تي | اختبار ما إذا كان أكبر من |
<= أو لو | اختبار إذا كان أقل من أو يساوي |
>= أورج | اختبار إذا كان أكبر من أو يساوي |
&& أو و | اختبار منطقي و |
|| أو | اختبار منطقي أو |
أم لا | نفي الاختبار |
فارغ | اختبار للقيمة الخالية |
يتيح لك JSP EL استخدام الوظائف في التعبيرات. يجب تحديد هذه الوظائف في مكتبة العلامات المخصصة. بناء جملة استخدام الدالة كما يلي:
${ns:func(param1, param2, ...)}
يشير ns إلى مساحة الاسم،
funcيشير إلى اسم الوظيفة،
المعلمة1يشير إلى المعلمة الأولى،
المعلمة2يشير إلى المعلمة الثانية، وهكذا. على سبيل المثال، هناك وظيفة
الجبهة الوطنية: الطول، المعرفة في مكتبة JSTL، يمكن استخدامها للحصول على طول السلسلة كما يلي:
${fn:length("احصل على طولي")}
لاستخدام وظائف من أي مكتبة علامات، تحتاج إلى تثبيت هذه المكتبات في الخادم ثم استخدامها
<taglib>تتضمن العلامات هذه المكتبات في ملفات JSP.
يدعم JSP EL الكائنات الضمنية المدرجة في الجدول التالي:
كائن مخفي | يصف |
---|---|
pageScope | نطاق الصفحة |
requestScope | نطاق الطلب |
sessionScope | نطاق الجلسة |
applicationScope | نطاق التطبيق |
المعلمة | معلمات كائن الطلب، السلسلة |
paramValues | معلمات كائن الطلب، مجموعة السلسلة |
header | رأس HTTP، سلسلة |
headerValues | رأس HTTP، مجموعة السلسلة |
initParam | معلمات تهيئة السياق |
ملفات تعريف الارتباط | قيمة ملفات تعريف الارتباط |
pageContext | pageContext للصفحة الحالية |
يمكنك استخدام هذه الكائنات في التعبيرات تمامًا مثل المتغيرات. بعد ذلك، سيتم تقديم عدة أمثلة لفهم هذا المفهوم بشكل أفضل.
pageContextالكائن موجود في JSP
pageContextمرجع الكائن. يمر
pageContextالكائن الذي يمكنك الوصول إليه
طلبهدف. على سبيل المثال، قم بزيارة
طلبسلسلة الاستعلام التي تم تمريرها بواسطة الكائن، مثل هذا:
${pageContext.request.queryString}
pageScope،
requestScope،
sessionScope،
applicationScopeيتم استخدام المتغيرات للوصول إلى المتغيرات المخزنة على مستويات النطاق المختلفة.
على سبيل المثال، إذا كنت تريد الوصول بشكل صريح إلى ملف
applicationScopeالطبقات
صندوقيمكن الوصول إلى المتغيرات بهذه الطريقة:
applicationScope.box.
المعلمةو
paramValuesالكائن المستخدم للوصول إلى قيم المعلمات، باستخدام
request.getParameterطرق و
request.getParameterValuesطريقة.
على سبيل المثال، الوصول إلى ملف اسمه
طلب المعلمات، يمكنك استخدام تعبيرات مثل هذا:
${param.order}، أو
${param["order"]}.
يوضح المثال التالي كيفية الوصول إلى الطلب في
اسم المستخدمحدود:
<%@ page import="java.io.*,java.util.*" %><% String title = "الوصول إلى معلمة الطلب"%><html><head><title><% out.print(title ); %></title></head><body><center><h1><% out.print(title); %></h1></center><div align="center"><p>${param["username"]</p></div></body></html>
يقوم الكائن المعلمة بإرجاع سلسلة واحدة، بينما
paramValuesيقوم الكائن بإرجاع مجموعة من السلاسل.
headerو
headerValuesيتم استخدام الكائن للوصول إلى رأس المعلومات باستخدام
request.getHeaderطرق و
request.getHeadersطريقة.
على سبيل المثال، للوصول إلى ملف اسمه
وكيل المستخدم رأس المعلومات، يمكنك استخدام التعبير مثل هذا:
${header.user-agent}، أو
${header["user-agent"]}.
يوضح المثال التالي كيفية الوصول
وكيل المستخدمرأس المعلومات:
<%@ page import="java.io.*,java.util.*" %><% String title = "مثال لوكيل المستخدم"; ); %></title></head><body><center><h1><% out.print(title); %></h1></center><div align="center"><p>${header["user-agent"]}</p></div></body></html>
نتائج التشغيل هي كما يلي:
يقوم كائن الرأس بإرجاع قيمة واحدة، بينما تقوم headerValues بإرجاع مجموعة من السلاسل.