شـبـكــة عـمّـــار
إخبارية - ترفيهية
- تعليمية



جديد الصور
جديد الأخبار
جديد المقالات


جديد الصور

جديد البطاقات

جديد الصوتيات

المتواجدون الآن


تغذيات RSS

2012-08-14 06:01

كائنات ASP- الكائن Response -الجزء الأول



في الدرس السابق كتبنا أوامر ASP بسيطة وذلك لتجربة برامج خادم الويب التي قمنا بتثبيتها على أجهزتنا .. ولكننا لا نعلم ماهية تلك الأوامر وما عملها بالضبط !! ولكنك ستتعلمها جيداً في الدروس القادمة من هذه السلسلة بإذن الله.

في درس اليوم سنتعرف على مكونات صفحة ASP و كائنات ASP، ثم سنتعرف على الكائن Response.

~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~

مما يتكون ملف ASP ؟!

ملف ASP يشبه إلى حد ما ملفات HTML، فهو يحتوي على أوامر HTML وكذلك يحتوي على أوامر نصية كالـ VBScript و JScript وغيرها! ويحتوي أيضاً على أوامر خاصة بها تتم معالجتها على الجهاز المزود للخدمة، ويتم وضعها بين العلامتين <% و %>. هاتين العلامتين تنبه برامج خادم الويب بأن ما بينها هي أوامر ASP تحتاج لمعالجة في الخادم قبل إرسال الصفحة المطلوبة للمستخدم.

ذكرنا أنه بإمكاننا إضافة أحد الأوامر النصية إلى ملف ASP ،ولعمل هذا فإننا نضيف السطر التالي في بداية ملف ASP وقبل أوامر HTML وهذا لسطر عبارة عن تعريف بلغة الأوامر النصية المستخدمة في الصفحة :

<%@ language="javascript"%>

<HTML>

<BODY>

<%

' السطر التالي لعرض عبارة السلام عليكم

Response.Write("السلام عليكم")

%>

</BODY>

</HTML>

وهذا يعطيك صورة لمكونات ملف ASP التي ذكرناها.

ملاحظات:

* أود الإشارة هنا إلى أن لغة الأوامر النصية الافتراضية لملف ASP هي VBScript، ولذا فإنه بإمكاننا عدم كتابة تعريف بلغة الأوامر النصية VBScript في ملف ASP!

*لغة VBScript غير حساسة لحالة الأحرف لذا عند كتابة أوامر ASP لا يجب مراعاة حالة الأحرف إذا كانت كبيرة أو صغيرة ! وبعكسها تماماً لغة JavaScript فيجب مراعاة حالة الأحرف عند كتابة أوامر ASP!! فعند استخدام JavaScript كلغة أوامر نصية في ملف ASP يجب كتابة الحرف الأول من كل أمر بالأحرف الكبيرة تماماً كالموجود في الكود أعلاه.

*نظراً لأن لغة الأوامر النصية الموجودة في ملف ASP تتم معالجتها من جانب الخادم، فلا يستلزم أن يدعم المتصفح في جهاز المستخدم هذه اللغات.

*يمكنك إضافة تعليقات للأوامر التي تكتبها بوضع العلامة ' قبل كتابة التعليق، حيث أن هذا التعليق يتم تجاهله من جانب الخادم ولا تتم معالجة هذا السطر.



~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~



كائنات ASP:

يوجد في ASP سبعة كائنات أساسية تعتبر جزء من مكتبة الربط الديناميكية ASP.DLL الموجودة على الخادم،ولذا فأنت لا تحتاج لأية برامج إضافية للعمل مع هذه الكائنات إطلاقاً !! وهذه الكائنات هي :

*Response

*Request

*Session

*ASPError

*ObjectContext

*Application

*Server

كل كائن من هذه الكائنات له خواص و دوال خاصة به، سنتطرق في هذه السلسلة بإذن الله لكل كائن من هذه الكائنات بشيء من التفصيل.



~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~

أول هذه الكائنات التي سنتعرف عليها سيكون الكائن Response.

الكائن Response :

