الدرس السادس عشر

20
م الرحمن الرح بسم عن استخدامكون الدرسوم س الbeans ت الـلصفحا ا فJSP ذا الدرس هو به ما سنأخذه: فهم فائدةbeans إنشاءbeans مثالstringBean ئص الـت إلى خصارمترالباد اسنا طرق اbean ركة الـ مشاbeans ء الـ إنشاBean المشروط ركة الـ مشاBean فة مع مثال أربع طرق مختل فناقش هذا الدرسةج استراتلثالثة ادراج المحتوىكنام الد ف صفحاتJSP ستخدام الـ باbeans . ذا تستخدم لماBeans ؟ئدة استخدام الـ فا نعرفسؤال ضروري من أجل أن هذا الbean سرفلت كنت بال تعمللمؤكد أنت عندما كنت من ابة أكواد الـ من كتا تسأمHTML ى الـ علعمل فعندما بدأت بالJSP ة ولكن ما زلتلناحذه الراحة من ه قد شعرت باة أكواد برمج تستخدم أكواد الـة داخلت البرمجماتعلة من ال كمل أصبح عندك وبهذا الشكHTML مشكلةذه الحل ه ولءت ال جا ـbean ة بأكوادت البرمجماتعلن بعض الاضة عوف باستع الصفى مبدأ فصلتمد علث تع بحJSP مكن ً طبعا أن الـقول الbean ك تستخدم الـ تجعلزاتث م توفر لك ثbean وه: 1 . وص برمجة عدم استخدام نصjava . ة مثل أنشاءمات برمجن تعلاضة عستعمكن ا فأنهً كما أسلفنا سابقا صفحة الـ داخلابات جافاا من كتشكل خففنذا الغرض وبهذا الء الطرق هستدعا غرض من صف و اJSP . 2 . راتن الغرض و البرامتق تواصل ب تخل. الـbean رات قراءة البرمتةختصار من عملطة اح لك ببسا تتها إلىل ومعالجتها وتحوString لكائنئج داخل النتا ووضع ا. 3 . ركة الغرض على مشا تقوم. تستخدم الـ عندماbean ضمنركة العرضنك مشامك ً رة جدا بسهول كب فإنهةلعادقة ا الطرر متاح فت وهذا غطلبان ال متعددة أو ب صفحات. رة أوت الصغقا التطبرق عمل صغ فرت المعقدة أوقا التطبرق عمل كب فر لمباشر استدعاء كود جافا ا( directly ) . مات كافة تعلها وضعنك فمك و صفحة الـلجافا ف اJSP . ر مباشر الغستدعاء كود جافا ا( indirectly ) . وفر صف تتعلق بتطوة عن الصفحة الـ مساعدة منفصلJSP . مات أدراج تعلع وهنا تستطت الـ صفحا جافا فJSP وف من الصفلمساعدةوف ا الصفل خ. استخدامbeans . كون ستدعائهاص وا مطورة بشكل خاةن ب وهjsp:useBean, jsp:getProperty, طرق وسنتعلمها من الرها وغ هذا الدرس ف. ة استخدام بنMVC . ت والـسرفل من ال هنا سوف نستعمل كلJSP مععمل فة الف بعض وسنأخذ كMVC مقبلة الدروس ال ف. لغةر الصر التعبم عنا استخدا. مختصرة من أجلرات هنا نستخدم عباً داذه عالناتج وهئص الغرض امورد و على خصاى ال علحصول الشتراك مع الـ تستخدم باbeans و الـMVC . ما بعد سنتعلمها ف لخاصةت ام تاغا استخدا. الـلخاصة بك فت اع بناء تاغا تستطJSP وهذا من هذا الدورةتقدم الم القسم نأخذه ف سوف

Upload: anas-aloklah

Post on 18-Feb-2017

229 views

Category:

Software


2 download

TRANSCRIPT

Page 1: الدرس السادس عشر

بسم هللا الرحمن الرحم

JSP ف الصفحات الـ beansالوم سكون الدرس عن استخدام

: ما سنأخذه بهذا الدرس هو

فهم فائدةbeans

إنشاءbeans

مثالstringBean

طرق اسناد البارمترات إلى خصائص الـbean

مشاركة الـ beans

إنشاء الـBean المشروط

مشاركة الـBeanف أربع طرق مختلفة مع مثال

.beans باستخدام الـ JSP صفحات ف الدنامك المحتوى إلدراج الثالثة استراتجة الدرس هذا ناقش

؟Beansلماذا تستخدم

من المؤكد أنت عندما كنت تعمل بالسرفلت كنت beanهذا السؤال ضروري من أجل أن نعرف فائدة استخدام الـ

قد شعرت بالراحة من هذه الناحة ولكن ما زلت JSP فعندما بدأت بالعمل على الـ HTMLتسأم من كتابة أكواد الـ

ولحل هذه المشكلة HTMLوبهذا الشكل أصبح عندك كمة من التعلمات البرمجة داخل أكواد الـ تستخدم أكواد برمجة

طبعا مكن JSP بحث تعتمد على مبدأ فصل الصفوف باستعاضة عن بعض التعلمات البرمجة بأكواد beanـ جاءت ال

: وهbean توفر لك ثالث مزات تجعلك تستخدم الـ beanالقول أن الـ

كما أسلفنا سابقا فأنه مكن االستعاضة عن تعلمات برمجة مثل أنشاء .javaعدم استخدام نصوص برمجة .1

.JSPغرض من صف و استدعاء الطرق هذا الغرض وبهذا الشكل خففنا من كتابات جافا داخل صفحة الـ

تتح لك ببساطة اختصار من عملة قراءة البرمترات bean الـ .تخلق تواصل بن الغرض و البرامترات .2

. ووضع النتائج داخل الكائنStringومعالجتها وتحولها إلى

فإنه بسهول كبرة جدا مكنك مشاركة العرض ضمن bean عندما تستخدم الـ.تقوم على مشاركة الغرض .3

.صفحات متعددة أو بن الطلبات وهذا غر متاح ف الطرقة العادة

التطبقات الصغرة أو فرق عمل صغر

التطبقات المعقدة أو فرق عمل كبر

استدعاء كود جافا المباشر(directly). ومكنك فها وضع كافة تعلمات

.JSPالجافا ف صفحة الـ

استدعاء كود جافا الغر مباشر(indirectly). تتعلق بتطور صفوفوهنا تستطع أدراج تعلمات .JSPمساعدة منفصلة عن الصفحة الـ

