به نام خدا

)Java Server Pagesتكنولوژي توسعه وب (

Javaserver pages (JSPs) چيست؟

Javaserver pages (JSPs) يك تكنولوژي است كه توسط شركت سان ميكروسيتمز تعريف شده تا محتويات پويايي را در شبكه ايجاد نمايد. آنها اسناد HTML هستند كه در داخل آنها از كدهاي جاوا استفاده شده است، تا محتويات پويايي را به وجود آورند. JSP يك برنامه كاربردي است كه بر روي سرويس دهنده قرار دارد؛ آنها درخواستها را گرفته و به آنها پاسخ ميدهند. به طور كلي در خواستها از طرف سرويس گيرنده هاي وب صورت مي گيرند و پاسخ نيز يك سند HTML است كه براي سرويس گيرنده وب ارسال ميگردد. از آنجايي كه jsp يك برنامه كاربردي Server-Side ميباشد، آنها به منابع سرويس دهنده همانند Servlet ها، JavaBean ها،EJB ها و بانك هاي اطلاعاتي دسترسي دارند.

سرويس گيرنده

يك سرويس گيرنده شبكه، سرويس گيرنده اي است كه با يك سرويس دهنده با استفاده از پروتكل HTTP در ارتباط مي باشد. سرويس گيرنده يك مرورگر شبكه را اجرا ميكند، مانند Internet Explorer يا Navigator Netscape و اسناد را با مشخص كردن URL (آدرس يك سايت وب) در داخل مرورگر درخواست مي نمايد.

استفاده از تكنولوژي JSP داراي مزاياي ميباشد. از آنجايي كه صفحات JSP از زبان برنامه نويسي جاوا استفاده مي نمايند، آنها سياست «يكبار بنويس و در همه جا اجرا كن » را دنبال ميكنند، اين به آن معني است كه صفحه JSP ميتواند بدون هيچ تغييري در هر سرويس دهنده كاربردي كه صفحات JSP را پشتيباني مينمايد، اجرا شود. مزيت ديگر JSP اين است كه مشخصات آن به گونه اي نوشته شده است كه عمل يكپارچه سازي با محيط برنامه نويسي مجتمع را به وجود مي آورد (DES) .

نكته:

صفحات JSP را ميتوان در هر ويرايشگر متني نوشت؛ فقط بايد مطمئن گرديد كه سند مورد نظر را با پسوند JSP ذخيره مي نماييد. اين به آن معناست كه شما ميتوانيد JSP ها را در برنامه Notepad سيستم عامل ويندوز، يا emacs سيستم عامل Unix بنويسيد. يك IDE كه از صفحات نوشته شده JSP حمايت مي نمايد، برنامه Dreamweaver ميباشد كه بخشي از Webgain Studio ميباشد.

مزيت ديگر JSP ها استفاده از تگ هاي كتابخانه اي ميباشد. JSP از تگ هايي، كه به صورت مشابه در HTML و XML وجود دارند، براي درج متنهاي پويا استفاده ميكند. اين امكان وجود دارد كه بتوانيم با وارد كردن يك تگ كتابخانه اي، امكانات اضافه اي را به صفحات JSP بيفزاييم. تگ كتابخانه اي، تگ اضافه اي را تعريف ميكنند كه مي توانند براي جايگزين كردن بخشهايي از كدها مورد استفاده قرار گيرند.

يكي ديگر از مزيتهاي مهم JSP جدا سازي نقشهاي ميباشد. مشخصه هاي JSP اين اجازه را ميدهد كه بار كاري به دو دسته تفكيك گردد: متنهاي گرافيكي صفحه و متنهاي پويايي صفحه. يك تيم خلاق كه هيچ دانشي درباره زبان برنامه نويسي جاوا ندارد، ميتواند متنهاي گرافيكي صفحه را ايجاد كند. يك برنامه نويس زبان جاوا سپس كدهاي جاوا را براي رسيدن به متن پوياي صفحه در داخل سند HTML درج مينمايد.

نكته:

زمان نوشتن يك صفحه JSP ، نوشتن كدهاي HTML و سپس درج كدهاي جاوا براي ايجاد متنهاي پويا آسانتر مي باشد. بنابر اين، اگر قصد نوشتن HTML را نداريد، به گرافيستهاي خود اجازه دهيد كه يك صفحه زيبا را طراحي نمايند و سپس كدهاي جاوا را به منظور ساختن صفحات JSP پويا وارد نماييد.

ليست زير يك صفحه JSP ساده است كه چگونگي درج كردن كدهاي جاوا در داخل صفحات JSP را نشان ميدهد. تمام كاري كه اين JSP انجام ميدهد، درج زمان و تاريخ فعلي سيستم در داخل يك صفحه HTML ميباشد.

1:     <HTML>

2:     <HEAD><TITLE>A Simple JSP< /TITLE>< /HEAD>

3:     <BODY>

4:     <FONT COLOR=”blue” FACE=”Trebuchet”>

5:     <CENTER>

6:     The current Date and Time is: <%= new java . util. Date()%>

 

تكامل وب

تكنولوژي وب به طور فوق العاده اي در چند سال گذشته تكامل يافته است. مدت زيادي از وقتي كه وب فقط شامل اسناد ايستا بود. نمي گذرد. اكنون، برنامه ها در داخل كدهاي HTML قرار داده مي شود و سپس در زمان اجرا متنهاي پويا مي توانند به اسناد HTML اضافه شوند. بياييد به تكامل وب نگاهي بيندازيم.

وب ايستا

وب ايستا ساده ترين نوع ساختار وب ميباشد. سرويس گيرنده وب با استفاده از پروتكل TCP/IP به سرويس دهنده وب متصل ميشود و با استفاده از پروتكل Http درخواستهايش را ايجاد مي كند. سرويس دهنده يك سند از پيش ساخته شده HTML را به سرويس گيرنده وب ارسال مي نمايد. اين سند HTML شامل متن ، فراپيوندها و      تگ هاي قالب بندي مي باشد. اين سند تمامي محتويات پويا را در بر نمي گيرد و كاربرد در ايجاد ارتباط با آن نيز راهي ندارد. به طور اساسي، اين ساختار اسناد HTML قديمي شده اند و هيچ ارتباطي با سرويس گيرنده ايجاد نمي كنند.

برنامه هاي اتصالي وب (Plug-In)

همزمان با تكنولوژي وب، مردم نيازمند داشتن تواناييهاي بيشتري در صفحات وب خود بودند. برنامه هاي كوچكي را كه به اسناد HTML اضافه نمايند.

افزودن برنامه هاي كوچك به معناي تگ هاي HTML جديدي است كه مورد نياز بودند و مرورگر با استفاده از آنها مي توانند چگونگي كنترل تگ هاي جديد را دريابند. دو نوع از برنامه هايي كه مي توانند در مرورگر اجرا شوند، اپلت هاي جاوا و كنترلرهاي ActiveX شركت مايكروسافت مي باشند.

اپلت هاي جاوا برنامه هاي كوچك نوشته شده به زبان جاوا مي باشند كه در داخل اسناد HTML درج مي شوند تا قابليتهاي بيشتري را به اسناد اضافه كنند. از آنجايي كه اين اپلت ها به زبان برنامه نويسي جاوا نوشته شده اند، كاملاً قابل حمل (Portable) ميباشند. برنامه هاي جاوا به صورت كدهاي بايتي كامپايل شده، در يك ماشين مجازي جاوا اجرا مي شوند. اپلت ها مي توانند در داخل مرورگر هايي كه داراي يك ماشين مجازي تعبيه شده در داخل خود ميباشند، اجرا شوند.

ماشين مجازي جاوا (Java Virtual Machine)

ماشين مجازي جاوا كدهاي بايتي كامپايل شده را گرفته و آن را براي اجرا به زبان ماشين ترجمه مي كند. امروزه تقريباً براي هر نوع كامپيوتر موجود، ماشينهاي مجازي جاوا وجود دارد. Internet Explorer و Netscape Navigator در داخل خود ماشينهاي مجازي جاوا را دارند.

اپلت ها در يك محيطي كه Sandbox ناميده مي شود، اجرا مي گردند. زماني كه به Sandbox فكر مي كنيد، به ياد محل قابل اطمينان براي كودكان مي افتيد كه چند منظور دارد: اين وسيله باعث مي شود كه كودكان به آن اعتماد كرده و شن را در داخل آن نگه دارند. جعبه شني اپلت ها نيز مشابه اين كار را انجام مي دهد، بدين صورت كه حس اطمينان كاربران را با علم بر اينكه به ماشينهاي آنها صدمه اي وارد نمي كند، جلب كرده و محيط كاري را براي اپلت ها ايجاد مي كند. اپلت هاي جاوا كد امنيتي بسيار دقيقي دارند. آنها نمي توانند به فايل هاي محلي شما يا به گرداننده ديسك سخت شما دسترسي يابند و آنهامي توانند يك اتصال سوكتي را به سرويس دهنده اي كه از آن مي آيند، برگردانند. اين به آن معناست كه اپلت ها نمي توانند باطل شده و ايجاد ارتباط شبكه اي در سراسر دنيا را بكنند.

ليست زير مثالي از اپلت جاوا است كه در يك سند HTML فراخواني مي شود و به كاربران اجازه مي دهد تا يك عدد دودويي را وارد كرده و سپس خودش عدد باينري (دودويي) و اعداد معادل هگز آن را محاسبه مي كند.

1:     <HTML>

2:     <HEAD><TITLE>Java Applet Example< /TITLE></HEAD>

3:     <BODY>

4:     <CENTER>

5:     <H1>A Number Converter Applet< /H1>

6:      This applet takes a decimal number

7:     <BR>

8:     and converts it to its hex and  binary numbers

9:     < /BR><BR>

10:   <APPLET CODE=”com.Sams.hourone.Numberconverter. class

11:                   WIDTH=”300” HEIGHT=”200”>

12:   < /APPLET>

13:   < /CENTER>

14:   < /BODY>

15:   < /HTML>

كنترلگرهاي Activex برنامه هاي كوچكي هستند كه مي توانند در يك سند HTML درج شده و تواناييهاي بيشتري را به آن بيافزايند، اين برنامه هاي كوچك عموماً با استفاده از زبان برنامه نويسي Visual Basic نوشته شده اند. آنها برنامه هاي اجرايي مي باشند كه در گرداننده ديسك سخت شما بارگذاري شده اند و در فايل رجيستري ويندوز شما ثبت مي شوند.

از آنجايي كه آنها بر روي هارد شما قرار مي گيرند، دسترسي كاملي به سيستم شما دارند. بنابر اين، مي توانند به فايل هاي شما بر روي گرداننده سخت شما وارد شده و هر اندازه كه مي خواهند ارتباطات شبكه اي ايجاد كنند.

مهمترين مزيت كنترلگرهاي Activex اين است كه آنها سريعتر از اپلت هاي جاوا اجرا مي شوند. زيرا كه آنها به زبان ماشين كامپايل شده اند و نمي توانند بر روي ماشين مجازي اجرا شوند. ليست زير مثالي از يك كنترل Activex مي باشد كه در داخل يك سند HTML تعبيه شده است.

1:     <HTML>

2:    <HEAD><TITLE>Activex Control Example < /TITLE>< /HEAD>

3:     <BODY>

4:     <CENTER>

5:   <OBJECTclassid=”clsid:8E27C92B–1264–101C–8A2F–040224009C02

6:      id=”Calender 1”

7:     width=”288”   height=”192”>

8:     <param name = “_version” value=”524288”>

9:     <param name = “_Extentx  value=”7620”>

10:   <param name = “_ ExtentY  value=” 5080”>

11:   <param name = “_StockProps” Value= “1”>

12:   <param name = “BackColor” Value= “2147483633”>

13:   <param name = “Year” Value= “2000”>

14:   <param name = “Month” Value= “7”>

15:   <param name = “Day” Value= “13”>

16:   <param name = “DayLength” Value= “1”>

17:   <param name = “MonthLength” Value= “2”>

18:   <param name = “DayFontColor” Value= “0”

19:   <param name = “FirstDav” Value= “1”

20:   <param name = “Grid CellEffect” Value= “1”>

21:   <param name = “Grid FontColor” Value= “10485760”>

22:   <param name = “Grid LinesColor” Value= “2147483632”>

23:   <param name = “Show DateSelectors” Value= “-1”>

24:   <param name = “Show Days” Value= “-1”>

25:   <param name = “Show HorizontalGrid” Value= “-1”

26:   <param name = “Show Title” Value= “-1”>

27:   <param name = “Show VerticalGrid” Value= “-1”>

28:   <param name = “TitleFontColor” Value= “10485760”>

29:   <param name = “ValueIsll” Value= “0”>

30:   < / OBJECT>

31:   < /CENTER>

32:   < / BODY>

33:   < /HTML>

 

وب پويا

اگرچه برنامه هاي افزوني شبكه عملكرد شبكه را با افزودن اپلت هاي جاوا يا كنترلهاي Activex افزايش داده اند، با اين وجود كاربران هنوز خواستار اسناد از پيش تعريف شدها HTML بودند. اپلت ها راهي را براي دسترسي به بانكهاي اطلاعاتي ايجاد كردند دادها را به صورت پويا گرفتند، اما آنها كند و فاقد كارايي بودند. شبكه پويا با معرفي رابط دوازه عمومي(CGI) Common gateway interface آن مشكل را حل كرد.

برنامه هاي CGI در سمت سرويس دهنده مقيم مي شوند و درخواستها را پذيرفته و از منابع Server-Side استفاده كرده و يك صفحه HTML را به عنوان يك پاسخ توليد مي كنند. آنها مي توانند به زبانهاي مختلفي مانند جاوا ،C+ + ،Perl و Visual Basic نوشته شوند.JSP ها و Active Server Page ها (Asp) مثالهايي از برنامه هاي CGI هستند. از آنجايي كه اين برنامه ها اسناد HTML برگشتي را معين مي كنند،كاربران پاسخهايي را مي گيرند كه مناسب درخواست ويژه آنها است. با استفاده از برنامه هاي CGI دسترسي به بانكهاي اطلاعاتي و اجراي پرس وجوهاي ويژه از آنها امكان پذير ميگردد.

زبانهاي اسكريپت نويسي

زبانهاي اسكر يپت نويسي، زبانهايي از نوع مفسر مي باشند. آنها قبل از اجرا، عمل كامپايل را انجام نمي دهند؛ آنها برنامه را به صورت خط به خط تفسير مي نمايند. دو مثال از زبانهاي اسكريپت نويسيJavascript و VbScript مي باشند.

اسكريپت نويسي در طرف سرويس گيرنده (Client-side) باعث مي شود كه بار كاري از روي سرويس دهنده برداشته شود، زيرا به نرم افزارهاي تجاري كوچك، مانند معتبر سازي فرم، اجازه نمي دهند كه بر روي سرويس گيرنده اجرا شوند. زماني كه يك سرويس گيرنده سعي در Submit كردن يك فرم دارد.

با اجراي يك اسكريپت مي توانيم مطمئن شويم كه تمامي فيلدهاي فرم پر شده اند يا خير. اگر يك فيلد مقداري نداشته باشد، يك پيغام مي تواند از طرف سرويس گيرنده به كاربر نشان داده شود تا كاربر بداند كه فيلد، نيازمند يك مقدار مي باشد. اين كار مي تواند بر روي سرويس گيرنده انجام شود اثر انگشت تا سرويس دهنده براي انجام يك معتبر سازي فرم ساده، به مشكل برخورد ننمايد. زبان اسكريپت نويسي شركت مايكروسافت VBScript ناميده مي شود.

دستور زبان مربوط به Javascript بسيار شبيه به زبانهاي C++  و جاوا مي باشد. اگر چه Javascript يك زبان Object- oriented (شي گرا) نمي باشد، اما در داخل آن، نمونه هايي از آبجكت هايي وجود دارند كه مي توانيد از آنها استفاده نماييد.

از اسكريپت نويسي Javascript مي توان هم در برنامه Netscape Narigator و هم در برنامه Internet Explorer استفاده نمود.

Vbscript زير مجموعه از زبان نويسي Visual Basic مي باشد. به همين دليل ياد گرفتن آن آسان مي باشد. بزرگتر ين ايراد زبان اسكريپت نويسي Vbscript در اين است كه تنها در برنامه Internet Explorer كار مي كند.

ليست زير يك سند HTML مي باشد كه از اسكريپت Javascript براي معتبر سازي يك فرم استفاده مي نمايد.

1:     <HTML> 

2:     <HEAD><TITLE>using javaScript  for  Form Checking< /TiTLE>< /HEAD>

3:     <BODY>

4:    FORMNAME=“MyForm”ACTION=“SomCGIProgerm”METHOD=“POST”>

5:     First Name:

6:     <INPUT TYPE= “text” NAME= “txtFirstName” Value = “Christos”>

7:     <BR>

8:     Last Name

9:     <INPUT TYPE= “text” NAME= “txtLastName” Value = “”>

10:   <BR>

11:   <INPUT TYPE= “button” NAME= “btnSubmit” VALUE= “Submit Form

12:   onClick= “CheckForm ( );”>

13:   <BR>

14:   <SCRIPT LANGUAGE= “javaScript”>

15:   < !- -

16:   function checkForm ( )

17:  {

18:  if (document . MyForm. TxtFirstName . Value == “”)

19:  {

20:  alert ( “Please enter your first name”);

21:  document . MyForm. TxtFirstName. Focus ( );

22:  }

23:  else if ( document .MyForm. txtLastName. Value == “”)

24:  {

25:  alert ( “Please enter your last name”);

26:  document . MyForm. TxtLast Name. focus

27:  }

28:  else

29:  {

30:  document . MyForm . Submit ( );

31:    }

32:  }

33:  //- ->

34:  < /SCRIPT>

35:  < /FORM>

36:  < /BODY>

37:  < /HTML>

شبكهN-Tier

تكنولوژي تا جايي تكامل يافته است كه برنامه هاي كاربردي وب بسيار پيچيده شده اند و شامل بخشهاي مختلفي مي باشند.شكل زير ساختاري به نام شبكه N –Tier ،كه به عنوان سيستم توزيعي (distributed system) نيز شناخته مي شود، جايي است كه امروزه شبكه را در نقطه تكامل خود قرار داده است.

گرچه شكل فوق كمي عجيب به نظر مي رسد، اما مي توانيد اين شكل را به بخشهاي زير تقسيم كنيد: لايه سرويس گيرنده، سطح منطقي برنامه كاربردي و سطح داده ها.

اجازه دهيد كه بررسي اين ساختار را با لايه سرويس گيرنده شروع نماييم. انواع مختلفي از سرويس گيرنده ها مي توانند در اين ساختار وجود داشته باشند. به عنوان مثال، يك سرويس گيرنده شبكه براي دسترسي به سرويس دهنده از پروتكل TCP/IP استفاده     مي نمايد وبا استفاده از پروتكل HTTP درخواستهايي را ايجاد مي كند. در نوع ديگري از سرويس گيرنده، با يك نرم افزار كاربردي جاوا، مي توانيد به سرويس دهنده از طريق پروتكل هاي ديگر ارتباطي مانندRemote Method Invocation (RMI) و  Internet Inter-orb protocol  دسترسي پيدا نماييد.

لايه منطقي برنامه كاربردي مي تواند در بيش از يك سرويس دهنده وب و سرويس دهنده برنامه كاربردي گسترش يابد.

سرويس دهنده وب مي تواند درخواستهاي سرويس گيرنده هاي وب را كنترل كرده و اسناد ساده HTML را ارائه دهد. اگر درخواست مربوط به يك برنامه كاربردي مي شود، مي تواند در خواست را به سرويس دهنده برنامه كاربردي بفرستد.

سرويس دهنده هاي برنامه كاربردي مي توانند برنامه هايي بزرگتر از آن چيزي كه سرويس دهنده وب كنترل مي كند را كنترل كنند.

آخرين لايه در اين ساختار، سطح داده ها است. سطح داده ها مي تواند از يك يا چندين بانك اطلاعاتي ساخته شود و همچنين مي تواند شامل سيستمهاي موروثي از قبيل كامپيوترهاي بزرگ و پيشرفته نيز باشد.

چرا قطعات زيادي در اين نوع شبكه وجود دارند؟ فلسفه اين كار به اين صورت است كه اگر شما بر روي يك مورد تمركز نموديد، بايستي آن را به خوبي انجام دهيد و اين   فلسفه اي است كه در اينجا به كار گرفته مي شود. اگر يك سرويس دهنده وب بر روي سرويس دهي صفحات تمركز يابد، بايستي قادر به بهينه سازي آن بوده و بتواند آنها را به طور موثر سرويس دهي نمايد. اگر يك سرويس دهنده برنامه كاربردي بر روي سرويس دهي برنامه هاي كاربردي تمركز يابد، بايستي قادر به عرضه سرويسهايي باشد كه تقريباً تمامي برنامه هاي كاربردي مانند برنامه هاي امنيتي استفاده ميكنند. در نتيجه، اگر يك بانك اطلاعاتي مسئول كنترل داده هاست، مي تواند بر روي ايجاد سرويسهايي مانند حافظه پنهاني نيز تمركز يابد، تا سريعتر به داده ها دسترسي پيدا نمايد. مزيت ديگر جدا كردن مسئوليتها اين است كه نوشتن و بيان اجزاء كوچكتر راحت تر از برنامه هاي كاربردي بزرگ و انبوه ميباشد.

 

سيستمJava 2 Enterprise Edition(J2EE)  چيست ؟

بسياري از شركتها محصولات خود را بر روي وب قرار داده اند و سيستمهاي تجاري     مي سازند. امروزه تفكر اين است كه برنامه نويسي اين سايتها بايد آسانتر از چندين سال پيش باشد. اين همان جايي است كه Java 2 Enterprise Edition(J2EE)  وارد عمل مي شود.

 

چه كسي اين مشخصه را توسعه مي دهد؟

مشخصه J2EE توسط شركت سان ميكروسيستمز نوشته شده است. سان ميكروسيستمز در زمان ساخت سيستم تجاري، ورودي را از بخش صنعتي مي گرفت كه آنها شامل   مشخصه هايي براي پيغام دهي، پشتيباني از بانك اطلاعاتي و كامپوننت هاي توزيع شده بودند.

 

اين مشخصه چه چيزي را تعريف مي كند؟

اين مشخصه بخشي از يك برنامه تجاري و سرويس هاي مورد نياز را تعيين مي كند. همچنين تعيين مي كند كه اين بخشها چگونه با هم ارتباط پيدا مي كنند.

 

چه كساني از اين مشخصه ها سود مي برند؟

افراد زيادي از اين مشخصه نفع مي برند. بيشتر برنامه هاي كاربردي تجاري، داده ها را نشان داده و يا از داده هاي يك بانك اطلاعاتي استفاده مي كنند. داده هاي موجود در آن بانك اطلاعاتي به طور هميشگي در دسترس مي باشد. همچنين، در اين برنامه هاي كاربردي تراكنشها نياز به نمايش دارند. تراكنش گروهي از مراحلي است كه بايد همگي بدون اشتباه و يا در كل بدون هيچ اشكالي اجرا شوند. به عنوان مثال،‌ اگر شما صد دلار از حساب پس انداز به حساب جاري خود انتقال دهيد. بايد دو مرحله اتفاق بيفتد. پول از حساب پس انداز شما بيرون كشيده شود و سپس به حساب جاري شما سپرده شود. اگر بعد از بيرون آوردن پول از حساب پس انداز و قبل از سپردن آن اشتباهي رخ دهد، شما مايليد كه تراكنش به حالت قبلي يا به عبارت ديگر به حالت اصلي خود كه شما صد دلار در حساب خود داشتيد، برگردد. از آنجايي كه مشخصه ها، سرويسهاي مورد نياز نرم افزار كاربردي را تعريف مي كنند، عرضه كنندگان سرويس دهنده هاي برنامه هاي كاربردي، قادر به پياده سازي بسياري از سرويس هاي اصلي همانند پشتيباني تراكنش، امنيت و پايداري- مي باشند، بنابر اين برنامه نويس نبايد درباره برنامه نويسي اين سرويسها در كدهاي خود نگراني داشته باشند. سپس اين مشخصه ها به افراد يا شركتها اجازه مي دهند تا محصولاتي را توليد كنند كه بتوانند در هنگام ساختن يك برنامه كاربردي متغير، به توسعه دهندگان برنامه كاربردي در كاهش زمان توسعه، كمك كنند.

 

چه تكنولوژيهايي اين سيستم را ايجاد مي كنند؟

سيستم J2EE از 13 تكنولوژي ساخته شده است:

·                   Javaserver pages (Jsp)

·                   Servlets

·                   Java Messaging service (JMS)

·                   Java Database Connectivity (JDBC)

·                   Java Naming and Directory Inter Face (JNDI)

·                   Java Transaction service (JTS)

·                   Java Transaction API (JTI)

·                   Java Mail

·                   JavaBeans Avtivation Framework (JAF)

·                   Remote Method Invocation (RMI)

·                   Enterprise JavaBeans (EJB)

·                   Extensible Markup Languege (XML)

·                   Java Integrated Definition Language (Java IDL)

 

شركت SUN اخيراً يك معماري اتصال دهنده J2EE را به J2EE اضافه نموده است. همان طور كه مي دانيد صفحات JSP اسناد HTML ي هستند كه در داخل آنها از زبان جاوا به منظور ايجاد متون پويا استفاده شده است.

Servlet ها كلاسهايي از جاوا هستند كه در خواستي را پذيرفته و پاسخي را توليد        مي كنند. يك Servlet كاملاً خاص كه Httpservlet ناميده مي شود، در خواستهاي HTTP را كنترل كرده و پاسخهاي HTTP را توليد مي كند.

JMS به برنامه هاي كاربردي اجازه مي دهد كه پيغامها را به يكديگر بفرستند. دو نوع پيغام دهي وجود دارد: Point- to- Point و Publish/subscribe در پيغام دهي Point- to-Point يك توليد كننده و يك مصرف كننده وجود دارد. اين روش شبيه به شخصي مي ماند كه يك email (پست الكترونيكي) را ارسال مي كند. توليدكننده، email را مي نويسد و مصرف كننده آن را در يافت مي كند. روش پيغام دهي Publish/Subscribe شبيه يك گروه خبري مي باشد. يك پيغام به صورت توزيعي منتشر شده و بسياري از مصرف كنندگان مي توانند آن پيغام را دريافت كنند.

JDBC يك API را توليد مي كند كه به برنامه نويس جاوا اجازه مي دهد تا به هر نوع بانك اطلاعاتي بدون دانستن نحوه پياده سازي آن بانك اطلاعاتي دسترسي يابد. اين مسئله بسيار مفيد مي باشد، زيرا به اين معنا است كه شما به يك عرضه كننده بانك اطلاعاتي محدود نشده ايد. بانك اطلاعاتي مي تواند بدون تاثير يا با تاثير كمي در كدهاي جاوا تغيير كند.

JNDI (Java Naming and Directory Interface) بسيار شبيه به ويژگي JDBC مي باشد، به صورتي كه به شما اجازه مي دهد تا به سرويسهاي نامگذاري و سرويسهاي فهرست راهنما، بدون اطلاع از پياده سازي خاص آنها دسترسي يابيد. اين كار بسيار مفيد مي باشد، زيرا سرويسهاي نامگذاري و سرويسهاي فهرست راهنما، سرويسهاي خودشان را كنترل مي كنند- مانند binding ، جستجو كردن (lookup) و ليست گيري (listing) . مثالي از يك سرويس دهنده نامگذاري Domain Name Server (DNS) مي باشد.

يك DNS (سرويس دهنده نام حوزه) در واقع نامها ميزبانان (hosts) را به آدرس اينترنتي تبديل تبديل مي كند، كه اين كار به شما اجازه مي دهد تا آدرس http://www.bea.com  را وارد كرده و با سايت وب BEA ارتباط برقرار كنيد. اين كار براي يك شخص ، كاملاً شبيه به جستجو كردن يك شماره تلفن مي باشد. شما در دفترچه تلفن خود نامي را جستجو مي كنيد و اين دفترچه به شما شماره تلفن را مي دهد.

JTS و JTA با همديگر كار مي كنند تا به كاربران اجازه كنترل تراكنشها خودشان را بدهند. يك تراكنش ، مجموعه اي از فرمانهايي است كه بايستي به صورتي اجرا شوند كه گويي يك فرمان واحد ميباشد. آنها بايد همگي بدون اشتباه اجرا شوند و يا اصلاً اجرا نشوند. JOBC,JMS,EJB تنها بعضي از تكنولوژيهاي هسنتد كه از تراكنش استفاده ميكنند.

 

ساخت اولين صفحة JSP  :

مروري بر زبان HTML :

طرح كلي يك صفحة JSP در واقع يك سند HTML مي باشد كه در داخل آنها كدهاي جاوا قرار داده شده است. از تگهاي خاصي براي قرار دادن كدهاي جاوا در داخل سند HTML استفاده مي شوند.

HyperText Markup Language (HTML) يك زبان نشانه گذاري مي باشد. اسناد HTML، اسنادي متني هستند كه در قالب بندي آنها از تگ هايي بخصوص استفاده شده است. ليست زير مثالي از يك سند HTML را نشان مي دهد كه خروجي آن در صفحة وب HTML به راحتي صورت مي گيرد :

1: <HTML>

2: <HEAD><TITLE> This is a simple HTML </TITLE></HEAD>

3: <BODY>

4: HML is Easy

5: </BODY>

6: </HTML>

نكته : HTML يك برنامة حساس به متن نمي باشد، بنابراين تگ <HTML> با تگ <html> هيچگونه تفاوتي ندارد. اما استفاده از حروف بزرگ باعث مي شود كه تگ ها در داخل متن مشخص تر شوند و غلط گيري آنها راحت تر صورت گيرد.

 

مقايسة صفحات JSP با برنامه هاي CGI :

برنامه هاي CGI كلي ترين اصطلاحاتي هستند كه براي توصيف برنامه هاي موجود بر روي سرويس دهنده به كار مي روند كه توليد اسناد پويا را مي نمايند. اين برنامه ها را   مي توانيد با زبانهاي برنامه نويسي C، C++، Perl يا جاوا بنويسيد.

صفحات JSP نوعي از برنامه هاي CGI مي باشند. آنها اجازه دسترسي از سرويس  گيرنده هاي وب، براي دسترسي به منابع سرويس دهنده را مي دهند و پاسخهاي پويايي  را براي سرويس گيرنده هاي وب توليد مي نمايند. CGI فقط يك اصطلاح كلي براي توصيف برنامه هايي مانند ASP، JSP و ديگر برنامه هاي نوشته شده به زبانهايي مانند C و Perl مي باشد.

 

مقايسه صفحات JSP و صفحات ASP :

تكنولوژي ASP ، به وسيلة شركت مايكروسافت توسعه يافته است و از زبان برنامه نويسي VBScript در داخل اسناد HTML جهت توليد محتويات پويا براي سرويس گيرنده هاي وب استفاده مي نمايد. صفحات ASP و JSP در عملكرد خيلي با يكديگر مشابه مي باشند هر دو براي توليد محتويات پويا براي سرويس گيرنده هاي وب به كار مي روند. صفحات ASP از زبان VBScript استفاده مي نمايند در حالي كه صفحات JSP از زبان جاوا در داخل اسناد HTML استفاده مي كنند. هر دوي اين زبانها، برنامه هايي بر روي سرويس دهنده هستند و اين بدان معنا است كه هر دوي اين زبانها به منابع سمت سرويس دهنده مثل بانكهاي اطلاعاتي دسترسي دارند. حتي دستور زباني كه براي وارد كردن زبان خاص خودشان استفاده مي نمايند، نيز بسيار با يكديگر مشابه مي باشد. ليست(1) مثالي از يك صفحة ASP مي باشد كه زمان و تاريخ فعلي سيستم را نمايش    مي دهد و ليست(2) مثالي از يك صفحة JSP مي باشد كه زمان و تاريخ فعلي سيستم را نمايش مي دهد.

در خط هشتم ليست(1) ، مي توانيد مشاهده نماييد كه از تگ هاي %> و <% استفاده شده است تا تابع Now() زبان VBScript به داخل سند HTML وارد شود. حال اگر به خط ششم ليست(2) نگاه كنيد، خواهيد ديد كه از همان تگ ها براي درج كردن كد new java.util.Date()  استفاده شده است. اين تگها براي درج عبارات جاوا در داخل صفحات JSP مورد استفاده قرار مي گيرند.

ليست (1) :

1:  <%@ Language = VBScript

2:  <HTML>

3:  <HEAD>

4:  <TITLE>A Simple APS< /TITLE>

5:  < /HEAD>

6:  <BODY>

7:  <CENTER>

8:   The Current Date and Time is : <%= Now %>

9:   < /CENTER>

10: < /BODY>

11: < /HTML>

نكته:

صفحات ASP مانند صفحات JSP ، مي توانند در داخل هر ويرايشگر متني نوشته شوند و پسوند asp ذخيره شوند. ابزاري محبوب ويرايش كه متنن را به صورت برجسته (highlights) نمايش داده و به شما با دستور زبان مربوطه كمك مي نمايد. برنامه Visual InterDev شركت مايكروسافت مي باشد. اين ابزار در سازماندهي برنامه هاي كاربردي بزرگي كه شامل تعداد زيادي صفحات ASP و HTML مي باشند به شما كمك مينمايد.

كد معادل در صفحه JSP ليست 3-2 آورده شده است.

ليست (2) :

1:    <HTML>

2:    <HEAD><TITLE>A Simpie JSP< /TITLE>< /HEAD>

3:    <BODY>

4:    <FONT  COLOR=”blue”   FACE=”Trebuchet”>

5:    <CENTER>

6:    The Current  date  and Time is:  <%= new java . util . Date( )%>

7:    < /CENTER>

8:    < /FONT>

9:    < /BODY>

10:  < /HTML>

نكته:

جاوا كلاس هاي مشابه اي را در داخل بسته هاي نرم افزاري تركيب كرده است. كلاس Date در بسته Java . ulit قرار دارد وبه شما اجازه مي دهد كه از ساختار آن براي دستيابي به زمان و تاريخ فعلي سيستم استفاده نماييد. يك ساختار (Contructor) متدي است كه يك آبجكت را ايجاد و نمونه سازي مي نمايد.

 

اگر چه صفحات ASP و JSP با يكديگر مشابه مي باشند، اما چند تفاوت بين آنها وجود دارد. يك تفاوت عمده در اين است كه صفحات ASP تنها بر روي سيستم هاي مايكروسافت اجرا مي شوند، در حالي كه، صفحات JSP فلسفه يك بار بنويس و در همه جا اجرا كن را دنبال مي كنند و بر روي هر سرويس دهنده اي كه از يك ماشين مجازي استفاده مي كنند، اجرا مي شوند. از آنجايي كه ماشين مجازي جاوا تقريباً بر روي هر سيستم عاملي قابل نصب و قابل دسترسي مي باشد، اين موضوع يكي از مزاياي صفحات JSP مي تواند باشد. مزيت ديگر JSP اين است كه از زبان برنامه نويسي قويتري به نام جاوا استفاده مي نمايد تا محتويات پوياي مربوط به خود را بسازد. اين به معناست كه صدها كلاس و متد در اختيار شما قرار دارند.

 

ساخت اولين صفحه JSP

اكنون زمان آن رسيده است كه محيط كاري خود را راه اندازي كرده و اولين صفحه JSP را اجرا نماييد.

نصب سرويس دهنده Apach’s Tomcat

قبل از اينكه بتوانيد صفحات JSP را بنويسيد، به محيطي نياز داريد كه صفحات JSP را اجرا نماييد. در اين بخش شما برنامه Apache’s Tomcat را به عنوان سرويس دهنده صفحات JSP ، نصب مي كنيد. Apache’s Stomcat يك سرويس دهنده رايگان وب مي باشد كه درخواستهاي مربوط به اسناد HTML و صفحات JSP و Servelet ها را كنترل مي نمايد. Weblogic Server  را مي توانيد از شبكه دريافت نموده و در يك دوره 30 روزه به بررسي آن بپردازيد. در طي اين 30 روز مي توانيد اجراي صفحات JSP را بر روي سرويس دهنده هاي چند گانه تجربه نماييد و با محبوب ترين سرويس دهنده    برنامه هاي كاربردي سرويس دهنده BEA تجربه كسب نماييد. بنابر اين اجازه دهيد كارمان را شروع كنيم:

1-  براي نصب سرويس دهنده Apache’s Tomcat نياز به گرفتن كپي از فايل Jakarta-tomcat.zip داريد.

      اين كار براي سيستم عامل Windows NT مي باشد و دستورات بعدي مربوط به                        ويندوزهاي ديگر مي باشد. شما مي توانيد اين فايل را از سايت مربوطه دريافت نماييد.

به سايت وب Apache’s براي دريافت سرويس دهنده Tomcat برويد:

http://jakarta.apache.org/

2-   در زير كلمه Download ،لينك Binaries را انتخاب نماييد تا عمل دريافت فايل انجام شود.

3-   به پايين صفحه وب Binaries Download بيابيد و يكي از نسخه هاي موجود را انتخاب نماييد.

4-  اكنون شما در فهرست بارگذاريها قرار داريد. فايل Jakarta-tomcat.zip را براي دريافت آن انتخاب نماييد. آن را در دايركتوري موقت بر روي ديسك درايو خود ذخيره نماييد. از اين فايل Zip براي نصب سرويس دهنده Tomcat بر روي سيستم عامل ويندوز استفاده مي شود؛ همچنين فايل هايي نيز براي سيستم عامل هاي ديگر مثل Linux در دسترسي قرار داده شده اند.

5-  فايل مورد نظر را بر روي كامپيوترتان در فهرست C:\tomcat از حالت فشرده (Zip) خارج نماييد. اگر اين دايركتوري وجو ندارد، آن را ايجاد كنيد. پس از خارج كردن فايل ها از حالت فشرده، ساختار دايركتوري شما بايد C:\tomcat و پوشه هاي داخل آن bin ،conf ،doc ،lib ، src ،webapps باشند.

6-  فايل tomcat.bat را ويرايش كنيد و متغير JAVA-HOME را به گونه اي اصلاح كنيد كه به ريشه محل نصب JDK اشاره كند. فايل tomcat.bat در پوشه C:\tomcat\bin قرار دارد. براي مثال، من به JDK به صورت زير اشاره كرده ام:  d:Jdk1.2.2

7-  اكنون زمان اجراي سرويس دهنده Tomcat فرا رسيده است. در اعلان به بخش C:\tomcat\bin برويد. سپس در خط فرمان، دستور Tomcat start را تايپ نماييد. روش ديگر براي اجراي سرويس دهنده Tomcat  اين است كه دستور Startup را تايپ نماييد كه در اين حالت، سرويس دهنده Tomcat  در يك پنجره DOS جديد آغاز به كار مي نمايد.

8-  با مشاهده صفحه خانگي در مرورگرتان مي توانيد بررسي نماييد كه آيا سرويس دهنده Tomcat به صورت صحيح كار مي كند يا خير.

9-  اكنون دانستيد كه سرويس دهنده Tomcat  در حال كار كردن مي باشد، با كليك كردن بر روي JSPEXamples و اجراي يكي از مثالهاي ليست شده از اجراي صحيح صفحات JSP اطمينان حاصل نماييد.

 

 

نكته:

اگر صفحه JSP را به صورت مناسبي مشاهده نكرديد، مطمئن شويد كه JAVA-HOME به ريشه محل نصب JDK به طور صحيح اشاره مي نمايد.

10-اكنون همه چيز را تنظيم كرده ايد. شما سرويس دهنده Apach’s Tomcat را نصب و اجرا كرده ايد و حالا مي توانيد اولين صفحه JSP را بنويسيد.

 

تايپ كدهاي صفحه JSP در داخل يك ويرايشگر متن

صفحات JSP را مي توانيد در داخل هر ويرايشگر متني بنويسيد. اگر در حال كار كردن با سيستم عامل ويندوز مي باشيد، مي توانيد از برنامه Notpad استفاده نماييد. اولين صفحه JSP اي كه قصد داريد بنويسيد، سينوس چندين زاويه را محاسبه كرده و نتايج را در داخل يك جدول نمايش مي دهد. ليست زير چنين كاري را براي ما انجام مي دهد.

1:     <HTML>

2:     <HEAD><TITLE>My First JSP < /TITLE>< /HEAD>

3:     <BODY>

4:     <%! Int  angles[ ] = {0, 30, 45, 75, 90 }; %>

5:     <TABLE BORDER=”2” ALIGN=”Center”>

6:     <TH>Angle< /TH><TH>Sine of  Angle< /TH>

7:     <% for (int  I=0;  I<5; I++)  {  %>

8:     <TR><TD><%= angles [I] %>< /TD>

9:     <TD><%= Math . sin(Math . toRadians(angles [ I ] ))%>

10:   < /TR>

11:   <%  }  //end   for  loop  %>

12:   < /TABLE>

13:   < /BODY>

14:   < /HTML>

 

ذخيره كردن يك صفحه JSP با پسوند JSP

پس از تايپ كدهاي ليست قبلي در داخل برنامه Netepad ، شما بايد آنرا با يك پسوند JSP ، به سرويس دهنده وب يا سرويس دهنده برنامه كاربردي اجازه مي دهد تا بداند كه با يك صفحه JSP در ارتباط مي باشد. اين فايل را در دايركتوري C:\tomacat\webapps\myJSPs\Hour2 ذخيره نماييد.

اگر اين ساختار دايركتوري وجود ندارد. آنرا بسازيد. هنگامي كه صفحه JSP خود را ذخيره مي كنيد، مطمئن شويد كه آن را به عنوان يك سند متني ذخيره مي كنيد و هنگام تايپ اسم فايل، آنرا درداخل دو عدد گيومه قرار دهيد و پسوند را به آن اضافه كنيد.

 

مشاهده صفحه در داخل يك مرورگر

براي مشاهده اولين صفحه JSP ، مرورگر منتخب خود را باز كرده و در بخش آدرسش URL زير را تايپ نماييد.

http:\\Localhost: 8080\myjsps\ Hour2\myFristjsp.jsp

اين  URLبه سرويس دهنده مي گويد كه از ميزبان محلي در پورت 8080 استفاده نموده و باقيمانده URL مسير فايل JSP را مشخص مي نمايد.

 

مقدمه اي بر Servlet ها

پايه و اساس اجراي صفحات JSP ، Servlet ها مي باشند. اين درست است كه : صفحات JSP بايد قبل از اجرا به Servlet ها ترجمه شوند. ممكن است از اين متعجب باشيد كه اين مسئله چگونه بر روي كارايي اثر مي گذارد. در مرحله اول ممكن است اين مسئله به كارايي لطمه وارد كند، ليكن شما بايد روشهايي را براي دوري ازاين كاهش عملكرد در مراحل بعدي بيابيد.

دانستن ترجمه تگ ها به كد Servlet به درك شما از پشت صحنه هاي عملكرد صفحات JSP ، كمك شاياني مي نمايد.

يك Servlet چيست؟

Servlet  در كلي ترين حالت- يك كلاس جاوا است كه واسط Servlet  را پياده سازي مي نمايد و همچنين در خواستها را پذيرفته و پاسخها را توليد مي كند.

اين درخواستها مي تواند از كلاسهاي جاوا، سرويس گيرنده هاي وب، يا Servlet  هاي ديگر بيايند.

وقتي شما يك واسط را اجرا مي كنيد، در واقع اظهار مي داريد كه كلاس شما امكان اجرا را براي متدهاي بيان شده در واسط Servlet  فراهم مي نمايد. به عنوان مثال، اگر شما يك نمونه بانك داري را مي نويسيد و كلاسهاي متعددي داريد كه نياز دارند تا شرحي را براي متدهاي Withdraw ( ) و Deposit ( ) فراهم كنند، مي توانيد يك واسط بنويسيد كه اين متدها را توصيف نمايد. كلاسهاي ديگر، واسط بانك داري را پياده سازي خواهند كرد و تضمين مي كنند كه تعريف هايي را براي رفتار متدهاي Withdraw ( ) و Deposit ( ) فراهم كنند.

نكته:

گسترش كلاس جاوا، يك كلاس سلسله مراتبي را ايجاد مي كند كه تقريباً مانند يك درخت خانوادگي مي باشد. كلاس گسترش يافته را ابر كلاس يا كلاس والد مي نامند. كلاسي كه تعريف شده است، خودش به يك كلاس ديگر گسترش مي يابد كه زير كلاس فرزند ناميده مي شود. شما يك بسط از والدين خود مي باشيد و يقيناً خواص و رفتار آنها را به ارث مي بريد. اين مثال براي كلاسهاي جاوا نيز مصداق دارد. كلاس فرزند، رفتار وخواص كلاس والد را به ارث مي برد، اما داراي خواص ورفتار ديگري   مي باشد كه اين كلاس را منحصربه فرد مي نمايد.

 

چگونگي تبديل صفحات JSP به Servlet ها

اساس پياده سازي صفحات JSP ، Servlet ها مي باشند، پس چرا يكي بر روي ديگري به كار برده مي شود؟ صفحات JSP يك برتري بزرگ نسبت به Servlet ها دارند، زيرا صفحات JSP قواعد جداگانه اي را ارائه مي دهند. خبرگان وب مي توانند جلوه هاي زيبايي از صفحات وب را بيافرينند و همچنين برنامه نويسان جاوا ميتوانند محتويات پويا را به صفحات وب اضافه نمايند. همچنين برنامه نويسان نيازي ندارند تا مانند وقتي كه Servlet  ها را مي نويسند، در برنامه نويسي جاوا كار كشته باشند و از چگونگي ساخت كلاس ها و وراثت آگاهي كامل داشته باشند. ممكن است اين نگراني براي شما به وجود آيد كه اگر از صفحات JSP استفاده نماييد، از آنجايي كه بايد اين صفحات به      Servlet  ها ترجمه شوند، كارآيي نرم افزار كاربردي كاهش پيدا نمايد،‌اما خواهيد ديد كه اين موضوع هميشه صادق نمي باشد. حال بيايد به چرخه عمر JSPs / Servlet  و همچنين ترجمه بين صفحات JSP و Servlet  نگاهي بيندازيم.

 

چرخه عمر JSP/Servlet  

از آنجايي كه اساس پياده سازي صفحات JSP استفاده از Servlet  ها مي باشد، چرخه عمر اين دو مشابه به يگديگر مي باشد.

شكل زير چرخه عمر JSP/ Servlet  را نشان ميدهد.

 

شما كارتان را با يك صفحه JSP يا يك كلاس Servlet  شروع مي نماييد. سرويس دهنده مسئول نمونه سازي JSP/ Servlet ميباشد و از متد NEW (  ) براي انجام اين كار استفاده مي نمايد. متد NEW (  ) ، يك متد جاوا براي ايجاد فضاي مربوط به يك آبجكت در حافظه اصلي مي باشد.

بعد از اينكه JSP/ Servlet نمونه سازي شد، متد init (…) به منظور مقدار دهي اين نمونه مورد استفاده قرار مي گيرد،‌ init (…) در دقايق بعد با جزئيات بيشتر بررسي مي شود. سپس JSP/Servlet  به سمت « حالت آماده » حركت كرده و آماده رسيدگي به درخواستهاي سرويس گيرنده مي شود. شما مي توانيد يك متد Service (…) را براي رسيدگي به عمل منطقي خود بنويسيد يا مي توانيد يك متد Do get (…) يا                 Do post (…)  را براي عمل منطقي خود بنويسيد.

JSP/Servlet بعدها هنگامي كه سرويس دهنده از متد Destroy (  ) استفاده مي نمايد، از بين مي رود. سرانجام جمع كننده ضايعات، حافظه را با استفاده از متد Finalize (  ) پاك سازي مي نمايد.

 

فرآيند ترجمه JSP

JSP به كد Servlet  مربوطه تبديل مي شود، كه يك فايل جاوا مي باشد. خيلي از سرويس دهنده هاي برنامه كاربردي امكان نگهداري فايل هاي با پسوند JAVA را فراهم مي كنند. آنها بعد از اينكه به فايل با پسوند java  تبديل شد، به فايل Codebyte (با پسوند Class ) ترجمه مي شوند. فايل با پسوند Class ، اجرايي مي باشد و سند HTML خروجي را توليد كرده و به سرويس گيرنده بر مي گرداند.

اكنون ممكن است فكر كنيد كه اين يك پردازش بزرگ مي باشد وبه كارايي لطمه شديدي را وارد مي نمايد. البته، پس از اولين دسترسي به يك صفحه JSP ، درخواستهاي بعدي از ميان فاز ترجمه عبور نخواهد كرد، بلكه به طرف فايل با پسوند Class كه قبلاً كامپايل شده ميرود. خيلي از سرويس دهنده هاي برنامه هاي كاربردي شما اجازه مي دهند تا مدت زماني كه سرويس دهنده برنامه كاربردي قبل از بررسي كردن صفحه JSP ( در صورتي كه صفحه تغيير كرده باشد و نياز به كامپايل داشته باشد) بايد منتظر بماند را تعيين نماييد.

همچنين بسياري از سرويس دهنده هاي برنامه كاربردي، كامپايلري را براي صفحات JSP فراهم مي كند، لذا در برخورد اول با صفحه JSP كاهش كارآيي قابل توجه نخواهد بود .

 

ساختار اصلي يك httpservlet

متدها متعددي وجود دارند كه معمولاً وقتي يك httpservlet را مي نويسيد، از آنها استفاده مي نماييد. اين متدها عبارتند از :

Void init (ServletConfig  SC ) throws  ServletException;

Void Service(HttpServlet Request Request,HttpservletResponse response )

Throws ServletException , IOEception;

Void doget( HttpServletRequest  reques ,Httpservlet Response   response )

Throws ServletException , IOEception;

Void dopost( HttpServletRequest  request,Httpservlet Response   response )   

Throws ServletException , IOEception;

 شما مي توانيد جايي كه متدها در چرخه عمر JSP /Servlet  قرار گرفته اند را با رجوع به شكل چرخه عمر JSP /Servlet  در صفحه قبل مشاهده نماييد خاطر داريد كه از متد   init (…) براي مقدار دهي اوليه استفاده مي شد. شما از اين متد براي كنترل مقدار دهي مخصوص به خودتان، به Servlet  استفاده مي نماييد. متد Service (…) براي كنترل اعمال منطقي شما مورد استفاده مي گيرد ( در صورتي كه عمل منطقي شما مهم نباشد و در صورتي كه درخواست تحت متدها POST يا GET فرستاده شده باشد، مي توانيد از متدهاي dopost (…) يا doGet (…) استفاده نماييد.

متد init (…) شما در چرخه عمر JSP /Servlet  ديديد كه متد init (…) براي مقدار دهي اوليه JSP /Servlet  فراخواني مي شد. دستور زبان مربوط به متد init (…) به صورت زير مي باشد:

Void init (ServletConfig  SC ) throws  ServletException;

پارامتري كه به داخل متد init (…) عبور داده مي شود يك آبجكت Servlet config   مي باشد. آبجكت Servlet Config به شما امكان دستيابي پارامترهاي اوليه را مي دهد. پارامترها اوليه به شما اجازه مي دهند تا براي Servlet  خود متغيرهاي سراسري تعيين نماييد. بيشتر اوقات اين پارامترها براي مشخص كردن حداقل يا حداكثر اعداد مربوط به Servlet  مورد استفاده قرار مي گيرند.

براي مثال اگر شما يك شماره حساب بانكي داريد، عموماً يك مقدار حداقل، براي ثابت نگه داشتن شماره حساب نياز مي باشد. پارامتر اوليه مي تواند براي اين عدد حداقل تنظيم شود و سپس Servlet  مي تواند براي بررسي مقدار آبجكت، به آن دسترسي پيدا نمايد.

 

متد Service (…)

متد Service (…) مي تواند براي پياده سازي اعمال منطق شما مورد استفاده قرار گيرد. دستور زبان متد Service (…) به صورت زير است:

Void Service (HttpServlet Request Request , HttpservletResponse response )

Throws ServletException , IOEception;

معمولاًتوسعه دهنده Servlet  از متدهاي dopost (…) يا doGet يك Servlet  ، با فرض اينكه Servlet  شامل منطق متفاوتي مي باشد و بسته به نوع در خواست استفاده مي نمايد. اگرچه در تمرينات، اغلب كدهاي مشابهي براي هر دو متد نوشته ميشود. شما به جاي اينكه دوبار كدهايتان را بنويسيد، فقط كافي است از متد Service (…)  استفاده نماييد.

نوع عمل منطقي كه Servlet  اجرا مينمايد، وابسته به برنامه كاربردي شما ميباشد. يك دستور پردازشي را براي مثال در نظر بگيريد، كه كاربر يك فرم HTML را پر مي كند كه شامل نام، شماره تلفن، آدرس و انواع ديگري از اطلاعات شخصي وي مي باشد. كاربر همچنين محصولاتي كه مي خواهد خريداري نمايد را در داخل فرم پر مي كند.

اطلاعات خريد مي تواند شامل شماره محصول و ميزان خريد كاربر باشد. عمل منطقي در Servlet  مي تواند شامل چندين چيز باشد. ممكن است Servlet  بررسي كند كه آيا سرويس گيرنده هم اكنون در داخل بانك اطلاعاتي وجود دارد يا خير و اگر چنين نيست آن را به بانك اطلاعاتي اضافه نمايد. همچنين مي تواند بررسي نمايد كه آيا محصول در داخل انبار وجود دارد يا خير. اگر محصول در انبار وجود دارد، مقداري كه سرويس گيرنده درخواست نموده است را از موجودي انبار كم مي نمايد و اطلاعات فروش مربوط به دستور را تنظيم مي نمايد.

پارامترهايي كه فرستاده مي شوند، آبجكت هاي HttpServlet Request و HttpservletResponse  مي باشند.

اين آبجكت به شما اجازه تجزيه درخواستها رسيده را مي دهند و پاسخهايي را كه براي سرويس گيرنده پس فرستاده مي شوند را توليد مي كنند.

متدهاي dopost (…) و doGet (…)

متدهاي dopost (…) و doGet (…)     درخواستها را از فرم HTML مربوطه گرفته و عمل منطقي را براي شما اجرا مي كنند. دستور زبان متدهاي dopost (…) و doGet (…) به قرار زير مي باشند:

 Void doget ( HttpServletRequest  request , Httpservlet Response response )

Throws ServletException , IOEception;

Void dopost ( HttpServletRequest  request , Httpservlet Response response )   

Throws ServletException , IOEception;

فرم HTML داراي خاصيتي بنام “METHOD” مي باشد كه چگونگي ارسال اطلاعات سرويس دهنده را مشخص مي كند. متد GET داده را به URL پيوست مي كند و از اين طريق آنها را براي سرويس دهنده ارسال مي نمايد. متد POST ، داده را در يك بسته، بسته بندي كرده و بسته را براي سرويس دهنده ارسال مي نمايد . ليست زير يك سند HTML مي باشد كه شامل دو فرم است. يكي از فرم ها از متد GET و فرم ديگر از متد POST براي ارسال داده به سرويس دهنده استفاده مي كنند.

1:     <HTML>

2:     <HEAD><TITLE>Form Examples< /TITLE>< /HEAD>

3:     <BODY>

4:     <CENTER>

5:     <FORM NAME= “GetForm” ACTION= “SomeJSP . jsp” METHOD= “GET”>

6:     Name:

7:     <INPUT TYPE= “password” NAME= “txtPassword” VALUE= “jon”>

8:     <BR>

9:     password:

10:  <INPUT TYPE= “password” NAME= “txtpassword” Value= “”>

11:  <BR>

12: <INPUT TYPE= “submit” NAME= “btnSubmitGetForm” Value= “SubmitGetForm”>

13:  < / FORM>

14:  <BR>

15:  <BR>

16:  <FORM NAME= “postForm” Action= “SomeJSP. Jsp” METHOD= “POST”>

17:  Name :

18:  <INPUT TYPE= “text” NAME= “txtName” VALUE= “Katherine”>

19:  <BR>

20:  please Select your Favorite Ice Cream Flavors:

21:  <BR>

22:  <SELECT NAME= “slticeCream” SIZE= “5” MULTPLE

23:  <OPTION>Mint Chocolate chip< / OPTION>

24:  <OPTION>Rocky Road < /OPTION>

25:  <OPTION>Strawberry Cheesecake< /OPTION>

26:  <OPTION> Chocolate< /OPTION>

27:  <OPTION>Vanilla < /OPTION>

28:  < /SELECT>

29:  <BR>

30: <INPUT TYPE=“submit”NAME=“btnSubmitPostForm”Value=“Submit POST FORM”>

31:  < / FORM>

32:  < /CENTER>

33:  < /BODY>

34:  < /HTML>

 


پارامترهايي كه به متدهاي doxxx(…) عبور داده مي شوند مشابه متد Service (…)      مي باشند و عبارتند از: آبجكت هايHttp Servlet Reques  و HttpServletresponse .

 

ترجمه يك JSP ساده به يك Servlet  

از آنجايي كه پايه اساس پياده سازي يك صفحه JSP ، يك Servlet  مي باشد، اجازه دهيد نگاهي به يك صفحه JSP سپس كد Servlet  معادل آن بيندازيم. كد معادل Servlet  ، خروجي شبيه به صفحه JSP دارد، اما خواهيد ديد كه كار بيشتري را بايد انجام دهيد.

 

نوشتن يك صفحه JSP ساده

ليست زير يك صفحه JSP مي باشدكه جدول Powers of 2 را مي سازد.

1:     <HTML>

2:     <HEAD><TITLE>Powers of 2< / TITLE>< /HEAD>

3:     <BODY>

4:     <CENTER>

5:     <H2>Behold The Powers of 2< / H2>

6:     < /CENTER>

7:     <TABLE BORDER= “2” ALIGN=”center”>

8:     <TH>Exponent< /TH><TH>2^Exponent< /TH>

9:     <% for  (int  i=0;  i<10;  i++)  {%>

10:   <TR><TD><%=  i%>< /TD>

11:   <TD><%= Math . pow (2, i)%>< / TD>

12:   < / TR>

13:   <%  }  //end   for  loop %>

14:   < /TABLE>

15:   < /BODY>

16:   < /HTML>

 

 بيايد تا ببينيم در صفحه JSP بالا چه اتفاقي رخ مي دهد.

خط 1 و 16 تگ هاي ابتدايي و انتهايي سند HTML مي باشند و مشخص مي كنند كه اين صفحه يك سند HTML مي باشد. خط 2 بخش سر آغاز (head) سند را مي سازد و يك عنوان به نام Powers  of  2 را به اين صفحه مي دهد. تگ ( BODY) در خط سوم شروع شده ودر خط 15 بسته مي شود، كه تقريباً محتويات صفحه را شامل مي شود. خطهاي   6-4 يك عنوان را بر روي صفحه در سطح دوم مي سازند كه در وسط صفحه قرار       مي گيرد. عنوان عبارت Behold The Powers of 2 مي باشد. خروجي اين صفحه قرار است يك جدول، با يك عدد در ستون اول و نتيجه به توان دو آن عدد در ستون دوم باشد. در خط هفتم جدولي با حاشيه اي به اندازه 2 پيكسل بر روي صفحه ساخته مي شود. سر تيتر جدول در خط هشتم با استفاده از تگ <TH> ساخته مي شود.

حال زمان آن رسيده كه كدهاي جاوا را به داخل سند HTML وارد نماييم. خط نهم از يك تگ JSP به نام تگ Scriptlet كه به صورت %> و <% مي باشد استفاده مي نمايد. در خط نهم، از اين تگ براي وارد كردن حلقه FOR به داخل صفحه استفاده مي شود. در طي حلقهFor ، اين صفحه سطرهاي جدول را مي سازد و توان دوي اعداد را با استفاده از عملگر رياضي محاسبه مي نمايد. در خط دهم، سطر جدول با استفاده از تگ < TR> ساخته مي شود و اولين مقدار در ستون exponent قرار داده ميشود، كه همان متغير ساده i مي باشد. قابل توجه است كه يك تگ جديد مقدار i را درج مي نمايد؛ اين تگ، تگ Scriptlet كه در خط نهم مشاهده كرده ايد، نمي باشد. اين تگ جديد، < %= مي باشد كه به آن تگ expression (عبارت) گفته مي شود. اين تگ به شما اجازه مي دهد تا يك عبارت جاوا كه قصد ارزشيابي آن را داريد وارد كرده و نتيجه را در صفحه JSP درج   مي كند. پس از اينكه عدد exponent در درون صفحه درج شد، توان دوي عدد در درون صفحه درج مي شود و براي اين كار ازتگ expression استفاده مي گردد. اين عمل در خط يازدهم نشان داده شده است. خط دوازدهم تعريف سطرهاي جدول را به پايان       مي رساند. حلقه For بايد بسته شود. تگ هاي Scriptlet مي باشد. اكنون اجازه بدهيد نگاهي به كد Servlet  معادل بيندازيم. اين كدي است كه خروجي مشابه با صفحه را توليد مي نمايد. پيش از اين آموختيد كه صفحات JSP به كدهاي Servlet  ترجمه        مي شوند. كد JSP بايد به اين كدهاي Servlet  ترجمه گردد.

قابل توجه است كه خروجي Servlet  مشابه با خروجي صفحه JSP مي باشد. اگرچه خروجيها مشابه مي باشند، اما كدهاي Servlet  كار بيشتري را طلب مي كنند، بنابر اين ساخت صفحات JSP مطلوب تر مي باشد. شما براي نوشتن صفحات JSP بر خلاف وقتي كه با Servlet  ها كار مي كنيد، نياز نداريد كه فهم عميقي از جاوا داشته باشيد.

 

چگونگي پيكر بندي سرويس دهنده  BEA Weblogic

سرويس دهنده BEA Weblogic ، امروزه مشهورترين سرويس دهنده برنامه كاربردي   مي باشد. اين سرويس دهنده تنها سرويس دهنده كاربردي مستقلي مي باشد كه مورد تائيد J2EE شركت SUN Microsystems مي باشد. هر سرويس دهنده برنامه كاربردي، درخواستهاي صفحات مختلف JSP را كنترل مي نمايد. سرويس دهنده BEA از يك Servlet  به نام JSPServlet براي كنترل درخواستهاي صفحات JSP استفاده مي نمايد. شما ميتوانيد آرگومانهاي اوليه را براي اين Servlet  ، مانند ( JDK) Java Development Kit ، دايركتوري كاري و يا تنظيم اين كه آيا قصد نگهداري فايلهاي Servlet  ي كه با پسوند جاوا توليد شده اند را داريد يا خير. در مدت زمان كوتاهي شما قادر به راه اندازي JSPServlet و پيكر بندي آرگومانهاي اوليه آن خواهيد بود.

نكته :      

 JDK را مي توانيد از سايت وب شركت SUN Microsystems به نشاني        http://java.sun.com/ دريافت نماييد. آخرين نسخه JDK ، نسخه 3/1 ميباشد.از آنجايي كه سرويس دهنده Wls  5.1 از نسخه JDK 1/3 پشتياني نمي كند، بنابر اين نسخه 1.2.2 آنرا دريافت نماييد. نسخه هاي JDK 1.2.* بهتر از نمونه هاي قبلي خودشان يعني 1.1.* جمع آوري ضايعات را انجام مي دهند.

 

نصب سرويس دهنده BEA Weblogic

قبل از اينكه از سرويس دهنده  Weblogic را شروع كنيد، نياز به نصب اين نرم افزار داريد. مراحل زير چگونگي نصب اين نرم افزار بر روي سيستم عامل هاي ويندوز NT و ويندوز 98 را نشان مي دهند.

1-      بر روي CD-Rom كه اين نرم افزار در آن موجود است ، فايلي به نام           Weblogic 510.exe قرار دارد. اين فايل مربوط به نصب مي باشد، پس بر روي آن دوبار كليك نماييد.

2-برنامه نصب، دستوراتي را مهيا مي نمايد تا به شما مي گويند كه چه كاري را انجام دهيد. شما موارد زير را مشاهده خواهيد كرد:

   ·    نام دايركتوري براي نصب سرويس دهنده، مسير C :\ Weblogic  انتخابي خوبي مي باشد، مكان نصب را به خاطر بسپاريد زيرا بعداً به اين اطلاعات نياز پيدا مي نماييد. هر زماني كه در مورد دايركتوري ها بحث مي كنيم، فرض بر اين است كه شما نرم افزار را در ميسر C :\ Weblogic نصب كرده ايد. اگر برنامه را در دايركتوري ديگري نصب كرده ايد، هر زماني كه مسير C :\ Weblogic را در اين تحقيق مشاهده          مي نماييد، آن را با دايركتوري خودتان جايگزين نماييد.

   ·    كلمه عبور يك سيستم. كلمه عبور سيستم ( password) بايد حداقل شامل 8 كاراكتر باشد و كلمه “Weblogic” به نظر انتخاب خوبي مي باشد. اگر اين كلمه عبور را فراموش كرده ايد، مي توانيد آن را بعداً در فايل مشخصات پيدا كنيد.

نكته :

Weblogic Server 5.1 از يك فايل خصوصيات، براي پيكر بندي اطلاعات استفاده      مي نمايد. اين فايل Weblogic.Properties نام دارد و مي توانيد آن را در دايركتوري     C :\ Weblogic پيدا نماييد. اين فايل شامل زوج مقدار نام مقدار براي پيكر بندي      داده ها است. اگر شما كلمه عبور سيستم خود را فراموش كرديد، مي توانيد به داخل فايل Weblogic.Properties نگاه كنيد و به دنبال Weblogic . Password .system بگرديد. اين همان كلمه عبور سيستم شما خواهد بود.

3-اكنون كه برنامه نصب شده است، بايد اجراي سرويس دهنده Weblogic  را شروع نماييد روشهاي زيادي براي شروع سرويس دهنده Weblogic  وجود دارند.

        ·          از طريق منوي Start :

   ·    يك فايل دسته اي پيش ساخته به نام Start Weblogic .Bat كه در دايركتوري    C :\ Weblogic قرار دارد را فراخواني نماييد. بر روي فايل دسته اي دوباره كليك نماييد يا نام آن را در مقابل اعلام DOS در دايركتوري C :\ Weblogic تايپ نماييد.

4-پس از اينكه سرويس دهنده Webloqic اجرا شد، يك خط فرمان DOS كه حاوي متني پيمايش متني متوقف شد، شما بايد كلمات “ Weblogic Server Started 1” را مشاهده نماييد.

 

ساختار دايركتوري سرويس دهنده Weblogic  

دايركتوري خانگي سرويس دهنده Weblogic  مسير C :\ Weblogic مي باشد ( يا دايركتوري ديگري كه برنامه را در آن نصب كرده ايد ). زير فهرستهاي زير در داخل دايركتوري C :\ Weblogic قرار دارند:

bin

classes

lib

license

myserver

پوشه bin شامل كتابخانه هاي اشتراكي و ليك هاي پويا مي باشد.

پوشه classes شامل كلاسهاي جاوايي مي باشد كه برنامه Wls آنها را مورد استفاده قرار مي دهد و ابزارهاي كمكي، مثل كنسول ( console) به شما اجازه مي دهند كه نمونه اي از WLS را كنترل نماييد.

 

نكته : نمونه Wls

هنگامي كه برنامه Wls را اجرا كرديد، در واقع نمونه اي از سرويس دهنده Weblogic  را اجرا كرده ايد. يك نمونه، يك اجراي خاص از برنامه WLS بر روي يك ماشين          مي باشد. ممكن است كه چندين نمونه از برنامه WLS بر روي يك ماشين وجود داشته باشد.

پوشه Lib شامل فايل Weblogicaux.jar مي باشد كه شامل تمامي كلاسهاي J2EE شركت SUN Microsystems  مي باشد. برنامه WLSنمي تواند بدون داشتن يك مجوز معتبر اجرا شود. دو نوع مجوز وجود دارد: يك كلاس جاوا يا يك فايل XML . هر كدام از اينها مي توانند تا زماني كه اعتبار دارند، مورد استفاده قرار گيرند. مجوز ها تعيين       مي نمايند كه چه تعداد سرويس گيرنده مي توانند با سرويس دهنده شما تماس بگيرند و نوع داريوهاي بانك اطلاعاتي كه شما استفاده مي نماييد و ديگر جنبه هاي برنامه WLS را مشخص مي نمايند. يك مجوز معتبر براي اجراي برنامه WLS و صفحات JSP بر روي CD-Rom اين نرم افزار وجود دارد.

دايركتوري My server ، دايركتوري مخصوص سرويس دهنده شما مي باشد. در داخل آن يك فايل Weblogic .Log وجود دارد كه شامل تمامي متنهايي است كه در هنگام اجراي برنامه WLS بر وري صفحه نمايش آنها را مشاهده مي نماييد. اگر در هنگام شروع به كار WLS خطايي اتفاق بيفتد، مي توانيد به سراغ اين فايل رفته و توضيحات داخل آن را مطالعه نماييد. پوشه Public-html در دايركتوري Myserver مكاني است كه فايلهاي HTML و JSP در داخل آن قرار داده مي شوند.

 

فايل Weblogic .properties

فايل Weblogic.Propertiesدر دايركتوري C :\ Weblogic واقع شده است. اين فايل مشخصات، كه از نوع سراسري ( global) مي باشد، براي تمامي نمونه هايس سرويس دهنده كه بر روي ماشين شما قرار دارند، معتبر خواهد بود اين فايل در هنگامي كه برنامه WLS شروع به كار مي نمايد و نه در زمانهاي ديگر، قابل خواندن ( read) مي باشد. اگر در فايل Weblogic.Properties خودتان تغييري را اعمال نماييد، بايد برنامه ELS را متوقف نموده و دوباره آن را راه اندازي مجدد نماييد. ليست زير برخي از بخشهاي فايل Weblogic.Properties را نمايش ميدهد.

1: # REQIRED: The system password  MUST be set in order to start the  

2:     # Weblogic Server . This password is case . Sensitive, at least 8

3:     # Characters

4:     # The Username for the privileged  user is ALWAYS “system”.

5:     # This Username and password also includes httpd access (see

6:     # HTTPD properties below).    

7:        Weblogic .password . system=Weblogic

8:

9:     # TCP/IP port number at which the Weblogic Server  

10:   # listens for connections 

11:   #Weblogic . system . listenport =7001

12:

13:   # Enable SSL

14:   # (default if property not defined is false )

15:   Weblogic .Security .ssl .enable=\

16:    true

17:   #

18:   #SSL listen port

19:   Weblogic . system. SSLlistenport=7002

 


تجزيه و تحليل: نقاط بسيار زيادي وجود دارد كه با آنها قطعات فايل Webhgic.propertiec ساخته مي شود. بسياري از خطوطي كه با علامت # شروع ميشوند، دلالت به اين دارند كه اين خطوط يك توضيح ( comment) مي باشند. خصوصيتي كه كلمه عبور سيستم را تنظيم مي نمايد، Weblogic. Password. System   مي باشد. در خط هفتم اين خصوصيت در بخشي از فايل Weblogic. Properties نشان داده شده است.

خط يازدهم خاصيتي براي پورت TCP/ IP كه سرويس دهنده به ان گوش فرا مي دهد، را تنظيم مي نمايد. پورت شنود پيش فرض، پورت 7001 مي باشد. بيشتر سرويس دهنده هاي وب پورت 80 گوش فرا مي دهند، بنابر اين اگر در حال برپايي برنامه WLS تحت عنوان يك سرويس دهنده وب مي باشيد، بايد اين خاصيت را برابر با 80 قرار دهيد.

خاصيت ديگري را كه مي توانيد تنظيم نماييد، زماني است كه مي خواهيد به          (Secure Sockets layer) SSL اجازه برقراري ارتباطات را بدهيد.

خطوط 15و16 به شما خصوصيتي كه اجازه ارتباطات SSL را مي دهد را نشان مي دهند. توجه كنيد كه در انتهاي خط پانزدهم يك backslash قرار دارد، كه اين علامت به زوج نام / مقدار اجازه مي دهد كه در خط بعدي نيز ادامه داشته باشد.

 

نكته :

از آنجايي كه يك علامت backslash استفاده مي شود تا به كدها اجازه ادامه پيدا كردن در خط بعدي داده شود، در اين صورت اين كدها را نمي توان در ساختارهاي دايركتوري به كار برد. براي نمايش يك ساختار دايركتوري از دو تا ( \\) backslash ، يا يك اسلش مستقيم ( \) استفاده مي شود.

اگر قادر به ايجاد ارتباطات SSL هستيد، در اين صورت نياز به تعيين پورتي داريد كه توسط آن WLS به درخواستهاي SSL گوش فرا ميدهد. خط نوزدهم فرمان، Weblogic. System.sslListenport ، را نمايش ميدهد كه به صورت پيش فرض عدد 7002 مي باشد.

از آنجايي كه فقط يك نمونه WLS را داريد، Weblogic. Properties موجود در دايركتوري C :\ Weblogic براي پيكربندي سرويس دهنده برنامه كاربردي استفاده خواهيد كرد.

همانگونه كه از ليست قبلي ديديد، اين فايل شامل اطلاعاتي از قبيل ليست پورتها، كلمه عبور سيستم و رجيسترهاي Servlet  مي باشد. فايل Weblogic. Properties همچنين شامل زوجهاي نام/ مقدار نيز مي باشد. در مورد اين فايل قوانين زير وجود دارد:

·                      علامت # نشان دهنده يك خط توضيح ( comment) ميباشد.

·                      نبايد هيچ فضاي خالي در بين زوج نام/ مقدار وجود داشته باشد.

·         از علامت ( \) backslash استفاده مي شود تا كدها در خط بعدي ادامه پيدا نمايد، بنابر اي بايد از يك اسلش مستقيم ( / ) يا دو ( \\) backslash در ساختار دايركتوري خود استفاده نماييد. يك مثال از ساختار دايركتوري به صورت C : Weblogic\ Myserver\classfiles, يا C :\\ Weblogic\\ Myserver\\ Classfiles خواهد بود.

 

ثبت كردن JSPServlet

سرويس دهنده Weblogic  از Servlet  ها به عنوان مبناي پياده سازي چگونگي كنترل كردن انواع مختلف فايلها استفاده مي نمايد. برنامه JSPServlet به عنوان كنترل كننده خدمات دهي به صفحات JSP استفاده مي كند. شما نياز به جستجو اين Servlet  در فايل Weblogic. Properties داريد. در بالاي فايل Weblogic. Properties ، عبارت زير را تايپ نماييد:

Webogic . httpd . register .*. JSP= Weblogic . Servlet .JSP Servlet

اين كار به سرويس دهنده Weblogic  اجازه مي دهد كه تمامي فايلهاي با پسوند JSP . توسط JSP Servlet  كنترل شود.

 

تنظيم آرگومانهاي اوليه JSP Servlet

JSP Servlet  داراي تعدادي آرگومان اوليه مي باشد. مثل كامپايل SJDK كه قبل از بررسي اينكه آيا صفحه JSP به روز رساني شده است يا خير، از آنها براي تعيين مدت زماني كه برنامه WLS  بايد منتظربماند ليست زير يكي از روشهاي مرسوم پيكر بندي JSP Servlet در داخل فايل  Weblogic. Properties مي باشد.

1:   Weblogic . http. InitArgs. *. Jsp=\

2:   pageCheckSeconds=1,\

3:   compileCommand=c:/jdk1.2.2/javac.exe ,\

4:   workingdir =/ Weblogic /Myserver/ classfiles,\

5:   keepgenerated = true , \

6:   verbose = true

 


تجزيه وتحليل: آرگومان Pagechecksecomds ، در خط دوم، قبل از يان كه تغييرات ايجاد شده در صفحه JSP را مورد بررسي قرار دهد، تعداد ثانيه هايي را كه برنامه Weblogic  بايد منتظر باقي بماند را تعيين مينمايد. مقدار صفر به معني اين است كه بررسي بايد هميشه صورت گيرد و مقداري 1- به اين معناست كه بررسي هيچ وقت نبايد صورت گيرد.

در خط سوم، آرگومان Compilecommand تنظيم مي شود، كه مسير كامل تعيين شده براي كامپايلر جاوا را نشان ميدهد. در اين مثال كامپايلر جاوا در مسير C:\JDK 1.2.2/ Javac.exe قرار داده شده است. برنامه WLS با JDK 1.1.* و JDK 1.2.* كار مي كند.

آرگومان Workingdir ، در خط چهارم، دايركتوري است كه برنامه WLS كدهاي Servlet  توليد شده را در آنجا نگهداري مي نمايد، كه در اين مثال، مسير Weblogic / Myserver/ classfiles مي باشد.

آرگومان Keepgenerated ، در خط پنجم، نگهداري كد Servlet  توليد شده را تعيين مي نمايد. مقداري را كه در اين آرگومان مي گيرد True و False مي باشد. مقدار True بيان مي كند كه شما قصد نگهداري فايلهاي با پسوند Java . توليد شده را داريد و مقدار False به برنامه WLS مي گويد كه شما قصد نداريد كه Servlet  با پسوند Java . را نگهداري نماييد. آرگومان Verbose ، در خط ششم، به برنامه WLS بيان مي نمايد كه اگر به خطاهايي برخورد نمود، به حالت توصيفي آنها را تبديل نمايد. اين خاصيت مي تواند مقدار True يا False را بگيرد. يك مقداري True به برنامه WLSمي گويد كه اطلاعات اشكال زدايي را در اختيار شما قرار دهد و مقدار False به برنامه WLS مي گويد كه اطلاعات اشكال زدايي را در اختيار شما قرار ندهد.

به كار بردن صفحه JSP بر روي سرويس دهنده WLS

هنگامي كه JSP Servlet  را رجيستر كرديد و آرگومان اوليه آن را تنظيم نموديد، آماده نوشتن كدهاي JSP و اجراي آن بر روي برنامه WLS مي باشيد. محتويات ليست زير را در داخل يك ويرايشگر متني تايپ كرده و آن را با پسوند jsp . ذخيره نماييد. آن را تحت عنوان orderForm.jsp ذخيره كنيد. شماره خطوط را تايپ نكنيد اين شماره ها تنها براي رجوع سريعتر به آن خطوط قرار داده شده اند.

به ياد داشته باشيد كه اين فايل را در ساختار دايركتوري                              C:/Weblogic /Myserver/public-html /MyJSPs / hour4  ذخيره نماييد. اين صفحه JSPيك جدول شامل ليستي از كالاها،‌قيمتهايشان و كيفيت آنها را ايجاد كرده و قيمت كل كالاها را به صورت پويا محاسبه مي نمايد.

1:     <HTML>

2:     <HEAD><TITLE>A Catalog order Form< / TITLE>< /HEAD>

3:     <BODY>

4:     <H1 ALIGN=”center”An order Form< /H1>

5:     <%!  String item [ ] = {“toaster” , “disktte”};

6:      double price [ ] = {19.99,  12.99,   1.99};

7:      int quantity [ ] = {2, 9, 24};

8:      %>

9:    <TABLEALIGN=”center”BGCOLOR=“yellow”BORDER=”1”WIDTH=”75%”>

10:  <TR><TD>Item< /TD>

11:  <TD>Price< / TD>

12:  <TD>Quantity< / TD>

13:  <TD>Total Price< /TD>

14:  < /TR>

15:  <% for  (int i=0;  i<3; i++) { %>

16:  <TR><TD><%= item[ i ] %>< / TD>

17:  <TD><%= Price [ i ] %>< /TD>

18:  <TD><%= quantity [ i ] %>< / TD>

19:  <TD><%= Price [ i ] * quantity [ i ] %>< /TD>

20:  < /TR>

21:  <% } //end  for loop %>

22:  < /TABLE>

23:  < / BODY>

24:  < / HTML>

 


مدل هاي برنامه هاي كاربردي چيستند ؟

يك مدل برنامه كاربردي، توصيفي از چگونگي ارتباط صفحات JSP با يكديگرمي باشد. مشخصه JSP1.1 مدلهاي بسياري را تعريف مي نمايدكه چگونگي ارتباط با صفحات JSP را مي توانند تشريح نمايند. مدل برنامه كاربردي مي تواند فقط يك صفحه JSP تنها باشد كه درخواست را پذيرفته و پاسخ را توليد مي نمايد، يا مي تواند يك صفحه JSP باشد كه خروجي يك صفحه JSP ديگر را به خود اضافه مي نمايد. در بخش زير، هر يك از مدلهاي برنامه هاي كاربردي، با جزئيات بيشتري توضيح داده ميشوند.

 

مدل ساده (SIMPLE MODEL)

مدل ساده شامل يك صفحه JSP تكي مي باشد. در اين مدل يك صفحه JSP وجود دارد كه درخواست را قبول كرده و پاسخ را توليد مينمايد. اين صفحه JSP با يك بانك اطلاعاتي يا سيستم موروثي در ارتباط مي باشد تا داده هاي مورد نياز براي اسناد پوياي خود را دريافت نمايد. اين مدل براي جاي گزيني اسكريپت CGL ، برنامه اي بود كه به زبان C++,C ، يا PERL به منظور توليد محتويات پوياي وب نوشته مي شد. تا كنون، تمامي مثالهاي اين تحقيق صفحات JSPاي برمبناي مدل ساده بودند، اگر چه هيچ كدامشان به بانك اطلاعاتي دسترسي نداشتند. دسترسي به بانكهاي اطلاعاتي يا سيستم موروثي، راه حلي است كه اين مدل براي برخي از محتويات پويايي كه مورد نياز         مي باشند، مهيا نموده است .

 

مدل N-Tier

مدل N-Tier منابع سمت سرويس دهنده را همانند يك Enterprise javabean اضافه   مي نمايند.

در اين مدل، صفحات JSP يا سيستمهاي پشت صحنه مثل بانكهاي اطلاعاتي يا سيستمهاي موروثي، بوسيله Enterprise javabean در ارتباط مي باشند. از آنجايي كه EJB ها دسترسي به منابع پشت صحنه را كنترل مي كنند، اين مدل از مدل ساده آسان تر تغيير انداره مي دهد تا صفحات JSP منابعشان را مديريت نمايد.

نكته:

مشخصه EJB ، چگونگي نوشتن كامپوننت هايي را در زبان برنامه نويسي جاوا تشريح    مي نمايد. مشخصه ( Specification) ، چگونگي ارتباط كپوننت ها با يكديگر را تعريف مي نمايد. آنها منطق كاري و داده هاي كاري را نمايش ميدهند.

مزيت اين مدل انعطاف پذيري آن مي باشد، زيرا EJBها منابع تان را مديريت مي نمايند. همچنين، EJB ها مي توانند به وسيله تعداد زيادي از صفحات JSP براي عمليات مرسوم مورد استفاده قرار گيرند. بنابر اين مجبور نخواهيد بود كه كدهاي مرسوم تكراري را در داخل تمامي صفحات JSP خود نگهداري نماييد. يكي از معايب اين مدل اين است كه شما هنوز هم تنها از يك صفحه JSP براي انجام كارهايتان استفاده مي نماييد.

 

 

مدل LOOSELY COUPLED

مدل Loosely Coupled به صفحات JSP اجازه مي دهد كه در سيستم هاي راه دور، همانند يك ارتباط PEER-to-Peer يا ارتباط از نوع CLIENT/ Server به فعاليت بپردازند.

اين مدل، دو برنامه كاربردي را نشان مي دهد كه مي توانند بر روي يك اينترانت مشابه، يا ارتباط يك Extranet يا اينترنت عمل نمايند.

نكته: Extranet

Extranet يك شركت اينترانتي مي باشد كه به مشتريان اجازه مي دهد به برنامه كاربردي معيني در داخل اينترانت دسترسي پيدا نمايند.

هر برنامه كاربردي JSP از تغييرات ايجاد شده در برنامه كاربردي ديگر JSP با ارتباط برقرار كردن بر روي پروتكل http با استفاده از زبانهاي HTML و XML ايزوله شده است. يك مثال از مدل Loosely Coupled برنامه كاربردي زنجيره تقاضا بين فروشندگان مي باشد. يك مثال از اين مورد زماني است كه صفحه JSP ي X  ، بر روي اينترانت Y ،‌ با صفحه JSP ي Z،‌بر روي اينترانت Q ،‌ با استفاده از پروتكل ارتباطي Http ارتباط برقرار مي نمايد.

 

مدل درج درخواستها ( Including Requests)

گاهي اوقات توضيح كارها درميان چندين صفحه JSP مفيد مي باشد. يك صفحه JSP ميتواند مسئول درخواست و پاسخ باشد، اما خروجي به صفحات JSP ديگر اضافه         مي شود. اين كار با استفاده از تگ Include  صورت مي گيرد. ليست زير يك صفحه JSP مي باشد كه خروجي خود را به صفحات JSP ديگر ملحق مي نمايد، كه كدهاي مربوطه در ليستهاي4و5 نشان داده شده است.

1:     <HTML>  

2:     <HEAD><TITLE>Example of The include  Action < / TITLE>< /HEAD>

3:     <BODY>

4:     <CENTER>

5:     <H2>Behold  The Powers of 2< /H2>

6:     <BR>

7:     Include the Second File:

8:     <jsp:include page= “OrderForm.jsp”/>

9:     < /BODY>

10:   < /HTML>

 

ليست 4:

1:     <HTML>

2:     <HEAD><TITLE>Powers of  2< / TITLE>< / HEAD>

3:     <BODY>

4:     <CENTER>

5:     <H2>Behold The powers  of 2< /H2>

6:     < /CENTER>

7:     <TABLE  BORDER=”2” ALIGN=”center”>

8:     <TH>Exponent< /TH><TH>2^Exponent< /TH>

9:     <% for (int i=0; i<10; i++)  {%>

10:   <TR><TD><%= i%>< /TD>

11:   <TD><%=Math . pow(2, i)%>< /TD>

12:   < /TR>

13:   <%  } // end for  loop %>

14:   < / TABLE>

15:   < / BODY>

16:   < /HTML>

 


ليست 5:

1:      <HTML>

2:      <HEAD><TITLE> A Catalog order Form < /H1>

3:      <BODY>

4:      <H1  Align = “center” >An order Form < /H1>

5:      <% ! String item [ ] = {“toaster” , “CD” , “diskette”};

6:      double price [ ] = { 19.99, 12.99 , 1.99 };

7:      int quantity [ ] = {2, 9, 24 } ;

8:      %>

9: <TABLE ALIGN= “center” BGCOLOR=”yellow” BORDER=”1” WIDTH=”75%”>

10:    <TR><TD>Item< /TD>

11:    <TD>Price< / TD>

12:    <TD>Quantity< / TD>

13:    <TD>Total Price< /TD>

14:    < / TR>

15:    <%  for ( int i=0; i<3; i++) { %>

16:    <TR><TD><%= item[ i ] %>< /TD>

17:    <TD><%= Price [ i ] %>< / TD>

18:    <TD><%= quantity [ i ] %>< /TD>

19:    <TD><%= Price[ i ] * quantity [ i ] %> < / TD>

20:    < /TR>

21:    <%  } //end   for   loop %>

22:    < / TABLE>

23:

24:   < /BODY>

25:   < /HTML>

 


مدل ارسال درخواستها (Forwarding Requests)

روش ديگر تفكيك كار در بين صفحات JSP ، مدل ارسال درخواستها مي باشد كه به آن مدل هدايت درخواستها ( Redirecting Requests) نيز مي گويند.

در اين مدل، صفحات JSP همانند زنجيره هايي با ارسال آبجكتهاي Request (درخواست) و response (پاسخ) به يكديگر متصل مي باشند. عمل ارسال درخواستها با استفاده از تگ forward صورت مي گيرد. اولين صفحه JSP درخواست را پذيرفته و آخرين صفحه JSP در داخل زنجيره مسئول فرستادن پاسخ به كاربر مي باشد و صفحات JSP اي كه در بين صفحه JSP اول و صفحه JSP آخر قرار دارند. مي توانند برخي از منطق كاري را كنترل نمايند.

 

نكته:

تابع اعداد فيبوناچي يك تابع بازگشتي ميباشد كه براي تخمين زدن نمونه هاي توليدي، به كار رفته است. اين يك بازي سرگرم كننده با اعداد مي باشد.

ليست زير يك صفحه JSP درخواست را به يكي از دو صفحه JSP براساس يك عدد تصادفي ارسال مي نمايد .

1:      <HTML>

2:      <HEAD><TITLE> Example of  The forward  Action < / TITLE> < /HEAD>

3:      <BODY>

4:      <% if  (Math . random ( )  > .5) { %>

5:      < jsp: forward page = “FibbonacciComputation . jsp” />

6:      <%   } else  { %>

7:      <jsp: forward page= “FactorialComputation . jsp” />

8:      <%   }  %>

9:       < /BODY>

10:     < /HTML>

 


ليست زير يك نمونه JSP كه سري اعداد فينوناچي را براي اعداد 19-0 محاسبه            مي نمايد.

1:     <HTML>

2:     <HEAD><TITLE>Calculating the Fibonacci Numbers< / TITLE>< / HEAD>

3:     <BODY BGCOLOR= “navy” TEXT= “yellow”>

4:     <% ! int [ ] fib; %>

5:     <CENTER>

6:     <H1>Calculating the Fibonacci Number of  0-19<H1>

7:     <br>

8:      the Fibonacci  number of  0 is 0

9:     <BR>

10:    the Fibonacci number of 1 is 1

11:    <BR>

12:    <% fib = new int [ 20 ] ;

13:    fib [ 0 ] = 0;

14:    fib [ 1 ]= 1;

15:   for ( int i=2; i<20; i++){

16:   %>

17:  The Fibonacci number of <%= i%> is <% fib[ i ]= fib [i-1] + fib[i-2];  %>

18:  <%= fib [ i ] %>

19:  <br>

20:  <% }%>

21:  < / CENTER>

22:  < / BODY>

23: < / HTML>

 


صفحه ForwardActionExample.jsp يك عدد تصادفي را تعيين نموده و سپس آن را به يكي از صفحات JSP ديگر ارسال مي نمايد. يكي از معايب اين مدل، دياگرام جريان كار صفحات JSP آن مي باشد. از آنجايي كه JSP اي مسئول مديريت بر كار صفحات ديگر نميباشد، روند جريان كار در برنامه هاي كاربردي بزرگ، بسيار پيچيده مي شود.

 

ليست زير يك صفحهJSP كه سري اعداد فيبوناچي براي 0-19 را محاسبه مي كند.

1:     <HTML>

2:     <HEAD><TITLE>Calculating the Factorial Numbers</TITLE>< /HEAD>

3:     <BODY BGCOLOR=”purple” TEXT=”white”>

4:     <CENTER>

5:     <H1>Calculating the Factorial Numbers for 0-19< /H1>

6:     <BR>

7:    

8:     <% !  long Numbers [ ];

9:     long fact [ ] ;

10:   int i, j ;

11:    %>

12:    <%

13:    numbers = new long [ 20 ] ;

14:    fact = new long [ 20];

15:   numbers [0] = 1;

16:   numbers [1] =1;

17:   for  (i=2; i<20; i++){

18:   numbers [i] = i;

19:   }

20:   for (i=2; i<20; i++){

21:   fact [i] = 1;

22:   }

23:   for (i=2; i<20; i++){

24:  for (i=0; j<=i ; i++){

25:  fact [i] = 1;

26:   }

27:    }

28:

29:   for (i=2; i<20; i++){

30:   out. Print(“the factorial of” + i + “is “ + fact [ i ] + “<BR>”);

31:   }

32:   %>

33:   < / CENTER>

34:   < / BODY>

35:   < / HTML>

 

 


استفاده از تگ ها و مقادير خصوصيات آنها

همه چيز در داخل سورس كد JSPيا به صورت يك تگ كلي، يا به صورت تگهاي زوجي، يا متن ساده مي باشد. تگ هاي داراي خصوصياتي مي باشند كه رفتار آنها را پيكر بندي مي نمايند. تگها مي توانند يا HTML يا تگهاي JSP باشند.

 

شناخت تگ هاي تكي و زوجي

همانند تگهاي HTML ، تگهاي JSP هم مي توانند به صورت تكي و زوجي به كار برده شوند. يك مثال از تگي كه داراي هر دو نسخه مي باشد تگ < JSP:Usebean>        مي باشد. به عنوان يك تگ تكي، اين تگ مي تواند يك كلاس جاوا را نمونه سازي نمايد و نامي را به آن انتساب دهد. در اينجا مثالي از استفاده آن به صورت تكي            مي آوريم:

<jsp:Usebean name= “Myclass” class=”Sinpleclass” Scope=”page” / >

به عنوان يك تگ تكي، < JSP:Usebean> در نمونه سازي كلاس يا موفق مي شود يا نه. اگر تگ در نمونه سازي كلاس باشكست مواجه شود و نامي براي ارجاع به نمونه مورد استفاده قرار گيرد، اين نام درست مانند يك اشاره گر null (خالي) مي باشد كه دور انداخته شده است. نسخه زوج اين تگ، به شما اجازه مي دهد تا كدهاي وابسته را در نمونه كلاس جاوايي كه با موفقيت ساخته شده است، اجرا نماييد. در اينجا يك نسخه زوج از تگ < JSP:Usebean> وجود دارد:

 <jsp:Usebean…>

…Some Html or JSP Code …

<jsp:Usebean />

بسياري  ديگر از تگهاي Html و JSP داراي پيكربندي مشابهي مي باشند و مي توانيد آنها را به صورت تگ تكي يا زوجي به همراه يك تگ انتهايي به كار ببريد. هنگامي كه از تگ زوجي استفاده مي نماييد، به اولين تگ، اصطلاحاً تگ آغازين (begin) وبه تگ دوم، تگ انتهايي (end) مي گويند.

 

پيكربندي تگ ها به همراه خصوصيات آنها

تگه داراي خصوصياتي ميباشند كه رفتار آنها را پيكر بندي مي نمايند. براي نمونه، تگ anchor زبان Html براي تعريف فراپيوندها به كار ميرود وداراي خصوصيتي به نام HREF مي باشد كه آدرس URL ي كه فرا پيوند به ان اشاره مي كند را تعريف          مي نمايد. در زير مثالي از تعريف فرا پيوندي كه به آدرس www.bea.com  اشاره        مي نمايد، نشان داده شده است: .

<A HREF=”http:// www.bea.com” >Click Here</A>

هنگامي كه كار بر روي فرا پيوند كليك مي نمايد، مرورگر صفحه اي كه به وسيله خاصيت HREF به آن اشاره شده است را بار گذاري مي نمايد.

تگ هاي JSP داراي تعداد زيادي خصوصيت براي پيكر بندي مي باشند. مثال اخير        < JSP:Usebean>  از خصوصيات Class, name و Scope استفاده مي نمايد كه در اينجا دوباره آورده شده است     

<jsp:Usebean name= “Myclass” class=”Sinple.class” Scope=”page” / >

خصوصيات، تگ usebean را به گونه اي پيكر بندي مي نمايند تا كلاسي به نام Simple.class را با نام Myclass نمونه سازي مي نمايد و سپس هنگامي كه صفحه JSP، ساخت آن صفحه را به انجام رساند، اين نمونه را ازبين ببرد.

 

افزودن توضيحات به كدها

توضيحات به جملات و عباراتي گفته مي شوند كه توسط برنامه نويسان در سورس كدهاي صفحه JSP به عنوان سند قرار داده مي شود. توضيحات براي بيان عملي كه توسط كدها انجام مي گيرد، مفيد مي باشد. توضيحات مخصوصاً هنگامي كه كدها را بعد از يك مدت طولاني دوباره مورد بازديد مجدد قرار مي دهيد، يا اگر توسط توسعه    دهنده گان ديگر مورد استفاده مجدد قرار مي گيرند، مفيد مي باشند. توضيحات بر روي آن چيزي كه بر وري مرورگر نمايش داده مي شود، تاثيري ندارند، اما به كاربر كمك   مي كنند تا سورس كدهاي HTML و JSP كه صفحات را توليد مي نمايند را درك كنند. سه نوع از توضيحات وجود دارند: HTML ، JSP  و جاوا.

 

افزودن توضيحات HTML

توضيحات HTML با استفاده از تگ هاي - - > و< !- -  ساخته مي شوند. هنگامي كه اين تگ ها در كدهاي JSP ظاهر ميشوند، آنها بدون تغيير به پاسخ صفحه JSP اضافه         مي شوند و در كد HTML نتيجه كه براي مرورگر فرستاده ميشود، به همان صورت ظاهر مي شوند. مرورگر مسئول ناديده گرفتن توضيحات مي باشد. توضيحات مي توانند محتويات پويايي را در داخل خودشان داشته باشند كه به سادگي به وسيله صفحه jsp ناديده گرفته نمي شوند. عبارات JSP به همراه توضيح HTML ارزش يابي خواهد شد ودر پاسخ مرورگر درج مي شوند. دراينجا مثال ساده اي از توضيح HTML وجود دارد و مثالي ديگر كه شامل يك عبارت JSP مي باشد:

< !- - This is a simple comment - - >

< !- - 2 +2 = <%= 2+2%> - ->

نتيجه كد HTML به صورت زير خواهدبود:

< This  is a simple comment - - >

< ! - - 2+2= 4 - ->

هر دوي توضيحات توسط مرورگر ناديده گرفته خواهد شد.

 

افزودن توضيحات JSP

توضيحات HTML براي مستند سازي محتويات HTML كه به وسيله كدهاي JSP توليد مي شوند، مورد استفاده قرار مي گيرند. توضيحات JSP براي مستند سازي كدهاي JSP به كار ميروند. توضيحات JSP در پاسخ برگشتي به مرورگر وجود ندارند آنها با استفاده از تگ هاي - -%> و <%- - ساخته مي شوند، مثال ساده زير نمونه از اين نوع توضيحات مي باشد:

<%- - This comment won’t go to the browser - - %>

 بر خلاف توضيحات HTML ، توضيحات JSP به وسيله JSP ناديده گرفته ميشوند ودر سورس كد صفحه وب، بر روي مرورگر ظاهر نمي شوند.

 

افزودن توضيحات Java

توضيحات به منظور توصيف كردن كدهاي جاوايي كه در صفحه JSP به كار برده       مي شوند، مورد استفاده قرار مي گيرند. توضيحات جاوايي يك خطي، با استفاده از علامت \\ نشان داده مي شوند. جفت علامت */ و /* مي توانند بخشي از كدهاي جاوا را توضيح دهند.

در اينجا مثالي ساده استفاده از علامتهاي  */ و /*  براي توضيح يك تابع و علامت \\ براي توضيح يكي از دو مقدار ممكني كه متغير discount مي تواند داشته باشد، آورده شده است.

/*

* This function returs

* the Value of the discount

double getDiscount( ) {

 double  discount = 20;

 // double  discount = 30;

return discount = ;

}

علامتهاي (*) ستاره اي كه درجلوي كاراكترهاي قرار داده شده است، صرفاً براي زيبايي مي باشند.

 

نوشتن كدهاي HTML

معمولاً توسعه دهندگان صفحات وب از نرم افزار خاصي براي ايجاد صفحات وب با زبان HTML استاندارد استفاده مي نمايند. برخي از اين ابزارها از تكنولوژي ديگري كه براي گسترش زبان HTML ساخته شده اند استفاده مي نمايند. و برخي نيز اپلت هاي كدهاي JSP و plug-in را پشتيباني مي نمايد.امابخش اعظم كار تعيين قسمتي است كه شامل بخش ايستاي صفحات وب ميباشد وتعيين بخشي است كه شامل صفحات پويا ميباشد.بخش پويا بعداً به وسيله درج تگهاي JSP پياده سازي ميشود.

 

شناخت اجزاي تگ هاي JSP

تگ هاي  JSP به توسعه دهندگان صفحات وب اجازه مي دهند كه با استفاده از منطق برنامه نويسي به صورت پويا صفحاتي را توليد نمايند. تگ هاي JSP به دو صورت به كار برده مي شوند: آنها مي توانند نسخه هاي گوناگوني از تگ هاي زوجي %> و <% يا   تگ هاي معادل زبان Xml يعني <jsp:tagid> و <jsp:tagid> را ايجاد نمايند.

نكته:

تمامي تگ هاي JSP داراي يك نسخه XML و نسخه معادل كوتاه تري مي باشند. نسخه XML به صفحات JSP اجازه مي دهد كه با XML استاندارد صنعتي به سرعت سازگاري پيدا نمايند. اگر چه، تا زماني كه ابزارهايي در دسترس مي باشد كه به سادگي با استفاده از XML مي توانيد صفحات JSP را بسازيد، استفاده از خود دستور XML كاري بي فايده مي باشد. در اين مدت ،صفحات JSP به وسيله دست بهتر توسعه پيدا كرده اند.

 

استفاده از تگهاي توصيفي JSP

عبارتهاي توصيفي، متغيرها ومتدهايي را فهرست مي نمايند كه در داخل كدهاي JSP در دسترس قرار دارند. توصيفات JSP ، با استفاده از دستور زبان زير ايجاد مي شوند:

<% !

 declaration- statement (s)

%>

يا معادل زبان XML آن به صورت:

<jsp: declaration>

declaration-statement (s)

<jsp: declaration>

ليست زير مثالي از يك صفحه JSP مي باشد كه دو متغير VariableA) وVariableB ( و دو مقدار (methodZ( ), MethodX( )) را تعريف مي نمايد.

1:      <HTML><HEAD><TITLE>< / TITLE>< / HEAD><BODY

2:      <% String VeriableA = “ This is a String Variable”;

3:      int VariableB = 123;

4:      int methodx ( int newInteger){

5:      VariableB = newInteger;

6:     return VariableA;

7:       }

8:      String methodZ (String new String){

9:      VariableA = new String;

10:    return VariableA;

11:     }

12:   %>

13:    < /BODY>< / HTML>

 


تجزيه و تحليل:

اين صفحه JSP يك متغير رشته اي به نام VariableA را تعريف نموده ومقدار آن را برابربا رشته”This is a string Variable” قرار ميدهد.سپس، يك متغير عددي به نام VariableB را تعريف كرده و مقدار اوليه آن را با 123 قرار ميدهد . خطوط 6-4 متدي به نام  methodX ( ) را تعريف مينمايند ، كه به عنوان آرگومان يك عدد را گرفته ومقدار متغير VariableB را اصلاح نموده و مقدار جديدرا برمي گرداند. خطوط 11-8 متدي به نام VariableZ ( ) را تعريف مي نمايند،كه يك رشته را به عنوان آرگومان گرفته و مقدار متغير VariableA را تغيير داده و مقدار جديد را بر مي گرداند.

هنگامي كه صفحه JSP بوسيله مرورگر درخواست شد، هيچ خروجي اي را توليد       نمي كند. متغيرها و متدها تا زماني كه از طريق يك تگ expression يا يك تگ scriptlet زبان JSP مورد ارجاع واقع نشوند، مورد ارزيابي قرار نمي گيرند. بخش زير اين تگ ها را معرفي مي نمايند.

 

استفاده از تگ هاي Expression زبان JSP

عبارتها، تركيبات ثابتي هستند كه با استفاده از عملگرها به متغيرها و متدها ارجاع           مي شوند. عبارتها عناصر منحصر به فردي كه در عبارت وجود دارند را به يك مقدار واحد، ارزشيابي مي نمايند و سپس به وسيله عملگرها آنها را با يكديگر تركيب مي نمايند. عبارات مي تواند در داخل Scriptlet هاي زبان JSP يا در يك تگ Expression اين زبان قرار گيرند. اگر آنها در داخل Scriptlet باشند، معمولاً بخشي از يك عبارت جايگزيني يا متد فراخواني مي باشند. در اين نمونه، عبارت ارزشيابي شده است وسپس به متغيرهاي ديگر تخصيص داده مي شوند يا در داخل متدهايي منتقل مي شود. وقتي آنها در داخل تگ ها قرار مي گيرند، عبارتها ارزشيابي شده و نتايجشان به يك رشته نمايشي تبديل مي شود و اين رشته به وسيله زبان JSP به كدهاي HTML اضافه مي شود.

دستور زبان تعريف يك تگ Expression زبان JSP به صورت زير است:

<%= Expression %>

يا كد معادل XML آن به صورت زير مي باشد:

<jsp: Expression> Expression < / jsp: Expression>

يك مثال از يك عبارت ساده بر مبناي متغيري كه در مثال قبلي تعريف شده است، به يك متغير تعريف شده به صورت زير ارجاع مي نمايد:

<%= VariableA %>

هنگامي كه JSP اجرا ميشود، عبارت ”This is a string Variable” ارزشيابي مي شود و در بخشي از كد HTML نتيجه قرار مي گيرد. اگر متغير چيز ديگري غير از متغير رشته اي باشد، آن متغير به صورت خودكار به يك رشته نمايشي تبديل ميشود و در كد HTML درج مي شود.

 

استفاده از تگ هاي Scriptlet زبان JSP

Scriptlet ها به توسعه دهندگان وب اجازه مي دهند كه كدهاي جاوا را در صفحات JSP خودشان تعبيه نمايند. معناي اين حرف اين است كه توسعه دهندگان وب مي توانند از مزاياي زبان برنامه نويسي قدرتمند جاوا براي ساخت محتويات پويا استفاده نمايند. Scriptlet ها داراي چندين ساختار كنترل جريان كار مانند ساختارهاي كنترلي شرطي و ساختارهاي حلقه اي مي باشند.
 
استفاده از ساختار كنترلي شرطي
ساختارهاي شرطي به توسعه دهندگان اجازه مي دهند كه براساس شرايط ويژه، در صفحات وب تصميماتي را برنامه ريزي نمايند تا از ميان چندين امكان بتوانند يكي را انتخاب نمايند. براي نمونه، يك صفحه JSP مي تواند شماره شناسايي كاربر و كلمه رمز وي را در سايت وب رجيستر نمايد. كنترل شرطي در Scriptlet  ها با استفاده از عبارتهاي Switch و If زبان برنامه نويسي مي شوند. كدهاي JSP موجود در ليست زير مثالي از استفاده از عبارت If براي بررسي مدارك يك كاربر خيالي را نشان مي دهند و تصميم مي گيرند كه آيا كاربر مورد تائيد مي باشد و يا از او درخواست log in نمايند.
1:      <HTML><HEAD><TITLE>< / TITLE>< / HEAD><BODY>
2:      <% ! boolean isPasswordAnyGood ( String Password ){
3:       return false; // really go to database to find out
4:      }
5:      %>
6:      <%   if (isPasswordAnyGood (“Somephoneypassword”)){
7:      %>     < H1>Welcome < / H1>
8:      <%    } else {
9:      %>     <H1> Please Login < /H1>
10:    <%   }
11:    %>
12:    < /BODY>< /HTML>
 
استفاده از ساختار كنترلي تكرار شونده

ساختار كنترلي تكرار شونده به توسعه دهندگان اجازه مي دهند تا به صورت متوالي مجموعه اي از داده ها يا آبجكت ها را كنترل نمايند. براي مثال، يك صفحه JSP         مي تواند در سبد خريد كالاها حركت نموده و مبلغ كل كالاهاي خريداري شده را با جمع كردن قيمت تك تك كالاها محاسبه نمايد.

ليست زير يك صفحه JSP مي باشد كه ليستي از كالاها خيالي را در سبد خريد online نشان مي دهد و مبلغ كل خريد را محاسبه مي نمايد.

1:     <HTML><HEAD><TITLE>< / TITLE>< / HEAD><BODY>

2:     <% ! String itemName  = [“Item 1” , “Item 2”, “ Item 3”];

3:     double itemCost             =[ 123.00,      234.50,     345.50   ];  

4:     double totalCost      = 0.0;

5:     %>

6:     <UL>

7:     <%  for (int   j=0; j<itemName. Length; j++){

8:     %>  <LI> Item = <%= itemName [ j ] %> , $<%=itemCost [ j ]%>

9:     <%   totalCost = totalCost + itemCost [ j ] %>

10:       }

11:   %>

12:   < / UL>

13:   Total = <%= totalCost%>

14:   < / BODY>< /HTML>

 


تجزيه و تحليل: خطوط دوم و سوم دو آرايه را تعريف مي كنند كه شامل اطلاعات هر يك از كالاها، مثل item Name و itemCost مي باشند. خط چهارم متغيري به نام totalCost را تعريف و مقدار دهي اوليه مي نمايد. خط هفتم از يك حلقه for براي عبور از داخل كالاها موجود در آرايه ها براي چاپ كردن نام كالاها و قيمتهايشان بر روي خروجي در خط هشتم استفاده مي نمايد. در خط نهم قيمت كل سبد خريد محاسبه شده و در خط سيزدهم اين مقدار چاپ مي شود.

 

تعريف تگ هاي دستوري زبان JSP

تگ هاي Directive زبان JSP براي فرمان دادن به صفحات JSP براي انجام عمليات معيني يا رفتار كردن به شيوه خاصي به كار مي روند. براي نمونه،‌دستور زير تمامي   كلاس هاي داخل بسته بندي

Com . macmillan . jspIn24

را به داخل صفحه وارد مي نمايد:

< % @ page import= “Com . macmillan . jspIn24 . *” %>

سه نوع تگ Directive وجود دارند include ,page- و –taglib كه در ساعات بعدي مورد بررسي قرار خواهند گرفت.

 

تگ هاي Action زبان JSP

تگ هاي Action براي بسط دادن عملكردهاي صفحات JSP  مورد استفاده قرار          مي گيرند. تگ هاي وجود دارند كه به صفحات JSP اجازه كارهايي مثل استفاده از آبجكت هايي كه در زبان جاوا ايجاد شده اند، الحاق به صفحات ديگر JSP ، ارسال درخواستها به صفحات ديگر JSP و ارتباط با يك plugin جاوا را مي دهند. در كل شش تگ action در زبان JSP وجود دارند: forward, include, getProperty, setproperty, useBean و Plugin .

براي مثال، تگ Action زير يك JavaBean كه به وسيله كلاس ShoppingCart در داخل بسته com. Macmillan. IsjIn24. Hour16 پياده سازي شده است، را نمونه سازي مي نمايد و آن را با نام ShoppingCart مربوط مي سازد:

< jsp:useBean name = “shoppingcart”

class = “com. Macmillan. JspIn24. Hour16. Shoppingcart”>

كد JSP سپس مي تواند براي فراخواني متدهاي موجود در نمونه آبجكت از شناسه ShoppingCart استفاده نمايد.

 

استفاده از آبجكت پيش ساخته زبان JSP

صفحات JSP داراي چندين آبجكت مي باشند كه عملكرد را براي پردازش يك درخواست از مرورگر را مهيا مي نمايند و سپس يك پاسخ پويا را توليد مي كنند. اين آبجكت ها عبارتند از:

request                    out

response                  pagecontext

session                    application

cinfig                      page

آشنايي با آبجكت request

صفحات JSP توسط آبجكت request به يك درخواست از مرورگر دسترسي مستقيم پيدا مي نمايند. آبجكت request رابط HttpServletRequest را پياده سازي مي نمايد، كه درخواست از يك مرورگر را از طريق تعريف مجموعه اي از متدها نمايش مي دهد. متدهاي آبجكت request به برنامه نويسان زبان جاوا، دسترسي به اطلاعات در مورد كاربر، هدرهاي Http ، ماشين سرويس گيرنده، اطلاعات كوكي، آدرس URL درخواست و پارامترها را مي دهند.

 

شناخت آبجكت response

صفحات JSP به آبجكت response دسترسي مستقيم دارند تا محتويات پويايي را به عنوان كدهاي HTML توليد كنند. آبجكت response رابط HttpServlet Response را پياده مي نمايد، كه مسئول نمايش صفحه JSP در پاسخ به درخواست مرورگر مي باشد. متدهاي آبجكت response به برنامه نويسان صفحات JSP اجازه تنظيم كردن هدرهاي Http و تنظيم كوكي ها را مي دهند واطلاعات جلسه را در داخل آدرس Url كد گذاري مي كنند.

شناخت آبجكت session

پروتكل HTTP يك پروتكل ناپايدار مي باشد و بنابر اين صفحه JSP قادر در به خاطر آوردن هيچ مطلبي در مورد يك سرويس گيرنده خاص نخواهد بود. اگرچه، آبجكت session به همراه كوكي به صفحات JSP اجازه مي دهند كه درخواست منحصر به فرد يك سرويس گيرنده كه به صورت اختصاصي مي باشد را به كار بگيرند. آبجكت session آبجكت HttpSession را پياده سازي مي نمايد، كه ازطريق آبجكت request قابل دسترسي ميباشد. متدهاي نامشان در چندين محاوره با مرورگرهاي سرويس     گيرنده ها، بازيابي شوند.

شناخت آبجكت Config

آبجكت config رابط javax. Servlet. ServletConfig  را پياده سازي مي نمايد. آبجكت config اجازه دسترسي به پيكربندي داده ها براي مقدار دهي اوليه صفحات JSP را ميدهد.

 

مروري بر ديگر آبجكت هاي پيش ساخته JSP

ديگر آبجكت هايي كه در يك صفحه JSP در دسترسي مي باشند page, application, pagecontext, out  است. در قسمت زير، توضيح خلاصه اي در مورد هر يك از آبجكت داده مي شود.

آبجكت out نمونه اي از كلاس javax.servlet.jsp. JspWriter  مي باشد و متدهايي را براي توليد خروجي بر روي مرورگر، به همان خوبي متدهايي كه رفتار خروجي توليد شده را كنترل مي كنند، مهيا مي نمايد.

آبجكت pagecontext نمونه از كلاس javax.servlet. jsp. Pagecontext ميباشد. اين كلاس دسترسي به خصوصيات چندين صفحه را مي دهد و به شما اجازه مي دهد تا آبجكت request را به كامپوننت هاي برنامه هاي كاربردي ديگر ارسال يا از آنها دريافت نماييد.

آبجكت APPlication رابط javax.servlet. jsp. Pagecontext  را براي ارتباط با محفظه Servlet  پياده سازي مي نمايد. محفظه Servlet  چرخه عمر و اطلاعات تمامي      Servlet ها را مديريت مي نمايد.

آبجكت page نمونه توليد شده Servlet  از صفحه JSP كامپايل شده را نمايش مي دهد. اين آبجكت اساساً معادل كلمه كليدي This in Jave مي باشد.

 

شناخت صفحات JSP و Javabean ها

javaBean ها كلاس هاي جاوايي مي باشند كه خصلت javaBean  را رعايت مي نمايند. اين خصلت راهنماييهايي براي توسعه كدهاي جاوايي كه به عنوان بلوك هايي از     ماژول هاي عملياتي در سناريوهاي گوناگون مي باشند را ميدهند.

 

مشخصه JavaBean

كلاس جاوايي كه JavaBean ها را پياده سازي مي نمايند معمولاً داراي تعدادي متغيرها به عنوان خصوصيات javaBean تلقي مي شوند. براي هر يك از متغيرها، مشخصه javaBean  مورد نياز مي باشد،‌ كه توسعه دهندگان بايد با استفاده از متدهاي get و Set مقادير متغيرها را تنظيم نموده و يا مقادير متغير را به دست آورند. اسامي متدها از اسم متغير مشتق شده است. براي نمونه، اگر نام متغيرها abc است، نام متدها SetAbc( ) و getAbc(  ) خواهد بود. به طرز نوشتن حرف اول نام متغير در اسم متد كه با حرف بزرگ نوشته شده است، توجه نماييد.

 

نمونه سازي يك javaBean

تگ action زبان JSP ، <jsp. UseBean>، براي نمونه سازي javaBean به كار برده   مي شود. تگ زير يك javaBean  ازكلاس Circle1 را تنظيم كرده و يا به دست ميآورد.

 < jsp:useBean name = “Criclel”

class = “com. Macmillan. JspIn24. Hour06. Cricle;

در اينجا مثالي از پياده سازي يك JavaBean  آورده شده است:

package com. Macmillan. JspIn24. Hour06;

public class Circle {

double radius;

double area;

public Void  setRadius ( double  r) {radius = r;}

public double  getRadius ( ) {return  radius;}

public Void  setarea ( double  a) {area = a;} 

public double  getarea ( ) {return area;}

}

توجه نماييد كه javaBean به نام circle دو متغير به نامها radius و area را تعريف      مي كند وسپس متدهاي set و get را براي هر يك از اين متغيرها تعريف مي نمايد. هنگامي كه JavaBean نمونه سازي شده و به آن نامي اختصاص داده مي شود، از اين نام براي فراخواني نمونه ساخته شده استفاده نمود. اگر كلاس از مشخصه JavaBean تبعيت نمايد. مقادير متغيرها مي توانند تنظيم شده و با استفاده از تگ هاي زبان JSPي SetProperty و getProperty در دسترس قرار گيرند.

 

استفاده از تگ هاي خصوصيت Set و get

با پيروي از قوانين نامگذاري JavaBean ها ، با استفاده از خصوصيات Set و get،‌ صفحات JSP مي توانند تگ هاي به خصوصي را براي اصلاح و دسترسي به خصوصيات JavaBean ها مهيا نمايند. تگ <jsp:setProperty> براي تنظيم مقدار يك خصوصيت و تگ  <jsp:getProperty> براي گرفتن مقدار يك خصوصيت مورد استفاده قرار مي گيرند. تگ ها  مقاديري براي تنظيم و دسترسي به خصوصيات javaBean  را دارند كه به توسعه دهندگان اجازه مي دهند تا ابزارهايي مانند ويرايشگر HTML GUI براي نمايش javaBeanها به صورت آيكون هاي قابل كشيدن و قابل پيكر بندي استفاده نمايند.

 

مثالي سريع از استفاده JavaBean ها

مثالي ساده زير استفاده از يك javaBean را در يك صفحه JSP نشان مي دهد كه از مثال دايره ليست قبلي در اين بخش استفاده مي نمايد.

<HTML><HEAD><TITLE>A Simple JavaBean Example< / TITLE><BODY>

<jsp: useBean name= “circlel” class= “com. Macmillan. JspIn24. Circle”>

<jsp: Setproperty name = “circlel” property= “radius” Value= “2”

Area = <jsp: Setproperty name = “circlel” property= “area”>

< / BODY><HTML>

هنگامي كه صفحه JSP بالا در يك مرورگر اجرا ميشود، نتيجه Area = 12.5664 ميباشد.