لقد مررت بهذا الكائن في الدروس السابقة ! فهل هو نفسه أحد كائنات ASP التي ذكرناها ؟!! .. نعم هو بالضبط الكائن الذي سنتعرف عليه في هذا الدرس !

الكائن Response مسئول عن إرسال المعلومات من خادم الويب إلى المتصفح في جهاز المستخدم وبإمكانه التحكم بها أيضاً.

خواص ودوال هذا الكائن :

في الحقيقة، لا أستطيع فصل الدوال عن الخواص في الشرح !! لأن غالبية الخواص تحتاج لدوال معينة لنستفيد منها ! ولذلك فإني سأوضحها معاً !

الدالة Write:

من أشهر الدوال في هذا الكائن هي الدالة Write وقد لاحظنا في أمثلة سابقة أن استخدام هذه الدالة يؤدي إلى عرض نص معين في المتصفح !

مثال :

<%
Response.Write("أهلاً بكم في الموسوعة العربية")

%>

*بإمكانك عدم وضع البيانات بين القوسين () .. ولكن تضمين بياناتك بين هذين القوسين يسهل قراءة الكود واستكشاف الأخطاء.
*عبارة Response.Write تستخدم لعرض البيانات المختلفة كنص معين، متغيرات، أو حتى أوامر HTML.

*لعرض نص أو أحد أوامر HTML فيجب وضعها بين علامتي تنصيص " ".
مثال لعرض جملتين، بحيث نجعل كل جملة في سطر مستخدمين الأمر <BR> في HTML:

<%
Response.Write("أهلاً بكم في الموسوعة العربية<BR> سعداء بزيارتكم")

%>

*لعرض بيانات مختلفة فإنك لن تحتاج لكتابة عبارة Response.Write لكل نوع من هذه البيانات على حده ! بإمكانك أن تضعها جميعاً في عبارة واحدة بشرط أن تفصل بين هذه البيانات بالحرف &.
وهذا مثال للتوضيح :

<%
Dim one

one=1

Response.Write("الرقم التالي هو الرقم واحد ويكتب : "& one)

%>

في السطر الثاني والثالث عرفنا متغير بالاسم one وعيّنا له القيمة 1. وفي السطر الرابع كتبنا نص و عرضنا قيمة المتغير one بجانب النص بعد أن فصلنا هذين البيانين بالعلامة & .

لاحظ أن السطر الثاني و الثالث عبارة عن أوامر لغة VBScript. ولم نحتج للتعريف بها في البداية وذلك لأنها اللغة الافتراضية والتي سنستخدمها في هذه الدروس.

*يمكنك عرض البيانات بطريقة أخرى مكافأة للعبارة Response.Write ! وذلك كالتالي:
<%="أهلاً بكم في الموسوعة العربية"%>
لا فرق بين الطريقتين إلا أن الطريقة الثانية تسهل عليك كتابة الأوامر ! جربها !!

~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~

الخاصيّة Buffer:

أحد خواص الكائن Response التي سنتعرف عليها هي الخاصية Buffer. قد يكون هذا المصطلح ليس بالجديد عليك !! ومع ذلك سأقوم بشرحه

نعم، بالضبط ! Buffer هو ذلك الجزء من ذاكرة الحاسوب الذي يستخدم للتخزين المؤقت، فخادم الويب يستخدم جزء معين من الذاكرة يخزن فيه الأوامر التي تمت معالجتها حتى تنتهي معالجة ملف ASP كاملاً قبل إرسالها إلى المتصفح لدى المستخدم !

هذه الخاصية تأخذ قيمتين، إما True أو False. إذا كانت قيمتها True فهذا يعني أن الخادم يحتفظ بكل أمر بعد معالجته حتى تنتهي معالجة الصفحة بأكملها ومن ثم يرسل ناتج المعالجة إلى للمستخدم !

وأما إذا أخذت القيمة False فإن الخادم يرسل ناتج المعالجة فور انتهاءه من معالجة كل أمر في الصفحة !

المثال التالي يوضح استخدام هذه الخاصية:

<%Response.Buffer=True%>
*إذا لم تعين قيمة لهذه الخاصية فإن القيمة الافتراضية ستكون False.

