English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

عناصر动作 JSP

مختلفة عن عناصر التعليمات لـ JSP، تعمل عناصر الأفعال لـ JSP في مرحلة معالجة الطلب. تتكون عناصر الأفعال لـ JSP من لغة XML.

يمكن استخدام الأفعال الحركية لتحقيق إدراج ملفات ديناميكية، إعادة استخدام مكونات JavaBean، إعادة توجيه المستخدم إلى صفحة أخرى، وتوليد رمز HTML للمكونات المدمجة لـ Java.

العناصر الحركية تستخدم لغة النص الوظيفي الواحدة فقط، وهي تتوافق مع معيار XML:

<jsp:action_name attribute="value" />

العناصر الحركية هي في الأساس وظائف مسبقة التحديد، يحدد معيار JSP سلسلة من الأفعال القياسية، وهي تستخدم JSP كاسم مقدم، وتشمل العناصر القياسية للأفعال المتاحة ما يلي:

语法الوصف
jsp:include在页面被请求的时候引入一个文件。
jsp:useBean寻找或者示例化一个JavaBean。
jsp:setProperty设置JavaBean的属性。
jsp:getProperty输出某个JavaBean的属性。
jsp:forward把请求转到一个新的页面。
jsp:plugin根据浏览器类型为Java插件生成OBJECT或EMBED标记。
jsp:element定义动态XML元素
jsp:attribute设置动态定义的XML元素属性。
jsp:body设置动态定义的XML元素内容。
jsp:text在JSP页面和文档中使用写入文本的模板

常见的属性

所有的动作要素都有两个属性:id属性和scope属性。

  • id 属性:

    id 属性是动作元素的唯一标识,可以在JSP页面中引用。动作元素创建的id值可以通过PageContext来调用。

  • scope 属性:

    该属性用于识别动作元素的生命周期。id属性和scope属性有直接关系,scope属性定义了相关联id对象的寿命。scope属性有四个可能的值:(a) page, (b)request, (c)session, 和 (d) application。

<jsp:include>动作元素

<jsp:include>动作元素用来包含静态和动态的文件。该动作把指定文件插入正在生成的页面。语法格式如下:

<jsp:include page="相对 URL 地址" flush="true" />

 前面已经介绍过include指令,它是在JSP文件被转换成Servlet的时候引入文件,而这里的jsp:include动作不同,插入文件的时间是在页面被请求的时候。

以下是include动作相关的属性列表。

صفةالوصف
صفة page包含在页面中的相对URL地址。
flush布尔属性,定义在包含资源前是否刷新缓存区。

مثال على الإنترنت

以下我们定义了两个文件 date.jspmain.jsp,代码如下所示:

date.jsp 文件代码:

<%@ page language="java" contentType="text/html; charset=UTF-8" %>
    pageEncoding="UTF-8"%>
<p>
   تاريخ اليوم هو: <%= (new java.util.Date()).toLocaleString() %>
</p>

كود ملف main.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" %>
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>موقع دروس الأساسيات (oldtoolbag.com)</title>
</head>
<body>
<h2>include 动作示例</h2>
<jsp:include page="date.jsp" flush="true" />
</body>
</html>

الآن قم بوضع هذه الملفين في مجلد الجذر للخادم، واطلع على ملف main.jsp. النتيجة ستكون كما يلي:

include 动作示例
تاريخ اليوم هو: 2016-6-25 14:08:17

عنصر action jsp:useBean

jsp:useBean يستخدم هذا العمل لتحميل JavaBean سيتم استخدامه في صفحة JSP.

هذه الميزة مفيدة جدًا لأنها تمكننا من استغلال ميزة إعادة استخدام المكونات Java.

أبسط صيغة لـ action jsp:useBean هي:

<jsp:useBean id="name" />

بعد تحميل الفئة، يمكننا تعديل واسترجاع خصائص bean باستخدام actions jsp:setProperty و jsp:getProperty.

إليك قائمة خصائص action useBean ذات الصلة.

صفةالوصف
classيحدد اسم المجموعة الكاملة لـ Bean.
typeيحدد نوع المتغير الذي سيتم استدعاؤه.
beanNameمن خلال استخدام طريقة instantiate() من java.beans.Beans لتعيين اسم Bean.

قبل تقديم أمثلة محددة، دعونا ننظر أولاً في عناصر actions jsp:setProperty و jsp:getProperty:

عنصر action jsp:setProperty

يستخدم jsp:setProperty لضبط خصائص Bean الممثلة، ويوجد هناك استخدامان. أولاً، يمكنك استخدام jsp:setProperty في الخارج (الخلف) من عنصر jsp:useBean، كما يلي:

<jsp:useBean id="myName" ... />
...
<jsp:setProperty name="myName" property="someProperty" .../>

في هذه الحالة، سواء وجد jsp:useBean Bean موجودًا أم قام بإنشاء مثال جديد لـ Bean، سيتم تنفيذ jsp:setProperty. الطريقة الثانية هي وضع jsp:setProperty داخل عنصر jsp:useBean، كما يلي:

<jsp:useBean id="myName" ... >
...
   <jsp:setProperty name="myName" property="someProperty" .../>
</jsp:useBean>

في هذه الحالة، سينفذ jsp:setProperty فقط عند إنشاء مثال جديد لBean، وإذا كان يتم استخدام مثال موجود فلا يتم تنفيذ jsp:setProperty.

لدى action jsp:setProperty أربعة خصائص كما في الجدول التالي:

صفةالوصف
nameالخصائص الضرورية. إنها تمثل Bean الذي يتم تعيين الخاصية له.
propertyالخصائص الضرورية. إنها تمثل أي الخاصية يتم تعيينها. هناك استخدام خاص: إذا كان قيمة property هي "*"، فإن جميع المعلمات المطلوبة التي تطابق أسماء الأشياء وخصائص Bean ستتم نقلها إلى طريقة set الخاصة بالخصائص المطلوبة.
valueالخصائص value هي اختيارية. تستخدم هذه الخاصية لتعيين قيمة الخاصية للBean. يتم تحويل البيانات النصية إلى数字 أو boolean أو Boolean أو byte أو Byte أو char أو Character باستخدام طريقة.valueOf القياسية في الكائن المستهدف. على سبيل المثال، يتم تحويل قيم boolean وBoolean (مثل "true") باستخدام Boolean.valueOf، وقيم int وInteger (مثل "42") باستخدام Integer.valueOf.   لا يمكن استخدام value وparam في نفس الوقت، ولكن يمكن استخدام أحدهما.
paramparam هو اختياري. يحدد أي请求 parameter يستخدم كقيمة الخاصية للBean. إذا لم يكن هناك parameter في الطلب الحالي، لا يتم القيام بأي شيء، لن يتم نقل null إلى طريقة set الخاصية للBean. لذلك، يمكنك السماح للBean بتقديم قيمة افتراضية للخصائص، وسيتم تعديل القيمة الافتراضية فقط عندما يتم تحديد قيمة جديدة من خلال parameter في الطلب.

عنصر action jsp:getProperty

يستخدم动作 jsp:getProperty قيمة الخاصية المحددة من Bean، ويقوم بتحويلها إلى نص، ثم ينشرها. صيغة النص هي:

<jsp:useBean id="myName" ... />
...
<jsp:getProperty name="myName" property="someProperty" .../>

في الجدول التالي، هناك خصائص مرتبطة بgetProperty:

صفةالوصف
nameاسم الخاصية التي يتم البحث عنها. يجب أن تكون Bean معرفة.
propertyلإزالة قيمة الخاصية من Bean

مثال على الإنترنت

في المثال التالي، استخدمنا Bean:

package com.w3codebox.main;
public class TestBean {
   private String message = "基础教程网";
 
   public String getMessage() {
      return(message);
   }
   public void setMessage(String message) {
      this.message = message;
   }
}

تجميع مثال الملف TestBean.java التالي:

$ javac TestBean.java

بعد إكمال التجميع، سيتم إنشاء ملف في الدليل الحالي TestBean.class ملف، التحقق من نسخ هذا الملف إلى مشروع JSP الحالي WebContent/WEB-INF/classes/com/w3codebox/mainأسفل (مجلد package com/w3codebox/main، لا تحتاج إلى إنشاء يدويًا).

هذه هي صورة بنية مجلدات Eclipse:

هذا مثال بسيط جدًا، وظيفته هو تحميل Bean، ثم تعيين/قراءة صفة message.

الآن دعونا نطلق هذا Bean في ملف main.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" %>
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>موقع دروس الأساسيات (oldtoolbag.com)</title>
</head>
<body>
<h2>مثال على استخدام JavaBean في Jsp</h2>
<jsp:useBean id="test" />
 
<jsp:setProperty name="test" 
                    property="message" 
                    value="تعليمات الأساس..." />
 
<p>عرض المعلومات....</p>
 
<jsp:getProperty name="test" property="message" />
</body>
</html>

بزيارة المتصفح، تنفيذ هذه الملفات، النتيجة ستكون كما يلي:

عنصر action jsp:forward

 يحول action jsp:forward الطلب إلى صفحة أخرى. الصفة الواحدة لـ jsp:forward هي page. نموذج الجملة كما يلي:

<jsp:forward page="عنوان URL مطلق" />

هذه هي الصفات المتعلقة بـ forward:

صفةالوصف
صفة pageيحتوي على صفة page على URL مطلقة. يمكن أن يتم تقديم قيمة page مباشرة، أو يمكن حسابها ديناميكيًا عند الطلب، ويمكن أن تكون صفحة JSP أو Servlet Java.

مثال على الإنترنت

في هذا المثال، استخدمنا ملفين، وهما: date.jsp و main.jsp.

كود ملف date.jsp كالتالي:

<%@ page language="java" contentType="text/html; charset=UTF-8" %>
    pageEncoding="UTF-8"%>
<p>
   تاريخ اليوم هو: <%= (new java.util.Date()).toLocaleString() %>
</p>

كود ملف main.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" %>
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>موقع دروس الأساسيات (oldtoolbag.com)</title>
</head>
<body>
<h2>مثال على action forward</h2>
<jsp:forward page="date.jsp" />
</body>
</html>

الآن قم بوضع هذه الملفين في مجلد الجذر للخادم، واطلع على ملف main.jsp. النتيجة ستكون كما يلي:

تاريخ اليوم هو: 2016-6-25 14:37:25

عنصر action jsp:plugin

يستخدم action jsp:plugin لضمان إدراج عناصر OBJECT أو EMBED الضرورية لتشغيل Java Applet عبر مكون Java.

إذا لم يكن المكون الإضافي المطلوب موجودًا، سيقوم بتحميل المكون الإضافي ثم تنفيذ مكون Java. يمكن أن يكون مكون Java هو applet أو JavaBean.

للعنصر action هناك عدة خصائص مناسبة للعناصر HTML لتنسيق مكونات Java. يمكن استخدام عنصر param لتحويل المعلمات إلى Applet أو Bean.

فيما يلي مثال نموذجي يستخدم عنصر action plugin:

<jsp:plugin type="applet" codebase="dirname" code="MyApplet.class"
                           width="60" height="80">
   <jsp:param name="fontcolor" value="red" />
   <jsp:param name="background" value="black" />
 
   <jsp:fallback>
      تعذر تحميل مكتبة Java
   </jsp:fallback>
 
</jsp:plugin>

إذا كنت مهتمًا، يمكنك تجربة استخدام applet لتجربة عنصر动作 jsp:plugin، العنصر <fallback> هو عنصر جديد يرسل معلومات خطأ إلى المستخدم عند حدوث خطأ في العنصر.

<jsp:element>، <jsp:attribute>، العنصر动作 <jsp:body>

<jsp:element>، <jsp:attribute>، العنصر动作 <jsp:body> يعرف العنصر XML بشكل ديناميكي. الديناميكية مهمة، مما يعني أن العنصر XML يتم إنشاؤه بشكل ديناميكي عند التجميع وليس بشكل ثابت.

في هذا المثال، يتم تعريف العنصر XML بشكل ديناميكي:

<%@ page language="java" contentType="text/html; charset=UTF-8" %>
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>موقع دروس الأساسيات (oldtoolbag.com)</title>
</head>
<body>
<jsp:element name="xmlElement">
<jsp:attribute name="xmlElementAttr">
   قيمة الخاصية
</jsp:attribute>
<jsp:body>
   نص العنصر XML
</jsp:body>
</jsp:element>
</body>
</html>

عند زيارة المتصفح للصفحة التالية، سيتم عرض النتيجة كما يلي:


العنصر动作 <jsp:text>

العنصر动作 يسمح باستخدام قالب كتابة النصوص في صفحة JSP و الوثيقة، نموذج الجملة كما يلي:

<jsp:text>بيانات النمط</jsp:text>

لا يمكن أن تحتوي النمط النصي أعلاه على عناصر مكررة، يمكن أن تحتوي فقط على نص و تعبير EL (ملاحظة: سيتم تقديم تعبير EL في الفصول القادمة). يرجى ملاحظة أنه لا يمكنك استخدام تعبير مثل ${whatever > 0} في ملفات XML، لأن رمز > غير قانوني. يمكنك استخدام تعبير ${whatever gt 0} أو إدراج قيمة داخل جزء منCDATA.

<jsp:text><![CDATA[<br>]]></jsp:text>

إذا كنت بحاجة إلى إعلان DOCTYPE في XHTML، يجب استخدام عنصر action <jsp:text>، مثل المثال التالي:

<jsp:text><![CDATA[<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"DTD/xhtml1-strict.dtd">]]>
</jsp:text>
<head><title>jsp:text action</title></head>
<body>
<books><book><jsp:text>  
    مرحبًا بك في برمجة JSP
</jsp:text></book></books>
</body>
</html>

يمكنك تجربة الفرق بين استخدام <jsp:text> وليس استخدام هذا عنصر动作.