.خالل الصفوف المساعدةمن الصفوف JSP جافا ف صفحات الـ

استخدامbeans. وه بنة مطورة بشكل خاص واستدعائها كون

jsp:useBean, jsp:getProperty, وغرها من الطرق وسنتعلمها .ف هذا الدرس

استخدام بنةMVC. هنا سوف نستعمل كل من السرفلت والـJSP مع

. ف الدروس المقبلةMVCبعض وسنأخذ كفة العمل ف هنا نستخدم عبارات مختصرة من أجل .استخدام عناصر التعبر اللغة

الحصول على المورد و على خصائص الغرض الناتج وهذه عادا

سنتعلمها فما بعد.MVC و الـ beansتستخدم باالشتراك مع الـ

تستطع بناء تاغات الخاصة بك ف الـ .استخدام تاغات الخاصة JSP وهذا

سوف نأخذه ف القسم المتقدم من هذا الدورة

Page 2: الدرس السادس عشر

؟Beansما ه الـ

هbeansالـ حول تكون لمعرفته تحتاج ما ه ببساطة عبارة عن صف جافا تم كتابته بشكل قاس كلbeansالـ

:التالة القائمة ف المبنة البسطة الثالث النقاط

على الصف الذي سوف نستخدمه به الـbeanأن كون فه بان دون وسطاء .

تستطع فعل هذا أما بإنشاء بان بدون وسطاء بشكل صرح أو عن طرق حذف كل داالت البناء وبهذا الشكل

beanتم إنشاء البان االفتراض بمجرد إنشاء عنصر الـ. تلقائا (افتراض)تم أنشاء البان بدون وسطاء

.JSPف الـ

على الصف الذي سوف نستخدمه به الـbeanأن ال نجعل المتغرات فه عامة .

فإنه توجب علك أن تكون المتغرات ف الصف متغرات لس عامة beanعندما ترد استخدام صف ف الـ

. للوصول للمتغر بدال من السماح للوصول المباشرgetter و setterوهنا نستخدم الطرق

للوصول للطرق الموجودة ف الصف جب تسمة الطرق بـsetXxx و getXxx.

اسم هذا المتغر وفه حقل عطنا العدد الحال للركاب Carلكن لدنا على سبل المثال صف

numPassengers هنا جب أن كون لدنا طرق الوصول وه getNumPassengers وهذه الطرقة ال

وال intالت تأخذ قمة setNumPassengers ولدنا الطرقة intتأخذ وسطاء وتعد لنا قمة من النمط

beanف الـ (beanف الـ الخاصة تسمى)وف مثل هذه الحالة فتم استدعاء الطرق . تعد لنا شء

لكنه حرف كبر ف اسم nنالحظ ف اسم الخاصة الحرف الصغر ) numPassengersباالسم Carللصف