*يجب استخدام هذه الخاصية في بداية ملف ASP وقبل أوامر HTML! و إلا فإن المستعرض سيعرض خطأ لديك !

كما ذكرت في بداية الدرس بأننا لن نستفيد من خواص الكائنات إلا إذا استخدمنا دوال معينة تحقق نتيجة من استخدام هذه الخواص !!

ولهذا فسنتعرف الآن على بعض الدوال المتعلقة بهذه الخاصية:

الدالة Flush:

تستخدم هذه الدالة لإرسال محتويات المنطقة التخزينية للمتصفح لدى المستخدم ! جميع محتويات المنطقة التخزينية ترسل لمستخدم فور معالجة العبارة Response.Flush.

وكأن هذه الدالة توجه أمراً للمنطقة التخزينية في الخادم وتقول " فضلاً أيتها المنطقة التخزينية، أرسلي جميع الأوامر التي قمتي بمعالجتها حتى الآن للمستخدم ولا تنتظري اكتمال معالجة الصفحة !" ، وبعد معالجة هذه العبارة ستصبح المنطقة التخزينية خالية تماماً حتى تتم معالجة أوامر جديدة تلي هذه العبارة.

المثال التالي يوضح استخدام هذه الدالة:

<%Response.Buffer=True%>
<HTML>

<BODY>

<%

Response.Write("قبل الدخول في عمليات حسابية مطولة فإن الساعة الآن تشير إلى : " & Time)

Response.Flush

Dim x

For x=0 To 10000000

x=x+2

Next

Response.Write("وبعد إجراء عمليات حسابية مطولة فإن الوقت الآن : " & Time)

%>

</BODY>

</HTML>

في المثال السابق استخدمت دالة الوقت Time في لغة VBScript لتوضيح عمل كلاً من الخاصية Buffer والدالة Flush. فالكود السابق يعمل كالتالي :

1- قبل البدء في كتابة أي أوامر في الصفحة، عينت القيمة True للخاصية Buffer رغبةً في الاحتفاظ بناتج المعالجة حتى تتم معالجة الصفحة كاملةً قبل إرسالها للمستخدم.
2- كتبت العبارة Response.Write لتعرض نص بسيط بالإضافة إلى عرض الوقت الحالي.

3- استخدمت العبارة Response.Flush لإرسال جميع مكونات المنطقة التخزينية للمستخدم قبل البدء في معالجة الأوامر التي تلي العبارة.
4- مستخدمةً لأوامر VBScript أجريت عمليات حسابية مطولة.

5- كتبت عبارة Response.Write لعرض نص بسيط بالإضافة إلى الوقت الحالي.
6- بعد انتهاء أوامر ASP فإن الخادم سيرسل المحتويات التي عالجها بعد العبارة Response.Flush للمستخدم .

7- ستلاحظ أن فارق الوقت هو ثانية أو ثانيتين.


*يجب استخدام هذه الدالة فقط إذا أخذت الخاصية Buffer القيمة True، و إلا فإن المستعرض سيعرض خطأ لديك !!
*نستخدم هذه الدالة قبل الدخول في عمليات حسابية مطولة أو قبل استرجاع وتخزين بيانات لقاعدة البيانات، وذلك حتى لا يضطر المستخدم للانتظار فترة طويلة أما صفحة بيضاء !!

*يمكنك وضع هذه العبارة بعد أوامر خاصة لعرض صور إعلانية متحركة مثلاً، لتكون كنوع من تسلية زوار موقعك أثناء معالجة الصفحة التي تطلب كم كبير من المعالجة كما ذكرنا.
الدالة Clear:

لازلنا مع الدوال المستخدمة مع الخاصية Buffer، والآن الدالة الجديدة التي سنتعرف عليها هي الدالة Clear. يشير اسم الدالة إلى عملها !! Clear تعني امسح وهي تستخدم مع الخاصية Buffer !! فما عمل هذه الدالة ؟؟

