English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
يجعل لغة تعبير JSP (EL) الوصول إلى البيانات المخزنة في JavaBean سهلًا للغاية. يمكن استخدام JSP EL لإنشاء تعبيرات حسابية وتعبيرات منطقية. يمكن استخدام الأرقام الصحيحة، والأرقام العشرية، والنصوص، والقيم الثابتة مثل true و false، والقيمة null داخل تعبيرات JSP EL.
عادةً، عند الحاجة إلى تحديد قيمة الخاصية في علامة JSP، يمكنك استخدام النص بسيطًا فقط:
<jsp:setProperty name="box" property="perimeter" value="100"/>
يسمح لك JSP EL بتحديد تعبير لتقديم قيمة الخاصية. لغة النص البسيطة للتعبير كالتالي:
${expr}
فيها، expr يشير إلى التعبير. في JSP EL، العلامات التشغيل الشائعة هي . و {} . هذه العلامات التشغيل تسمح لك بالوصول إلى مجموعة متنوعة من خصائص JavaBean عبر جسم JSP.
على سبيل المثال، يمكن استخدام علامة <jsp:setProperty> أعلاه لتعديلها بلغة التعبير كما يلي:
<jsp:setProperty name="box" property="perimeter"> value="${2*box.width+2*box.height}"/>
عندما يرى محول JSP "${}" نمط في الخاصية، ينتج رمز لحساب هذه التعبير ويقوم بإنشاء بديل يحل محله قيمة التعبير.
يمكنك أيضًا استخدام لغة التعبير في نص النموذج للعلامات. على سبيل المثال، <jsp:text> العلامة بسيطة تضيف النص الموجود في الجسم إلى مخرجات JSP:
<jsp:text> <h1>Hello JSP!</h1> </jsp:text>
الآن، استخدم التعبير في جسم علامة <jsp:text> كما يلي:
<jsp:text> Box Perimeter is: ${2*box.width + 2*box.height} </jsp:text>
يمكن استخدام الأسهم الكروية في تعبير EL لتنظيم التعبير الفرعي. على سبيل المثال، ${(1 + 2) * 3} يساوي 9، ولكن ${1 + (2 * 3)} يساوي 7.
لإيقاف تقييم تعبير EL، يجب استخدام أوامر page لتعيين قيمة isELIgnored على true:
<%@ page isELIgnored="true|false" %>
بهذا، سيتم تجاهل تعبير EL. إذا تم تعيينه على false،فسيقوم الحاوي بحساب تعبير EL.
يدعم تعبير EL معظم معاملات الحساب والمنطق التي يقدمها Java:
المعامل | الوصف |
---|---|
. | الوصول إلى خاصية Bean أو سجل خريطة |
[] | الوصول إلى عنصر في مصفوفة أو قائمة |
( ) | تنظيم التعبير الفرعي لتغيير الأولوية |
+ | إضافة |
- | طرح أو سالب |
* | ضرب |
/ أو div | قسمة |
% أو mod | استخراج البقية |
== أو eq | اختبار إذا كان متساويًا |
!= أو ne | اختبار إذا كان غير متساوي |
< أو lt | اختبار إذا كان أصغر |
> أو gt | اختبار إذا كان أكبر |
<= أو le | اختبار إذا كان أصغر أو يساوي |
>= أو ge | اختبار إذا كان أكبر أو يساوي |
&& أو و | اختبار منطقي وإلى |
|| أو أو | اختبار منطقي أو |
! أو not | اختبار العكس |
empty | اختبار إذا كان النوع فارغًا |
يسمح JSP EL لك باستخدام الوظائف في التعبيرات. يجب أن تكون هذه الوظائف معرفة في مكتبة العلامات المخصصة. تكون قواعد النص التالي لاستخدام الوظائف كالتالي:
${ns:func(param1, param2, ...)}
ns يشير إلى المساحة الاسمية (namespace)،func يشير إلى اسم الوظيفة،param1 يشير إلى المعامل الأول،param2 يشير إلى المعامل الثاني،وهكذا. على سبيل المثال، هناك وظيفة fn:length،محددة في مكتبة JSTL،يمكن الحصول على طول النص كما يلي:
${fn:length("Get my length")}
للبدء في استخدام أي وظائف من مكتبات العلامات، يجب عليك تثبيت هذه المكتبات على الخادم، ثم استخدام العلامة <taglib> في ملف JSP لتضمين هذه المكتبات.
تدعم JSP EL objects المخفية المدرجة في الجدول التالي:
Objects غير مباشرة | الوصف |
---|---|
pageScope | مستوى التأثير page |
requestScope | مستوى التأثير request |
sessionScope | مستوى التأثير session |
applicationScope | مستوى التأثير application |
param | معلومات Parameters لـ Request، نص |
paramValues | معلومات Parameters لـ Request، مجموعة من النصوص |
header | HTTP Information Headers، نص |
headerValues | HTTP Information Headers، مجموعة من النصوص |
initParam | معلمات التكوين للمستوى |
cookie | قيمة Cookie |
pageContext | pageContext الحالي للصفحة |
يمكنك استخدام هذه objects في التعبيرات كما تستخدم المتغيرات. سيتم تقديم بعض الأمثلة لفهم هذه الفكرة بشكل أفضل.
pageContext object هو reference لـ pageContext في JSP. من خلال object pageContext، يمكنك الوصول إلى object request. على سبيل المثال، لزيارة query string التي يتم إرسالها إلى object request، يمكنك القيام بذلك كما يلي:
${pageContext.request.queryString}
استخدم متغيرات pageScope، requestScope، sessionScope، applicationScope لزيارة المتغيرات المخزنة في مستويات التأثير المختلفة.
على سبيل المثال، إذا كنت بحاجة إلى الوصول بشكل واضح إلى متغير box في applicationScope، يمكنك الوصول إليه كما يلي: applicationScope.box.
استخدم objects param و paramValues لزيارة قيم المعلمات، من خلال استخدام methods getParameter و getParameterValues من request.
على سبيل المثال، لزيارة متغير Order، يمكنك استخدام التعبير التالي: ${param.order} أو ${param["order"]}.
الامثلة القادمة توضح كيفية الوصول إلى متغير username في request:
<%@ page import="java.io.*,java.util.*" %> <% String title = "Accessing Request Param"; %> <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>
مثلث对象 يعود بباقة من النصوص، بينما يعود object paramValues بباقة من النصوص.
استخدم عناصر header وheaderValues للاستعلام عن رؤوس الطلب، من خلال استخدام methods request.getHeader و request.getHeaders.
على سبيل المثال، لت الوصول إلى رأس معلومات user-agent، يمكنك استخدام التعبير التالي: ${header.user-agent} أو ${header["user-agent"]}.
يوضح المثال التالي كيفية الوصول إلى معلومات رأس user-agent: ${header.user-agent} أو ${header["user-agent"]}.
<%@ page import="java.io.*,java.util.*" %> <% String title = "مثال على User Agent"; %> <html> <head> <title><% out.print(title); %></title> </head> <body> <center> <h1><% out.print(title); %></h1> </center> <div align="center"> <p>${header["user-agent"]}</p> </div> </body> </html>
نتيجة التنفيذ كالتالي:
يستعيد عنوان الـheader قيمة واحدة، بينما يستعيد headerValues مجموعة من الأعمدة.