(. Carالطرقة ف الصف

فإنه تم استدعاء إحدى الطرقتن setXxx و getXxxإذا كان ف الصف حوي على الطرق : 1القاعدة

.xxxباالسم

لدنا استثناء وحد للقاعدة السابقة ف اصطالح اسم الطرقة ف حال كانت الطرقة تعد لنا قمة منطقة

(boolean) هنا توجب علك تسمة الطرقة بـisXxx بدال من getXxx .

وه عن أن السارة مأجورة أم ال leasedاسمه boolean ولكن لدنا متغر من نمط Carلنعد لمثال صف

booleanتأخذ وسطاء وتعد لنا قمة من النمط الت isLeasedهنا تكون طرق الوصول لهذا المتغر ه

باسم beanهنا تستدعها ف الـ , وال تعد لنا شء booleanالت تأخذ قمة setLeasedوالطرقة

leased.

بدال من isXxxفإنه توجب أن كون اسم الطرقة booleanإذا كان لدنا قمة تعد لنا : 2القاعدة

getXxx.

؟Beansطرقة استخدام الـ

:JSP ومعالجتها ف الصفحات الـ JavaBeansهناك ثالث بنات األساسة جب استخدامها لبناء الـ

jsp:useBean. بن العنصر هذا الحاالت, أبسط ف bean التال النحو على تستخدم ما وعادة . جدد: <jsp:useBean id="beanName"

class="package.Class" />

.bean الت سوف نشرحها ف مشاركة الـ scopeأضا أضافا لهذا العنصر فمكنك أضا وضع الخاصة

jsp:getProperty . هذا العنصر ستخدم لقراءة واستخراج قمة من خاصة الـbean . وقراءة الخاصة تشر

النحو على العنصر هذا استخدام تم. getXxxإلى االسم المختصر من أجل استدعاء الطرقة من الشكل

:التال<jsp:getProperty name="beanName"

property="propertyName" />

Page 3: الدرس السادس عشر

jsp:setProperty . هذا العنصر من أجل تعدل قمة الخاصة لـbean وهو ستدع الطرق الت من الشكل

setXxx التال النحو على تستخدم ما وعادة . طبعا ستدعه باسمه المختصر كما أسلفنا سابقا: <jsp:setProperty name="beanName"

property="propertyName"

value="propertyValue" />

.اآلن سوف تم شرح ما سبق بالتفصل

bean :jsp:useBeanبناء الـ مفدة توفر قدرة beansالـ . JSP واستخدامها ف الـ beanالـ ف عنصر األكشن تتح لك تحمل jsp:useBeanأن

. JSPبسهولة استخدام التضحة دون Java صف الـ استخدام إعادة استغالل لك تتح ألنها جدا

:ل ما هو استخدامها جب التbeanالـ تحدد أجل من الجملة بناء أبسط

<jsp:useBean id="name" class="package.Class" />

. idهو باسم محدد jspService_ وتم ربط هذا الكائن ف Classالعبارة السابقة تعن أنه تم أنشاء كائن من الصف

علك هنا استخدام اسم الصف مع ذكر اسم الباقة الت تشمله بغض النظر هما إذا كنت تستخدم : مالحظة<%@ page import... %>

: كما لbeanفكتب هذا بالـ Book من الصف book1مثال عن أنشاء غرض <jsp:useBean id="book1" class="coreservlets.Book" />

: ماىتاىيscriptletوبالمقارنة فإنه العبارة السابقة مكن كتابتها بواسطة عنصر <% coreservlets.Book book1 = new coreservlets.Book(); %>

. ف ما سبقbean أفضل وقد ذكرنا مزات الـ beanلكن استخدام الـ

jsp:getProperty بـ beanالوصول لخصائص الـ وتقوم بوضع jsp:getPropertyذالك بواسطة التاغ (beanالخاصة ف الـ )من أجل الحصول على خرج الطرقة

و تقوم بوضع قمة الخاصة jsp:useBean ف التاغ id ف هذا التاغ نفس قمة الخاصة nameقمة الخاصة

property اسم الطرقة الـget الت ترد استعادها بدون كتابة الـ getوبكتابة أول حرف منها بحرف صغر .

وذالك باستدعاء الطرقة بشكل صرح JSP مكننا استخدام عنصر تعبر ف الـ jsp:getPropertyبدال من استخدام

الت تعد لنا قمة title ونرد استدعاء الخاصة Bookعلى سبل المثال لنأخذ الصف . id من الغرض الذي له اسم الـ

هنا لدك إحدى jsp:useBeanباستخدام book1 وقد أنشأنا غرض من هذا الصف واسمه Stringمن نمط

: وهJSP ف صفحة الـ titleالطرقتن من أجل أظهار قمة

<jsp:getProperty name="book1" property="title" />

<%= book1.getTitle() %>

. ألن بهذا الشكل نخفف من كتابة أكواد الجافا كما أسلفنا سابقا (beanاستخدام الـ )لكن من األفضل استخدام النهج األول

ف الحالة البسطةjsp:setProperty بـ beanتعن خصائص الـ وهذه العملة لها عدة jsp:setProperty فهنا نقوم باستخدام التاغ beanمن أجل تعن أو تعدل خصائص الـ

وهذه نأخذ قمتها من الخاصة nameالخاصة : (attributes)أشكال مختلفة لكن ابسط شكل له وفر لنا ثالث خواص

id من التاغ jsp:useBean ,property : هنا تضع اسم طرقة الـsetوال تنسى كتابة أول حرف صغر ,

value:وه القمة الجددة .

وذالك باستدعاء scriptlet وهو عن طرق استخدام عنصر jsp:getPropertyأضا هنا تستطع استخدام بدل عن

لنعد لمثال الفقرة السابقة ونأخذ الغرض . (idالغرض الذي له اسم الـ )beanالطرقة بشكل صرح من الغرض الـ

book1 فإنه هناك طرقتن لتعدل خصائص الـ beanوه :

<jsp:setProperty name="book1"

property="title"

value="Core Servlets and JavaServer Pages" />

<% book1.setTitle("Core Servlets and JavaServer Pages"); %>

. ألن بهذا الشكل نخفف من كتابة أكواد الجافا كما أسلفنا سابقا (beanاستخدام الـ )لكن من األفضل استخدام النهج األول

Page 4: الدرس السادس عشر

StringBean: مثالوألن هذا الصف لس فه . coreservlets من الباقة StringBeanف هذا المثال سوف نعرض صف بسط اسمه

و بان بدون وسطاء فإنه لن نقوم بتصرح عن أي بان وكل ذالك من أجل أن ستوف هذا الصف شروط أي متغر عام

String تعد لنا getMessageولدنا ف هذا الصف أضا طرقة تدعى . الت ذكرنها ف ما سبقbeanالـ

. String تأخذ وسط setMessageوطرقة أخرى تدعى

: وتم ذالك على النحو األتjsp:useBean وذالك باستخدام StringBeanأوال تم أنشاء غرض من <jsp:useBean id="stringBean" class="coreservlets.StringBean" />

: داخل الصفحة بإحدى الطرقتن التالتنmessageبعد هذا مكن إدراج الخاصة

<jsp:getProperty name="stringBean" property="message" />

<%= stringBean.getMessage() %>

: بإحدى الطرقتن التالتنmessageومكننا التعدل قمة الخاصة

<jsp:setProperty name="stringBean"

property="message"

value="some message" />

<% stringBean.setMessage("some message"); %>

.رجى المالحظة أننا ال ننصح بخلط ف األسلوبن وإنما المقصود فقط هو مثال لتوضح أن النتائج صححة ف الشكلن

StringBeanالصف

package coreservlets;

/** A simple bean that has a single String property

* called message.

*/

public class StringBean {

private String message = "No message specified";

public String getMessage() { return(message);

}// end getMessage

public void setMessage(String message) { this.message = message;

}// end setMessage

}// end class

bean :StringBean.jspالصفحة الت سنخبر علها الـ

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML>

<HEAD>

<TITLE>Using JavaBeans with JSP</TITLE>

<LINK REL=STYLESHEET HREF="JSP-Styles.css" TYPE="text/css">

</HEAD>

<BODY>

<TABLE BORDER=5 ALIGN="CENTER">

<TR><TH CLASS="TITLE">

Using JavaBeans with JSP</TABLE>

<jsp:useBean id="stringBean" class="coreservlets.StringBean" /> <OL>

<LI>Initial value (from jsp:getProperty):

<I><jsp:getProperty name="stringBean"

property="message" /></I> <LI>Initial value (from JSP expression):

<I><%= stringBean.getMessage() %></I>

<LI><jsp:setProperty name="stringBean" property="message"

value="Best string bean: Fortex" /> Value after setting property with jsp:setProperty:

Page 5: الدرس السادس عشر

<I><jsp:getProperty name="stringBean" property="message" /></I>

<LI><% stringBean.setMessage("My favorite: Kentucky Wonder"); %> Value after setting property with scriptlet:

<I><%= stringBean.getMessage() %></I> </OL>

</BODY>

</HTML>

:والناتج سكون كالتال

بطرقة متقدمةbeanتعن خصائص الـ واستخدمنا خاللها ثالث خواص للتاغ beanأخذا ف ما سبق الطرقة البسطة ف تعن وتعدل قم خاصات الـ

jsp:setPropertyوه name و property و value وشرحنها ولكن ماذا تفعل ف حال كان لدك برمترات

وهذا ما سنشرحه بالتفصل و وسنوضح األمر من الطرقة beanقادمة من صفحة ما وترد أن تضع قمتها ف الـ

الصعبة فاألسهل وه ستكون ثالث حاالت وطبعا سكون شرحنا على مثال من أجل التوضح ف هذا المثال لدنا صف

و String وهو من النمط itemIDالتالة (beanالت سوف تكون خصائص الـ )قول وفه الح SaleEntryاسمه

numItems وهو من النمط int وdiscountCode وهو من النمط double ولدنا خاصتن للقراءة فقط أي ه

.double وكالهما من النمط totalCost و itemCostوهما getطرق

بهذا bean وباستخدام الـ SaleEntry الت سوف ننشأ فها غرض من الصف JSPوف مثالنا هناك أضا صفحة

:الشكل

<jsp:useBean id="entry" class="coreservlets.SaleEntry" />

وهذا هدفنا ف هذه الفقرة bean ونضعها ف الـ HTMLوأضا ف نفس الصفحة سوف نأخذ برمترات من صفحة

مع البرمترات وكما قلنا لدنا ثالث إمكانات ممكن فعلها وسنبدأ من jsp:setPropertyتوضح إمكانات استخدام

: كون كتال(الحقل) bean itemID ف خاصة الـitemIDاألصعب والطرقة األولى لوضع قمة البارمتر اسمه

<jsp:setProperty

name="entry"

property="itemID"

value='<%= request.getParameter("itemID") %>' />

هنا عدنا لمشكلة وه أن JSP عبارة عن عنصر التعبر ف الـ beanهنا وضعنا قمة الت سوف تعدل خاصة الـ

. جاءت لتخفف من كتابة أكواد الجافا لكن بشكل عام العبارة السابقة صححة وهذه ه الطرقة األولىbeanفكرة الـ

SaleEntryاآلن هذا كود الصف

package coreservlets;

/** Simple bean to illustrate the various forms

Page 6: الدرس السادس عشر

* of jsp:setProperty.

*/

public class SaleEntry {

private String itemID = "unknown";

private double discountCode = 1.0;

private int numItems = 0;

public String getItemID() {

return(itemID);

}

public void setItemID(String itemID) { if (itemID != null) {

this.itemID = itemID;

} else {

this.itemID = "unknown";

}

}

public double getDiscountCode() {

return(discountCode);

}

public void setDiscountCode(double discountCode) { this.discountCode = discountCode;

}

public int getNumItems() {

return(numItems);

}

public void setNumItems(int numItems) { this.numItems = numItems;

}

// In real life, replace this with database lookup.

// See Chapters 17 and 18 for info on accessing databases

// from servlets and JSP pages.

public double getItemCost() {

double cost;

if (itemID.equals("a1234")) {

cost = 12.99*getDiscountCode();

} else {

cost = -9999;

}

return(roundToPennies(cost));

}

private double roundToPennies(double cost) {

return(Math.floor(cost*100)/100.0);

}

public double getTotalCost() {

return(getItemCost() * getNumItems());

}

}// end class

الت سوف SaleEntry1.jsp وه صفحة beanاآلن مثال عن الطرقة األولى ف وضع قمة البارمتر لخاصة الـ

.تستقبل البارمترات

SaleEntry1.jspصفحة

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML>

<HEAD>

<TITLE>Using jsp:setProperty</TITLE>

<LINK REL=STYLESHEET HREF="JSP-Styles.css" TYPE="text/css">

</HEAD>

<BODY>

Page 7: الدرس السادس عشر

<CENTER>

<TABLE BORDER=5>

<TR><TH CLASS="TITLE">

Using jsp:setProperty</TABLE>

<jsp:useBean id="entry" class="coreservlets.SaleEntry" />

<jsp:setProperty name="entry" property="itemID"

value='<%= request.getParameter("itemID") %>' />

<%

int numItemsOrdered = 1;

try {

numItemsOrdered = Integer.parseInt(request.getParameter("numItems"));

} catch(NumberFormatException nfe) {}

%>

<jsp:setProperty name="entry" property="numItems"

value="<%= numItemsOrdered %>" />

<%

double discountCode = 1.0;

try {

String discountString = request.getParameter("discountCode");

discountCode = Double.parseDouble(discountString);

} catch(NumberFormatException nfe) {}

%>

<jsp:setProperty name="entry" property="discountCode"

value="<%= discountCode %>" />

<BR>

<TABLE BORDER=1>

<TR CLASS="COLORED">

<TH>Item ID<TH>Unit Price<TH>Number Ordered<TH>Total Price

<TR ALIGN="RIGHT">

<TD><jsp:getProperty name="entry" property="itemID" />

<TD>$<jsp:getProperty name="entry" property="itemCost" />

<TD><jsp:getProperty name="entry" property="numItems" />

<TD>$<jsp:getProperty name="entry" property="totalCost" />

</TABLE>

</CENTER>

</BODY>

</HTML>

SaleEntry1-Form.jspوهذه الصفحة الت سوف رسل من خاللها البرمترات

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML>

<HEAD>

<TITLE>Invoking SaleEntry1.jsp</TITLE>

<LINK REL=STYLESHEET HREF="JSP-Styles.css" TYPE="text/css">

</HEAD>

<BODY>

<CENTER>

<TABLE BORDER=5>

<TR><TH CLASS="TITLE">

Invoking SaleEntry1.jsp</TABLE>

<FORM ACTION="SaleEntry1.jsp">

Page 8: الدرس السادس عشر

Item ID: <INPUT TYPE="TEXT" NAME="itemID"><BR>

Number of Items: <INPUT TYPE="TEXT" NAME="numItems"><BR>

Discount Code: <INPUT TYPE="TEXT" NAME="discountCode"><P>

<INPUT TYPE="SUBMIT" VALUE="Show Price">

</FORM>

</CENTER>

</BODY>

</HTML>

SaleEntry1-Form.jspهذه صورة للصفحة الت سوف نرسل من خاللها البرامترات الصفحة

SaleEntry1.jspتجة ف حال أدخلنا نفس القم الت ف الصورة الصفحة نوهكذا سوف تكون ال

مع البارمترات المدخلةbeanطرقة الثانة ربط خصائص الـ ف الطرقة السابقة عدنا إلى مشكلة وه أننا عدنا إلى استخدام أكواد الجافا وكنا نقوم بتحول النمط دوا وهكذا لم

توفر تكود بالجافا اآلن سوف نقارن بن الطرقة السابقة والطرقة beanنوفر من كتابة األكواد الجافا ومن أهداف الـ

الثانة الت سوف توفر الكثر من العناء ولن نستخدم فها أكواد جافا لنقارن لنقتبس من المثال السابق عندما كنا نأخذ

:فكتبناه بهذا الشكل numItems الت اسمهاbean ونضع قمته ف خاصة الـ numItems قمة البرمتر

<%

int numItemsOrdered = 1;

Page 9: الدرس السادس عشر

try {

numItemsOrdered = Integer.parseInt(request.getParameter("numItems"));

} catch(NumberFormatException nfe) {}

%>

<jsp:setProperty

name="entry"

property="numItems"

value="<%= numItemsOrdered %>" />

وعلنا تحول القمة String ولكن القمة الت تأت من البرمتر ه intف الكود السابق نجد أننا لدنا قمة الخاصة

ولهذا لزمنا كتابة أكود من أجل التحول وهكذا لم نوفر من كتابة األكود وهو أحد اهداف int إلى Stringمن نمط

وه مزة خاصة توفر علك هذا األمر بحث تقوم على تحول اآلل من bean لكن لدنا الحل ف الـ beanالـ

String إلى النمط المراد تحوله وأضا هذه المزة توفر علك كتابة عنصر التعبر ف الخاصة value ف التاغ

jsp:setProperty هذه المزة ه عبارة عن خاصة ف التاغ jsp:setProperty اسم هذا الخاصة param

فلنأخذ المثال السابق ولنرى كف beanوتكون قمة هذه الخاصة ه اسم البارمتر الذي ترد إدخال قمته ف الـ

.سكتب ف الطرقة الثانة

<jsp:setProperty

name="entry"

property="numItems"

param="numItems" />

أضا هناك مزة ممكن أن نستفد منها وه عندما كون اسم beanهكذا لم نكتب أي كود جافا وقد استفدنا من مزة الـ

كما ف المثال فإنه مكنك كتابة اسم الخاصة فقط دون ذكر البارمتر فحسب المثال beanالبارمتر نفس اسم خاصة الـ

:السابق فإنه مكنك كتابة كتال

<jsp:setProperty

name="entry"

property="numItems" /> <%-- param="numItems" is assumed. --%>

اآلن سنكتب كود للمثال الطرقة األولى لكن بالطرقة الثانة الت تعلمناها

SaleEntry2.jspصفحة

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML>

<HEAD>

<TITLE>Using jsp:setProperty</TITLE>

<LINK REL=STYLESHEET HREF="JSP-Styles.css" TYPE="text/css">

</HEAD>

<BODY>

<CENTER>

<TABLE BORDER=5>

<TR><TH CLASS="TITLE">

Using jsp:setProperty</TABLE>

<jsp:useBean id="entry" class="coreservlets.SaleEntry" />

<jsp:setProperty name="entry" property="itemID" param="itemID" />

<jsp:setProperty name="entry" property="numItems" param="numItems" />

<jsp:setProperty name="entry" property="discountCode" param="discountCode" />

<BR>

<TABLE BORDER=1>

<TR CLASS="COLORED">

<TH>Item ID<TH>Unit Price<TH>Number Ordered<TH>Total Price

Page 10: الدرس السادس عشر

<TR ALIGN="RIGHT">

<TD><jsp:getProperty name="entry" property="itemID" />

<TD>$<jsp:getProperty name="entry" property="itemCost" />

<TD><jsp:getProperty name="entry" property="numItems" />

<TD>$<jsp:getProperty name="entry" property="totalCost" />

</TABLE>

</CENTER>

</BODY>

</HTML>

هذا الكود عط نفس نتائج مثال الطرقة الطرقة األولى

مع كل البارمترات بشكل آلbeanالطرقة الثالثة ربط كل خصائص الـشاهدنا بالطرقة الثانة كف استطعنا تحول اآلل لألنماط وهذا مما وفر علنا كتابة أكواد جافا وكان لدنا مزة أنه

لكن ما سنتعلمه اآلن شء وفر bean ف حال كان اسم البارمتر نفس اسم خاصة الـparamبإمكانك عدم كتابة

مع كل البارمترات وهذا تحقق ف حال كان كل beanعلك الكثر من العناء وه كف تربط جمع خصائص الـ

propertyوتضعه قمة للخاصة * وتستطع فعل هذا باستخدام رمز beanأسماء البرمترات نفس أسماء خصائص الـ

باإلضافة أنه قوم bean وبهذا الشكل قوم بشكل آلة بربط البارمترات مع الخصائص الـjsp:getPropertyف التاغ

بعملة التحول األنماط وحسب المثال السابق نجد تتطابق اسم الخاصة مع اسم البارمتر لذالك مكن كتابة الكود السابقة

بهذا الشكل

SaleEntry3.jspصفحة

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML>

<HEAD>

<TITLE>Using jsp:setProperty</TITLE>

<LINK REL=STYLESHEET HREF="JSP-Styles.css" TYPE="text/css">

</HEAD>

<BODY>

<CENTER>

<TABLE BORDER=5>

<TR><TH CLASS="TITLE">

Using jsp:setProperty</TABLE>

<jsp:useBean id="entry" class="coreservlets.SaleEntry" />

<jsp:setProperty name="entry" property="*" />

<BR>

<TABLE BORDER=1>

<TR CLASS="COLORED">

<TH>Item ID<TH>Unit Price<TH>Number Ordered<TH>Total Price

<TR ALIGN="RIGHT">

<TD><jsp:getProperty name="entry" property="itemID" />

<TD>$<jsp:getProperty name="entry" property="itemCost" />

<TD><jsp:getProperty name="entry" property="numItems" />

<TD>$<jsp:getProperty name="entry" property="totalCost" />

</TABLE>

</CENTER>

</BODY>

</HTML>

إذا علك ف أي مشروع أو أي تطبق تقوم به أن بكتابة أسماء الطرق الصفوف نفس أسماء النماذج البانات من أجل

.تسهل العمل وتستطع فعل ما قنا به منذ قلل

Page 11: الدرس السادس عشر

:على الرغم أن الطرقة الثالثة سهلة وتوفر علك الكثر من العناء ولكن هناك ثالث تحذرات صغر من هذه الطرقة

فهذا النظام ال دعم .لن تم أي أجراء ف حال كانت البارمترات المدخلة مفقودة null لخاصة الـ كقمةbean

من فها قمة افتراضة (setوهنا طرقة الصف ) أن تجعل خاصةbeanلذالك علك عند تصمم صف لكون

.أجل أن تعرف إذا تم تعدل الخاصة أما ال

(طرقة التقلدة )التحول التلقائ لألنماط ال وق من القم الغر قانونة على غرار التحول الدوي

, ف الحققة على الرغم من سهولة التحول التلقائ إلى أن بعض المطورن تجنب التحول التلقائ.لألنماط

و استخدام Stringأن كون من النوع (setطرق ) الت تعن القم beanوعرفوا جمع خصائص الـ

صفحات الخطأ عندما تستخدم ونصح استخدام. من أجل التعامل مع البانات التالفة try/catchالعبارة

.التحول التلقائ لألنماط

عملة ربط خصائص الـbeanواسم الخاصة اسم كون أن جب لذالك. مع البارمترات حساسة لألحرف

.تماما متطابقان البارمتر

Beansمشاركة الـ

جاءت فكرة مشركة عندما جاءت الحاجة الستخدام كائن ف مكان بعد عن مكان أنشاؤها بشكل افتراض تم التعامل

jspService_ كما لو أنها عبارة عن متغرات محلة ف الطرقة jsp:Beanمع كل الكائنات الذي تم إنشاؤه ف

(.JSP ف السرفلت عندما تم إنشاؤها من صفحة serviceوه الطرقة تم استدعائها بواسطة الطرقة )

ه محل إال أنه لس هذا السلوك الوحد الذي مكن اتخاذه وانه بإمانك Beanعلى الرغم من أن الحالة االفتراضة لـ

.jsp:Bean ف scope ف واحدة من أربع مواقع مختلفة وذلك عن طرقة وضع قمة الخاصة Beanتخزن الـ

. والذي سنشرحه ف الدرس القادم إن شاء هللاMVCهذا الدرس جدا مهم من اجل تطبق مفهوم

و session و request وه االفتراضة و page: هscopeالقم األربعة الت ممكن أن تتخذها الخاصة

application.

<jsp:useBean ... scope="page" />

pageإن اختار القمة , scopeوهذه ه القمة االفتراضة ومكنك فعل نفس هذا األسلوب بحذف الخاصة

تفد من ونس PageContext ف bean سكون متغر محل وأضا جب وضع الـ beanالـ فإن عن أن

لمتغرات معروفة مسبقا ف getAttributeهذا أن السرفلت سوف ستطع الوصول إله باستدعاء

PageContext.

<jsp:useBean ... scope="request" />

HttpServletRequest خزن أضا ف beanهذا عن أنه باإلضافة كونه متغر محل فإن الت

بن صفحتن أو بن صفحة beansوعلى الرغم انه قد بدو لك من خالل النتائج انه لس هناك مشاركة للـ

و include أو jsp:forward و jsp:include تم باستخدام requestوسرفلت فإن المشاركة من نوع

forward ف الطرقة RequestDispatcher وهذا األسلوب مهم حث سوف نستخدمه ف بناءMVC

.سنشرحه ف الدرس القادم

<jsp:useBean ... scope="session" />

ف bean متغر محل إال أنه أضا تم تخزن غرض الـbeanهذه القمة تعن إنه باإلضافة كون الـ

HttpSession ومكننا استرجاعه بواسطة الطرقةgetAttribute.

. تم بنفس طرقة الجلسات ف الدرس التاسعJSP ف صفحات beanفإن مجال رؤة الـوبالتال

<jsp:useBean ... scope="application" />

فbean متغر محل إال أنه أضا تم تخزن الـbeanهذه القمة تعن إنه باإلضافة كون الـ

ServletContext وتكون متاحة ف التطبق

. على نفس تطبق الوبJSPتتم مشاركته ف جمع السلفلتات والصفحات ServletContextالـ

.getAttribute مكنك استرجاعها بالطرقة ServletContextالقم ف الـ

Page 12: الدرس السادس عشر

المشروط Beanإنشاء الـ . ف حالتنBean أكثر مالءمة مكنك استخدام التقم المشروط لعناصر الـBeanلجعل مشاركة الـ

.و مجال الرؤة id الذي له نفس beanجدد فقط إذا لم تم العثور على الـ bean الـjsp:useBeanأوال نتج العنصر

و مجال الرؤةفهو الموجود مسبقا هو ببساطة مرتبط مع المتغر المشار إله id له نفس beanوإذا تم العثور على الـ

.idبـ

ثانا بدال من استخدام<jsp:useBean ... />

سوف نستخدم

<jsp:useBean ...>statements</jsp:useBean>

تتم فقط إذا تم إنشاء jsp:useBean الموجود بن بداة ونهاة التاغ statementsف استخدام النموذج الثان هو أن

beanجدد وال تم هذا على الـ beanألن . القائمةjsp:useBeanسوف ستدع البان االفتراض لـ bean ونحن

.beanنحتاج ف كثر من األحان إلى تعل خصائص بعد إنشاء

bean ولس عند الوصول إلى الـbeanلمحاكاة البان جب علك أن تجعل هذه التعدالت فقط عند أول أنشاء لـ

بن بداة ونهاة jsp:setPropertyال مشكلة فإنه مكنك فعل هذا وذالك بوضع .القائمة الت فترض علك تعدله

ستم فه bean ومكنك فعل هذا ف عدة صفحات ولكن الصفحة األولى الت تم فها الوصل إلى jsp:useBeanتاغ

.jsp:useBeanتنفذ ما بن بداة ونهاة التاغ

الخاصة firstPage و accessCount وله خاصتان هما beanعلى سبل المثال لنا ف المثال القادم فه

accessCount سجل عدد الوصول إلى أي صفحة من ضمن مجموعة صفحات ذات صلة ببعضها وتم تنفذها ف

فأنه قوم بتخزن اسم أول صفحة تم الحصول علها وبتال فإنه تم تنفذها firstPageكل الصفحات أما الخاصة

الت تقوم بتعدل الخاصة jsp:setPropertyف الصفحة الت تم الوصول إلها أوال ولتنفذ ذالك فإننا نضع

firstPage بن بداة ونهاة التاغ jsp:useBeanلك تم تنفذها مرة واحدة عند أنشاء الـ bean.

.فإنها تكون خارج اإلنشاء المشروط accessCount الت تعدل الخاصة jsp:setPropertyبالنسبة لـ

.وف مثالنا ثالث صفحات ستخدم هذا النهج

AccessCountBean.javaالصف

package coreservlets;

/** Simple bean to illustrate sharing beans through

* use of the scope attribute of jsp:useBean.

*/

public class AccessCountBean {

private String firstPage;

private int accessCount = 1;

public String getFirstPage() {

return(firstPage);

}

public void setFirstPage(String firstPage) {

this.firstPage = firstPage;

}

public int getAccessCount() {

return(accessCount);

}

public void setAccessCountIncrement(int increment) {

accessCount = accessCount + increment;

}

}

SharedCounts1.jspالصفحة

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

Page 13: الدرس السادس عشر

<HTML>

<HEAD>

<TITLE>Shared Access Counts: Page 1</TITLE>

<LINK REL=STYLESHEET HREF="JSP-Styles.css" TYPE="text/css">

</HEAD>

<BODY>

<TABLE BORDER=5 ALIGN="CENTER">

<TR><TH CLASS="TITLE">

Shared Access Counts: Page 1</TABLE>

<P>

<jsp:useBean id="counter" class="coreservlets.AccessCountBean" scope="application">

<jsp:setProperty name="counter" property="firstPage" value="SharedCounts1.jsp" />

</jsp:useBean> Of SharedCounts1.jsp (this page),

<A HREF="SharedCounts2.jsp">SharedCounts2.jsp</A>, and

<A HREF="SharedCounts3.jsp">SharedCounts3.jsp</A>,

<jsp:getProperty name="counter" property="firstPage" />

was the first page accessed.

<P>

Collectively, the three pages have been accessed

<jsp:getProperty name="counter" property="accessCount" />

times.

<jsp:setProperty name="counter" property="accessCountIncrement" value="1" /> </BODY></HTML>

هذه الصفحة الثالثة ونجد من هنا أنه أول صفحة تم وصل لها ه الصفحة الثانة

ف أربع طرق مختلفة مع مثالBeanمشاركة الـ :Beanف هذه الفقرة سوف نشرح شرح مفصل لتوضح الجوانب المختلفة الستخدام الـ

أوال سوف ننشأ الصف الذي سكونbean ف الصفحات JSP.

ثانا استخدام عدم مشاركة الـBean ( مجال رؤة الـbean ضمن الصفحة أي page scope=)

ثالثا مشاركة الـBean ف الطلب (request scope=)

رابعا مشاركة الـBean ف الجلسة (session scope=)

خامسا مشاركة الـBean ف التطبق (application scope=)

Page 14: الدرس السادس عشر

أسماء استخدام من تأكد مختلفة مجالت رؤة ف Beansالـ تخزن هناك تحذر واحد وهو األمثلة إلى االنتقال قبل

. الخطأbean وعد لنا الـbeansبن الـ ألنه إذا حدث خالف ذالك فأنه من الممكن أن خلط السرفر bean لكل مختلفة

BakedBean.javaالصف

package coreservlets;

/** Small bean to illustrate various bean-sharing mechanisms. */

public class BakedBean {

private String level = "half-baked";

private String goesWith = "hot dogs";

public String getLevel() {

return(level);

}

public void setLevel(String newLevel) {

level = newLevel;

}

public String getGoesWith() {

return(goesWith);

}

public void setGoesWith(String dish) {

goesWith = dish;

}

}

(Beanعدم مشاركة الـ)استخدام مجال رؤة الصفحة هو األول مثال. JSP صفحة ف الستخدامه استعداد على ونحن صحح, بشكل عمل beanالـ أن راضون حسنا نحن

:ل وسكون سر العملة كما. واحدة صفحة طلب غضون ف تماماbeanالـ إلى والوصول تعدل أنشاء و

أنشاء الـbean: سنستخدمjsp:useBean مع scope="page" ( ومكنك عدم استخدامscope ألن

.(pageالقمة االفتراضة ه

تعدل قمة الـbean :سنستخدم jsp:setProperty مع property="*".

الوصول إلى الـbean :سنستخدم jsp:getProperty.

BakedBeanDisplay-page.jspصفحة

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML>

<HEAD>

<TITLE>Baked Bean Values: page-based Sharing</TITLE>

<LINK REL=STYLESHEET HREF="JSP-Styles.css" TYPE="text/css">

</HEAD>

<BODY>

<H1>Baked Bean Values: page-based Sharing</H1>

<jsp:useBean id="pageBean" class="coreservlets.BakedBean" /> <jsp:setProperty name="pageBean" property="*" />

<H2>Bean level:

<jsp:getProperty name="pageBean" property="level" /></H2>

<H2>Dish bean goes with:

<jsp:getProperty name="pageBean" property="goesWith" /></H2>

</BODY></HTML>

Page 15: الدرس السادس عشر

أخذت قمتها من البارمترbean وهنا خصائص الـBakedBeanDisplay-page.jspهذا الطلب األول لـ الصفحة

هذا طلب الحق لنفس الصفحة وهنا قمة الخصائص ه االفتراضة ولم تظهر القمة ف الطلب األول ألن مجال الرؤة ف هذا

.pageالمثال هو

ف الطلبBeanاستخدام مشاركة الـ

. ض صفحتي ختيفتي تشاسما فس اىغشضbeanاىثاه اىثاي هو أشاء و تعذيو و اىوصوه ىـ

زمش ها أه اىصفحة اىثاية تشاسك اىغشض اىوجود في اىصفحة األوىى إرا ت استذعاء اىصفحة اىثاية بواسطة

jsp:include أو jsp:forward وينل أيضا اىقيا بـ include وforward بواسطة اىطشيقةRequestDispatcher .

:ل سوف نسر ف العملة كماوىيحصوه عيى اىسيوك اىطيوب

Page 16: الدرس السادس عشر

أنشاء الـbean: سنستخدمjsp:useBean معscope="request".

تعدل قمة الـbean :سنستخدم jsp:setProperty مع property="*".

الوصول إلى الـbeanسنستخدم: ف الصفحة األولى jsp:getProperty. وبعدها سنستخدم

jsp:includeالستدعاء الصفحة الثانة .

الوصول إلى الـbeanسنستخدم : ف الصفحة الثانةjsp:useBean وسكون له نفس id الموجود ف

.jsp:getProperty وبعد ذالك سنستخدم "scope="requestالصفحة األولى و سكون

BakedBeanDisplay-request.jspصفحة األولى

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML>

<HEAD>

<TITLE>Baked Bean Values: request-based Sharing</TITLE>

<LINK REL=STYLESHEET HREF="JSP-Styles.css" TYPE="text/css">

</HEAD>

<BODY>

<H1>Baked Bean Values: request-based Sharing</H1>

<jsp:useBean id="requestBean" class="coreservlets.BakedBean" scope="request" /> <jsp:setProperty name="requestBean" property="*" />

<H2>Bean level:

<jsp:getProperty name="requestBean" property="level" /></H2>

<H2>Dish bean goes with:

<jsp:getProperty name="requestBean" property="goesWith" /></H2>

<jsp:include page="BakedBeanDisplay-snippet.jsp" /> </BODY></HTML>

BakedBeanDisplay-snippet.jspالصفحة الثانة

<H1>Repeated Baked Bean Values: request-based Sharing</H1>

<jsp:useBean id="requestBean" class="coreservlets.BakedBean" scope="request" /> <H2>Bean level:

<jsp:getProperty name="requestBean" property="level" /></H2>

<H2>Dish bean goes with:

<jsp:getProperty name="requestBean" property="goesWith" /></H2>

Page 17: الدرس السادس عشر

أخذت قمتها من البارمتر ونجد أن الصفحة bean وهنا خصائص الـBakedBeanDisplay- request.jspهذا الطلب األول لـ الصفحة

.المضمنة أخذت نفس القم

فبهذا الشكل تكون هذا طلب الحق لنفس الصفحة وهنا قمة الخصائص ه االفتراضة ونجد أن الصفحة المضمنة أخذت نفس القم

. ف الطلبbeanتمت مشاركة الـ

ف الجلسةBeanاستخدام مشاركة الـ كان إذا الثان,. الصفحة داخل beanالـ إلى والوصول وتعدل إلنشاء نرد نحن أوال,. جزأن تضمن الثالث المثال أما

هذا جري تماما مثل الجلسات ف الدرس .قبل كما تعدل منbeanالـ رى أن الصفحة فجب إلى قد عاد نفسه العمل

:ل سوف نسر ف العملة كماوىيحصوه عيى اىسيوك اىطيوب التاسع

أنشاء الـbean: سنستخدمjsp:useBean معscope="session".

تعدل قمة الـbean :سنستخدم jsp:setProperty مع property="*".

الوصول إلى الـbean سنستخدم: عند استقبال البارمترات jsp:getProperty. بعدما تم استدعاء

jsp:setProperty.

الوصول إلى الـbeanسنستخدم: الحقا لنفس الصفحة jsp:getProperty ولكم ف هذه المرة لن تم

خالل )إذا كان الطلب الصفحة من نفس العمل jsp:setProperty ولن تم استدعاءتضمن بارمترات

.(فترة الجلسة

BakedBeanDisplay-session.jspالصفحة

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML>

<HEAD>

<TITLE>Baked Bean Values: session-based Sharing</TITLE>

<LINK REL=STYLESHEET HREF="JSP-Styles.css" TYPE="text/css">

</HEAD>

<BODY>

<H1>Baked Bean Values: session-based Sharing</H1>

<jsp:useBean id="sessionBean" class="coreservlets.BakedBean" scope="session" /> <jsp:setProperty name="sessionBean" property="*" />

<H2>Bean level:

<jsp:getProperty name="sessionBean" property="level" /></H2>

<H2>Dish bean goes with:

Page 18: الدرس السادس عشر

<jsp:getProperty name="sessionBean" property="goesWith" /></H2>

</BODY></HTML>

. أخذت قمتها من البارمترbean وهنا خصائص الـBakedBeanDisplay- session.jspهذا الطلب األول لـ الصفحة

تبقى نفسها بن الطلبات bean الت أخذها نفس القمة السابقة ونجد هنا أن خصائص الـهذا طلب الحق لنفس الصفحة وهنا قمة

. ف الجلساتbeanإذا كان نفس الزبون ف نفس الجلسة هذه هو مشاركة الـ

Page 19: الدرس السادس عشر

لم تبقى نفسها بن bean الت أخذها ه قمة افتراضة ونجد هنا أن خصائص الـهذا طلب الحق آخر لنفس الصفحة وهنا قمة

.الطلبات ألن الزبون هنا قد أختلف أو تكون جلسة جددة

ف التطبقBeanمشاركة الـاستخدام إذا الثانا . الصفحة داخل beanالـ إلى والوصول وتعدل إلنشاء نرد نحن أوال,. جزأن تضمن الرابع واألخر المثال

وىيحصوه عيى كما تم تعدلها من قبلbeanأتى أي عمل إلى الصفحة ف وقت الحق فهنا العمل جب أن رى الـ

:ل سوف نسر ف العملة كمااىسيوك اىطيوب

أنشاء الـbean: سنستخدمjsp:useBean معscope="session" .

تعدل قمة الـbean :سنستخدم jsp:setProperty مع property="*".

الوصول إلى الـbean سنستخدم: عند استقبال البارمترات jsp:getProperty. بعدما تم استدعاء

jsp:setProperty.

الوصول إلى الـbean سنستخدم: الحقا jsp:getProperty ولكم ف هذه المرة لن تم تضمن بارمترات

وهنا ال هم من طلب الصفحة العمل نفس أو عمل أخر ألنه .jsp:setProperty والتال لسنا بحاجة

.سرى القمة كما تم تعدلها

BakedBeanDisplay-application.jspالصفحة

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML>

<HEAD>

<TITLE>Baked Bean Values: application-based Sharing</TITLE>

<LINK REL=STYLESHEET HREF="JSP-Styles.css" TYPE="text/css">

</HEAD>

<BODY>

<H1>Baked Bean Values: application-based Sharing</H1>

<jsp:useBean id="sessionBean" class="coreservlets.BakedBean" scope=" application" /> <jsp:setProperty name="applicationBean" property="*" />

<H2>Bean level:

<jsp:getProperty name="applicationBean" property="level" /></H2>

<H2>Dish bean goes with:

<jsp:getProperty name="applicationBean" property="goesWith" /></H2>

</BODY></HTML>

Page 20: الدرس السادس عشر

. أخذت قمتها من البارمترbean وهنا خصائص الـBakedBeanDisplay- application.jspهذا الطلب األول لـ الصفحة

. تبقى نفسها بن الطلباتbean الت أخذها نفس القمة السابقة ونجد هنا أن خصائص الـهذا طلب الحق لنفس الصفحة وهنا قمة

تبقى bean الت أخذها نفس القم السابقة ونجد هنا أن خصائص الـهذا طلب الحق أخر من عمل أخر لنفس الصفحة وهنا قمة

. ف التطبقbeanنفسها بن الطلبات حتى إذا كان العمل مختلف أو جلسة مختلفة هذه هو مشاركة الـ

نهاة الدرس