بالفعل! هذه الدالة تقوم بمسح جميع محتويات المنطقة التخزينية. ففور معالجة الأمر Response.Clear تمسح جميع محتويات المنطقة التخزينية! وكأن هذه الدالة عند معالجتها تقول للخادم " فضلاً أيها الخادم أمسح جميع المحتويات الموجودة في المنطقة التخزينية دون أن ترسلها للمستخدم ! "

مثال يوضح عمل هذه الدالة:

<%Response.Buffer=True%>
<HTML>

<BODY>

<%

Response.Write("هذا النص لن يظهر لديك في المتصفح ")

Response.Clear

Response.Write("هذا النص سيظهر في المتصفح ")

%>

</BODY>

</HTML>

الكود السابق يعمل كالآتي:

1- قبل البدء في كتابة أي أوامر في الصفحة، عينت القيمة True للخاصية Buffer رغبةً في الاحتفاظ بناتج المعالجة حتى تتم معالجة الصفحة كاملةً قبل إرسالها للمستخدم.
2- وضعت عبارة Response.Write لعرض نص في المتصفح.

3- استخدمت العبارة Response.Clear لمسح ناتج معالجة الأوامر السابقة. فأصبحت المنطقة التخزينية في هذه اللحظة خالية من أي أوامر.
4- كتبت أوامر جديدة تمت معالجتها وحفظها في المنطقة التخزينية وهي عبارة عن عرض نص في المتصفح باستخدام العبارة Response.Write

5- بعد الانتهاء من معالجة أوامر ASP جميعاً سيرسل الخادم ناتج المعالجة للمستخدم وسيعرض لديه النص الثاني فقط! حيث أن النص الأول قد تم مسحه بفعل الدالة Clear.
*يجب استخدام هذه الدالة فقط إذا أخذت الخاصية Buffer القيمة True، و إلا فإن المستعرض سيعرض خطأ لديك !!

*تستخدم هذه الدالة إذا لم يتحقق شرط معين ولم تعد بحاجة لعرض المعلومات إذا لم يتحقق ذلك الشرط.
*وتستخدم أيضاً إذا حدث خطأ في معالجة صفحة ASP، فإن هذه الدالة تقوم بمسح جميع المعلومات في المنطقة التخزينية وعرض رسالة خطأ للمستخدم بدلاً منها. غير ذلك من الاستخدامات التي ترغب بها !

الدالة End:

الدالة الأخيرة المستخدمة مع الخاصية Buffer هي الدالة End،استخدام هذه الدالة يؤدي إلى إيقاف معالجة الأوامر! فبمجرد أن يعالج الخادم العبارة Response.End يتوقف عن معالجة الأوامر التي تلي هذه العبارة ويرسل جميع محتويات المنطقة التخزينية للمستخدم.

وكأن هذه الدالة توجه أمراً للخادم بقولها " توقف أيها الخادم عن معالجة المزيد من الأوامر ! و أرسل محتويات المعالجة التي تحتفظ بها في المنطقة التخزينية للمستخدم فوراً !! "

مثال توضيحي:

<%Response.Buffer=True%>
<HTML>

<BODY>

<%

Response.Write("هذا النص سيظهر لديك في المتصفح ")

Response.End

Response.Write("بينما هذا النص لن يظهر في المتصفح ")

%>

</BODY>

</HTML>

*يجب استخدام هذه الدالة فقط إذا عيّنت القيمة True للخاصية Buffer، و إلا فإن المستعرض سيعرض خطأ لديك !!( لا مانع من التجربة!)
*بعد استخدام الدالة End فإن أي أوامر تلي هذه الدالة لن تتم معالجتها سواء كانت أوامر ASP أو HTML.

وبهذا أكون قد انتهيت من الخاصية Buffer وجميع الدوال المتعلقة بها!



سنكمل ما تبقى لنا في هذا الكائن في درس جديد إن شاء الله.


تعليقات 0 | إهداء 0 | زيارات 613


خدمات المحتوى
  • مواقع النشر :
  • أضف محتوى في Digg
  • أضف محتوى في del.icio.us
  • أضف محتوى في StumbleUpon
  • أضف محتوى في Google


تقييم
1.00/10 (3 صوت)


Powered by Dimofinf cms Version 3.0.0
Copyright© Dimensions Of Information Inc.