زبان برنامهنویسی( JSB (Java Server Pageجاوا: جاوا (به انگلیسی: (Java یک زبان برنامهنویسی شئگراست که برای اولین بار توسط جیمز گوسلینگ در شرکت سان مایکروسیستمز ایجاد شد و در سال ۱۹۹۵ به عنوان بخشی از سکوی جاوا منتشر شد. زبان جاوا شبیه به ++C است اما مدل شیءگرایی آسانتری دارد و از قابلیتهای سطح پایین کمتری پشتیبانی میکند. یکی از قابلیتهای اصلی جاوا این است که مدیریت حافظه را بطور خودکار انجام میدهد. ضریب اطمینان عملکرد برنامههای نوشتهشده به این زبان بالا است و وابسته به سیستمعامل خاصی نیست، به عبارت دیگر میتوان آن را روی هر رایانه با هر نوع سیستمعاملی اجرا کرد. برنامههای جاوا به صورت کدهای بیتی همگردانی (کامپایل) میشوند. که مانند کد ماشین هستند و به ویژه وابسته به سیستمعامل خاصی نیستند. ساخت اولين صفحة JSP : مروري بر زبان HTML : طرح كلي يك صفحة JSP در واقع يك سند HTML مي باشد كه در داخل آنها كدهاي جاوا قرار داده شده است. از تگهاي خاصي براي قرار دادن كدهاي جاوا در داخل سند HTML استفاده مي شوند. HyperText Markup Language (HTML) يك زبان نشانه گذاري مي باشد. اسناد HTML، اسنادي متني هستند كه در قالب بندي آنها از تگ هايي بخصوص استفاده شده است. ليست زير مثالي از يك سند HTML را نشان مي دهد كه خروجي آن در صفحة وب HTML به راحتي صورت مي گيرد : 1: 2: This is a simple HTML 3: 4: HML is Easy 5: 6: نكته : HTML يك برنامة حساس به متن نمي باشد، بنابراين تگ با تگ هيچگونه تفاوتي ندارد. اما استفاده از حروف بزرگ باعث مي شود كه تگ ها در داخل متن مشخص تر شوند و غلط گيري آنها راحت تر صورت گيرد. زبان JSP Java Server Page یا JSP نوعی فن آوری مبتنی بر زبان JAVA می باشد و امکاکان تولید وب سایتهای پویا (فعال) فراهم می سازد. JSP توسط شرکت SUN Microsystems برای برنامه نویسی سمت سرور تولید شده . فیلهای JSP همان فایلهای html می باشند همراه قطعات ویژه شامل کدهای Java که قابلیت پویای صفحات را ایجاد می کند.در ابتدا صفحات وب به صورت ایستا نمایش داده می شدند. معمولأ این اولین تجربه مردم در تولید صفحات وب بود ت سایتهای شخصی و اطلاعات قروش شرکتها را ثبت کنند . بعد از مدتی Perl و C زبانهایی بودند که بر روی سرور برای ایجاد ماهیت پویا قرار داده می شدند .بعد از مدت کوتاهی اکثر زبانها از جمله Delphi , C++ , VB و Java این قابلیت را داشتند که برنامه هایی را با استفاده از خاصیت پویایی و استفاده از داده های متنی و پایگاه داده تولید کنند. این برنامه ها به نام برنامه های CGI سمت سرور شناخته شدند.ASP توسط شرکت ماکروسافت تولید شد تا به برنامه نویسان html این امکان را بدهد که براحتی مندرجات پویا را که توسط سرور رایگان مایکروسافت
(IIS پشتیبانی می شد مورد استفاده قرار دهند.JSP همتای ASP است که در این بخش ارائه خواهد شد. کدهای JSP بر روی وب سرور در JSP Servlet Engine اجرا می شوند. JSP Servlet Engine به صورت پویا html تولید می کند و html را به مرو گر سرویسگیرنده می فرستد.صفحات JSP سندهای متنی هستند که شامل دو نوع متن می شوند.متن Static که می توان آنرا در هر نوع فرمت مبتنی بر متن (مثل XML،WML،SVG،HTML)بیان کرد و نوع دوم JSP Element ها ، که محتوای دینامیک را می سازند.پسوندی که در برای فایل های JSP به کار می رود jsp. است. هر صفحه می تواند ترکیبی از یک Top File باشد که این Top File شامل فایل های دیگری نیز می شود که خود این فایل ها می توانند یا یک صفحه کامل JSP باشند و یا اینکه بخشی از یک صفحه JSP باشند.JSP Element ها در صفحات JSP از طریق دو Syntax متفاوت بیان می شوند.یکی Standard و دیگری XML ، لذا هر فایل داده شده می تواند فقط از یک Syntax(برای بیان JSP Element ها) استفاده کند. SP یک تکنولوژی است که توسط شرکت SUN MICROSYSTEMS تعریف شده تا محتویات پویایی را در شبکه ایجاد نماید .آنها اسناد HTML هستند که در داخل آنها از کد های جاوایی استفده شده است ، تا محتویات پویایی را به وجود آورند . JSP ر واقع پاسخی بود که شرکت SUN در مقابل ASP شرکت Microsoft ، ارائه داد.برخلاف CGI ، JSP، اجازه می دهد که کدهای جاوا درون صفحات HTML ، جاسازی شوند. JSP ، با زبان جاوا ، پایگاه داده ی MySQL یا Oracel، و بر روی سرور Tomcat استفاده می شود.JDBC، رابط بین پایگاه داده ی MySQL و کد های JSP است. JSP یک برنامه کاربردی است که بر روی سرویس دهنده قرار دارد ، آنها درخواست ها را گرفته وبه آنها پاسخ می دهند .به طور کلی در خواست ها از طرف سرویس گیرنده وب ارسال می گردد.از آنجایی که JSP یک برنامه کاربردی SERVER SIDE می باشد ، آنها به منابع سرویس ددهنده همانند SERVELT ها ، JAVABEAN ها ، EJB ها وبانک های اطلاعاتی دسترسی دارند. سرویس گیرنده : یک سرویس گیرنده شبکه ،سرویس گیرنده ای است که با یک سرویس دهنده با استفاده از پروتکل HTTP در ارتباط می باشد .سرویس گیرنده یک مرورگر شبکه را اجرا میکند .مانند IE یا NEVIGATOR NETSCAPE واسناد را با مشخص کردن URL (آدرس یک وب سایت ) در داخل مرورگر درخواست می نماید . استفاده از تکنولوژی JSP دارای مزایای می باشد.از آنجایی که صفحات JSP از زبان برنامه نویسی جاوا استفاده می نمایند ، آنها سیاست "یک بار بنویس و در همه جا اجرا کن "را دنبال می کنند ،این به آن معنی است که صفحه JSP می تواند بدون هیچ تغییری در هر سرویس دهنده ی کاربردی که صفحات JSP را پشتیبانی می نماید ، اجرا شود.مزیت دیگر JSP این است که مشخصات آن به گونه ای نوشته شده است که عمل یکپارچه سازی با محیط برنامه نویسی مجتمع را بوجود آورده است..DES)) صفحات JSP را می توان در هر ویرایشگر متنی نوشت ؛ فقط باید مطمئن گردید که سند موردنظر را با پسوند JSP ذخیره می نمایید.این به آن معنی است که شما میتوانید JSP ها در برنامه NOTEPAD سیستم عامل ویندوز،یا EMACS سیستم عامل UNIX بنویسید .یک IDE که از صفحات نوشته شده JSP حمایت می نماید ، برنامه DREAM WEAVER می باشد که بخشی از WEBGAIN STUDIO می باشد. مزیت دیگر JSP ها استفاده از تگ های کتابخانه ای میباشد .JSP از تگ هایی که به صورت مشابه در HTML وXML وجود دارند ،برای درج متن های پویا استفاده میکند.این امکان وجود دارد که بتوانیم با وارد کردن یک تگ کتابخانه ای ،امکانات اضافه ای را به صفحات JSP بیفزاییم .تگ کتابخانه ای ، تگ اضافه ای را تعریف میکنند که میتوانند برای جایگزین کردن بخش هایی از کد ها مورد استفاده قرار گیرند . یکی دیگر از مزیت های مهم JSP جداسازي نقش ها می باشد.مشخصه های JSP این اجازه را می دهد که بار کاری به دو دسته تفکیک گردد:متن های گرافیکی صفحه ، ومتن های پویای صفحه .یک تیم خلاق که هیچ دانشی درباره زبان برنامه نویسی جاوا ندارد ، میتواند متن های گرافیکی صفحه را ایجاد کند.یک برنامه نویس جاوا سپس کد های جاوا را برای رسیدن به متن پویای صفحه در داخل سند HTML درج مینماید. زمان نوشتن یک صفحه JSP ، نوشتن کد های HTML وسپس کد های جاوا برای ایجاد متن های پویا آسان تر باشد.بنابراین ،اگر قصد نوشتن HTML را ندارید ، به گرافیست های خود اجازه دهید که یک صفحه زیبا را طراحی نمایند وسپس کد های جاوا را به منظور ساختن صفحات JSP پویا وارد نمایید درج عناصر پویا در صفحات HTML تکنولوژی JSP این امکان را فراهم می کند که عناصر پویا را در صفحات HTML بگنجانید. این عناصر بسیار شبیه عناصر HTML به نظر می رسند، در حالی که برای ایجاد آنها از زبان برنامه نویسی جاوا استفاده شده است. برای درک بهتر موضوع به مثال زیر توجه کنید. Good Morning Good Day Good Evening Welcome to our site, open 24 hours a day صفحه فوق پیغامهای متفاوتی به ازای ساعات متفاوت روز نشان می دهد. پیغام Good morning قبل از ساعت 12 ظهر، پیغام Good Day بین ساعت 12 ظهر و ساعت 6 بعد از ظهر و در غیر این صورت پیغام Good Evening نمایش داده خواهد شد. زمانی که کاربر این صفحه را فراخوانی می کند، سرویس دهنده وب عناصر JSP را اجرا می کند و یک صفحه HTML ایجاد نموده و آن را برای سرویس گیرنده ارسال می کند. برای مثال در صورتی که ساعت P.M8:53 باشد، صفحه ارسال شده به صورت زیر خواهد بود. Good Evening Welcome to our site, open 24 hours a day علاوه بر عناصری که گفته شد، امکان درج دستورات زبان برنامه نویسی جاوا در صفحات JSP وجود دارد. اگرچه با توجه به وجود JSTL به ندرت ممکن است نیازی به درج مستقیم دستورات جاوا داشته باشیم. چرا از JSP استفاده می کنیم؟ آموختن JSP آسان است و این امکان را به برنامه نویسان میدهد تا برنامه ها و وب سایتها را به روشی آشکار و استاندارد تولید کنند. اساس JSP مبتنی بر زبان Java می باشد که زبانی شی گرا ست .JSP محیطی قدرتمند را برای گسترش وب عرضه می کند. مزایای jsp: استفاده از تکنولوژی JSP دارای مزایای می باشد.از آنجایی که صفحات JSP از زبان برنامه نویسی جاوا استفاده می نمایند ، آنها سیاست "یک بار بنویس و در همه جا اجرا کن "را دنبال می کنند ،این به آن معنی است که صفحه JSP می تواند بدون هیچ تغییری در هر سرویس دهنده ی کاربردی که صفحات JSP را پشتیبانی می نماید ، اجرا شود.مزیت دیگر JSP این است که مشخصات آن به گونه ای نوشته شده است که عمل یکپارچه سازی با محیط برنامه نویسی مجتمع را بوجود آورده است..DES)) صفحات JSP را می توان در هر ویرایشگر متنی نوشت ؛ فقط باید مطمئن گردید که سند موردنظر را با پسوند JSP ذخیره می نمایید .این به آن معنی است که شما میتوانید JSP ها در برنامه NOTEPAD سیستم عامل ویندوز،یا EMACS سیستم عامل UNIX بنویسید .یک IDE که از صفحات نوشته ده JSP حمایت می نماید ، برنامه DREAM WEAVER می باشد که بخشی از WEBGAIN STUDIO می باشد.مزیت دیگر JSP ها استفاده از تگ های کتابخانه ای میباشد . JSP از تگ هایی که به صورت مشابه در HTML و XML وجود دارند ،برای درج متن های پویا استفاده میکند.این امکان وجود دارد که بتوانیم با وارد کردن یک تگ کتابخانه ای ،امکانات اضافه ای را به صفحات JSP بیفزاییم .تگ کتابخانه ای ، تگ اضافه ای را تعریف میکنند که میتوانند برای جایگزین کردن بخش هایی از کد ها مورد استفاده قرار گیرند . یکی دیگر از مزیت های مهم JSP جداسازس نقش ها می باشد.مشخصه های JSP این اجازه را می دهد که بار کاری به دو دسته تفکیک گردد:متن های گرافیکی صفحه ، ومتن های پویای صفحه .یک تیم خلاق که هیچ دانشی درباره زبان برنامه نویسی جاوا ندارد ، میتواند متن های گرافیکی صفحه را ایجاد کند.یک برنامه نویس جاوا سپس کد های جاوا را برای رسیدن به متن پویای صفحه در داخل سند HTML درج می نماید. زمان نوشتن یک صفحه JSP ، نوشتن کد های HTML وسپس کد های جاوا برای ایجاد متن های پویا آسان تر باشد.بنابراین ،اگر قصد نوشتن HTML را ندارید ، به گرافیست های خود اجازه دهید که یک صفحه زیبا را طراحی نمایند وسپس کد های جاوا را به منظور ساختن صفحات JSP پویا وارد نمایید. از مزیت های دیگر jsp این است کهشما می توانید به راحتی یه فایل JSP را به یه پلتفرم دیگه، وب سرور یا JSP Servlet Engine انتقال بدهید.(شکل پایین) نمایش یک صفحه JSP در JSP, صفحه مورد نظر واقعا روی سرور وجود ندارد و آنرا بنا به درخواست شما میسازد. در این سیستم سرور که یک سرور جاواست پس از درخواست کلاینت مبنی بر یک فایل JSP, درخواست را به موتور JSP انتقال میدهد. در این مرحله صفحه JSP از دیسک لود شده به servlet تبدیل میشود. سپس آنرا کامپایل کرده و درخواست را به موتور servlet تحویل میدهد. جالب اینجاست که موتور JSP تنها صفحاتی را تبدیل و کامپایل میکند که متوجه تغییری در آنها بشود. بنابراین این سیستم از سایر زبانهای اسکریپتی مثل PHP کاراتر و درنتیجه سریعتر است. ساختار برنامه های JSP قرار دادن کد جاوا بین تگهای HTML به این معنی است که برنامه ما پویاست. اما اگر قرار باشد یک پروژه بزرگ را با استفاده از این روش بسازیم به جایی میرسیم که ممکن است ادامه کدنویسی ممکن نباشد(به دلیل پیچیدگی کدها(اما راه بهتری نیز وجود دارد و آن جدا کردن منطق برنامه از نمایش خروجی آن است. بر این اساس دو نوع مدل برای تولید برنامه ابداع شده: ساختار مدل ۱ در این مدل منطق برنامه در کلاسهایی (یعنی java beans) پیاده سازی میشود و بعدا در فایل jsp مورد استفاده قرار میگیرد.این مدل برای برنامه نویسان است اما کار را برای طراحان صفحات مشکل میکند. ساختار مدل ۲ راه حل بهتر این است که منطق برنامه و ارائه آن را از هم جدا کنیم. در این روش servlet درخواستها را پردازش میکند, منطق برنامه را اداره میکند و از java beans نمونه سازی میکند. در این صورت jsp داده ها را از این بخش دریافت میکند و پاسخ را فرمتبندی میکند درحالی که از پشت صحنه هیچ اطلاعی ندارد. پارامترها: منظور از پارامتر همان اطلاعات کمکی است که به صفحه ارسال میشود و بعد از نام صفحه با علامت ? شروع شده و با & از هم جدا میشوند. بدین صورت http://www.mysite.com/path/page.jsp?param1=value1¶m2=value2 حال چنانچه پارامتری به صفحه ارسال شود و ما بخواهیم مقدار آنرا در برنامه بخوانیم باید متد getParameter را از شیء request فراخوانی و نام پارامتر را به او بدهیم و مقدار را به صورت رشته ای دریافت کنیم: [sourcecode language="java"]String p1 = request.getParameter("param1");out.println("The value of param1 is " + p1);[/sourcecode] کوکی ها: کوکی ها اطلاعاتی هستند که بنا به درخواست سرور در کلاینت ذخیره و بازیابی میشوند. مثلا اطلاعاتی در مورد حساب کاربری در یک وب سایت, به صورتی که در مراجعات بعدی از کاربر درخواست کلمه عبور و نام کاربری نشود! برای ذخیره اطلاعاتی در کوکی کلاینت از شیء response متد addCookie را استفاده میکنیم: [sourcecode language="java"]Cookie newCookie = new Cookie("name","value");response.addCookie(newCookie);[/sourcecode] برای خواندن کوکی ها ابتدا باید کل کوکی ها را در یک آرایه ذخیره کرد و سپس از آن آرایه اقدام به خواندن یک کوکی کرد ( نکته: هر سرور فقط میتواند کوکیهایی را که خودش ذخیره کرده بخواند) [sourcecode language="java"]Cookie cookie[]= request.getCookies();String value = cookie[i].getValue(); [/sourcecode] برای جستجو در بین کوکیها میتوان از چنین کدی استفاده کرد: [sourcecode language="java"]Cookie cookie[]= request.getCookies();for(int i=0; iString name = cookie[i].getName();if(name.equals("name")) {String value = cookie[i].getValue();out.println("The value of the cookie is " + value);}} [/sourcecode] sessionها: session مکان مناسبی برای ذخیره داده های کاربر پس از لاگین است که در سرور ذخیره میشود. چنانچه session جدید باشد,( یعنی این شیء ساخته شده اما هیچ صفحه یا چیز دیگری به کاربر اختصاص داده نشده) و متد session.isNew() فراخوانی شود نتیجه true خواهد بود. برای درج یک مقدار در session: [sourcecode language="java"]session.putValue("name","value");[/sourcecode] و برای خواندن مقداری از session: [sourcecode language="java"]session.getValue("name");[/sourcecode] پارامتهای ذخیره شده در برنامه: در بسیاری از برنامه ها لازم میشود که اطلاعاتی را در برنامه ذخیره کنیم. مثل رشته اتصال به بانک اطلاعاتی یا عنوان برخی صفحات یا فاکتورها و امثال آن و موارد دیگر. از طرفی این اطلاعات باید درون تمام صفحات در دسترس باشند. اگر این اطلاعات را در یک مکان ذخیره کنیم در صورت تغییر ساختار برنامه همان یک مکان تغییر میکند و دیگر مجبور نیستیم تمام صفحات را ویرایش کنیم.بدین منظور میتوان اطلاعات مورد نظر را در فایل web.xml ذخیره و سپس درون صفحات برنامه بازیابی نمود. حال میخواهیم دو مقدار داده ای را در فایل مذکور ذخیره و از درون برنامه بازیابی و چاپ کنیم.در یک پروژه جدید, ابتدا فایل web.xml را باز کرده و در تب General درون قسمت context parameters دکمه Add را کلیک کنید و در صفحه باز شده مقدارهای مشخص شده را وارد نمایید حال OK را کلیک کنید و یکبار دیگر دکمه Add را کلیک کرده و مقادیر name2 و value2 را وارد کرده و سپس OK را بزنید و فایل را ذخیره کنید. همانطور که مشاهده میکنید دو مقدار داده ای ذخیره شده. حال فایل index.jsp را باز کرده و این کد را درون آن بنویسید: [sourcecode language="java"]java.util.Enumeration mylist;mylist = application.getInitParameterNames();while (mylist.hasMoreElements()) {String name = mylist.nextElement().toString();String value = application.getInitParameter(name);out.println("" + name + " = " + value);} [/sourcecode] در این کد از شیء application استفاده شده (که به کل برنامه جاری و تنظیمات آن اشاره دارد) و لیست نامهای پارامتهای ذخیره شده را دریافت کرده و در یک شیء از نوع شمارش ذخیره میکنیم سپس در یک حلقه لیست تمام نامها را به صورت تک تک خوانده و مقادیر نسبت داده شده به آنها را از طریق شیء application بازیابی کرده و چاپ میکنیم. بعد از اجرای برنامه نتیجه چنین است: المانهای اسکریپتی: با استفاده از المانهای اسکریپتی میتوان کد را درون یک صفحه JSP جا داد. چندین نوع از المانهای اسکریپتی وجود دارند و معمولا برای هر نوع از این المانها فرمت xml آن نیز وجود دارد: Scriptletها: یک بلوک کد است که بین قرار دارد. فرمت xml: script code Declarationها: اعلان یک متغیر محصور بین , یک نمونه متغیر است که در تمام درخواستهای همان صفحه مشترک است: فرمت xml: declaration code Expressionها: نتیجه حاصل شده از محاسبه عبارت بین درون صفحه قرار میگیرد فرمت xml: expression Commentها: مثل سایر زبانهای برنامه نویسی در اینجا نیز امکان قرار دادن توضیح در فایل کد وجود دارد. یک نوع آن از نوع HTML است که در فایل نهایی ظاهر میشود و نوع دیگر از نوع JSP است که در فایل نهایی ظاهر نمیشود. Directiveها: صفحه های JSP از directiveها برای انتقال برخی داده های خود به سرور استفاده میکنند و در پروسه پردازش فایل اسکریپت تاثیر دارند و زمانی نقش خود را بازی میکنند که فایل تغییر کرده و نیاز به کامپایل مجدد دارد: JSP Expression Language.: که به اختصار آن را EL نیز مینامند. در ادامه نیز یک برنامه کامل با آنچه تا به حال آموختیم را میبینیم. میتوان یک expression را درون JSP جا داد و در این صورت نتیجه آن بخشی از فایل نهایی شما را شامل میشود. مثلا تکه کد زیر را ملاحظه کنید: 2 + 2 = ${ 2 + 2 } در این تکه کد عبارت عبارت داخل براکتها محاسبه شده و پس از تبدیل شدن به رشته درون متن جا میگیرد. البته قدرت و امکانات EL محدود به عبارات ریاضی نیست و محاسبات منطقی را نیز شامل میشود و برای عبارات منطقی از علائم مخصوص به خود بهره میگیرد. البته علائم قبلی نیز همچنان قابل استفاده میباشند. برخی از این علائم بدین شرح است: not برای ! , div برای / , mod برای % , lt برای , le برای = , eq برای == , ne برای != , and برای && , or برای || و اپراتور یگانی empty برای بررسی null یا تهی بودن. یک برنامه نمونه: با این برنامه یک ایده کلی از برنامه های JSP را بررسی میکنیم, همچنین نحوه نوشتن و استفاده از متدها را دربرنامه های JSP بررسی میکنیم. در ابتدای کد یک page directive وجود دارد که در آن از دستور import استفاده شده و یک کلاس هم به برنامه الحاق شده است. سپس یک تگ declaration آمده که یک متد به نام makeDividingLine را در کلاس جاری تعریف کرده که در تمام کدهای کلاس قابل دسترسی میباشد. این متد یک دشته را دریافت میکند و رشته ای حاوی ۲۰ بار تکرار رشته اول اما مابین تگ center برمیگرداند. در ادامه یک تگ declaration دیگر قرار دارد که یک شیء از نوع vector به نام vec را تعریف میکند. بنابراین این شیء در تمام کد قابل دسترسی میباشد. سپس در یک تگ servlet دو دستور چاپ آمده که اولی متنی ساده را چاپ میکند ولی دومی رشته حاصل از فراخوانی متد makeDividingLine به همراه ورودی ** را چاپ میکند. پس از مقداری متن و کد HTML در ادامه یک تگ expression آمده که در آن متد makeDividingLine فراخوانی میشود و نتیجه آن عینا در خروجی درج میگردد. سپس یک تگ servlet قرار گرفته که در آن در شیء vec سه مقدار مختلف درج میگردد و سپس خروجی متدی که در ادامه تعریف شده در بین دو تگ center چاپ میشود. متد اشاره شده در یک تگ declaration تعریف شده و وظیفه آن چاپ محتوی شیء vec در خروجی مشخص شده میباشد. کد مورد نظر چنین است: [sourcecode language="text"] String makeDividingLine(String part) {String str = "";for(int i=0; istr += part;str += "";return(str);}%> This is a JSP page that demonstrates the syntax for adding methods,calling methods, and creating objects from class definitions.out.println("The following is calling a local method from the Java code.");out.println(makeDividingLine("**"));%> The following is calling a local method inside the expression tags. The following shows access to a globally defined object.vec.add("Chocolate");vec.add("Vanilla");vec.add("Strawberry");out.println("");showVecElements(out);out.println("");%> void showVecElements(JspWriter out) throws java.io.IOException {String str;for(int i=0; istr = (String)vec.elementAt(i);out.println("");out.println(str);out.println("");}}%> [/sourcecode] آنرا در بین تگ body قرار دهید و اجرا کنید: یکی از آیتم هایی که میتوانید در فایل JSP قرار دهید, تگها هستند. میتوان یک تکه کد را به تگی نسبت داد که با فراخوانی آن تگ, تکه کد مربوطه فراخوانی شود. در این قسمت یک تگ ساده را میسازیم و از آن استفاده میکنیم.کلیت کار به این صورت است که ابتدا یک فایل xml حاوی تعریف تگ ساخته سپس فایل جاوایی برای تولید خروجی آن تولید میکنیم و در نهایت از آن استفاده میکنیم.ابتدا یک پروژه جدید از نوع Web Application بسازید و سپس روی نام آن راست کلیک کنید, حال روی new->other کلیک کنید. در پنجره باز شده و در قسمت categories (سمت چپ) گزینه web و از قسمت File Types گزینه Tag Library Descriptor را انتخاب کرده و next را کلیک کنید. در پنجره جدید نام MyTag را انتخاب کرده و finish را کلیک کنید.این فایل باید حاوی تگ مورد نظر ما باشد که بعدا به آن اضافه میشود. در ادامه باید فایل جاوایی بنویسیم که هنگام استفاده از تگ در فایل نهایی خروجی موردنظر ما را تولید کند. البته قصد تولید خروجی پیچیده ای نداریم (این یک مثال است). حال به پروژه یک java package اضافه کرده و آنرا com بنامید اینبار به پکیجی که ساختید یک فایل از نوع Tag Handler اضافه کنید, آنرا MyTag بنامید و در قسمت Tag support class to extend گزینه BodyTagSupport را انتخاب کرده و next را کلیک کنید. در صفحه بعد روی Browse کلیک کرده و مانند شکل فایل tld را که قبلا ساخته اید را انتخاب کنید و سپس Select File و در نهایت finish را کلیک کنید. حال اگر فایل MyTag.tld را باز کنید میبینید که محتویات آن تغییر کرده و این کدها به آن اضافه شده که درواقع ارجایی است به کلاسی که تعریف کردیم و موجب میشود کدهای ما درون آن کلاس اجرا شود. [sourcecode language="xml"]MyTagcom.MyTagJSP [/sourcecode] در این قسمت باید کدهای مربوطه را به فایلها اضافه کنید. پس فایل جاوایی که اخیرا ساختید را باز کرده و متد doStartTag را یافته و این کد را به ابتدای آن اضافه کنید: [sourcecode language="java"]try{JspWriter out= pageContext.getOut();out.println(" This is MyTag");}catch(Exception exp){exp.printStackTrace();} [/sourcecode] سپس فایل index.jsp را باز کرده و این تگ را قبل از تگ HTML اضافه کنید: حال موقع استفاده از تگی است که تعریف کردیم.همانطور که میبینید پیشوند my را برای آن تعریف کرده ایم پس درون تگ body میتوان چنین نوشت: همه چیز را ذخیره کرده و اجرا کنید: JSTL که مخفف JSP Standard Tag Library میباشد مجموعه ای گسسته از تگهای از پیش تعریف شده است که به چند دسته کلی تقسیم میشوند که به همراه URI مربوطه در زیر آورده شده: Core: http://java.sun.com/jsp/jstl/core XML: http://java.sun.com/jsp/jstl/xml Internationalization: http://java.sun.com/jsp/jstl/fmt SQL: http://java.sun.com/jsp/jstl/sql Functions: http://java.sun.com/jsp/jstl/functions نحوه استفاده از JSTL در netbeans بسیار آسان است. بر روی نام پروژه راست کلیک کرده و گزینه Properties را انتخاب نمایید. در سمت چپ پنجره باز شده روی گزینه Libraries کلیک کرده و سپس دکمه Add Library را کلیک کنید و در پنجره جدیدی که باز میشود JSTL را پیدا کرده و اضافه کنید: حال اگر به قسمت Libraries در زیر نام پروژه دقت کنید متوجه میشوید که در واقع با این کار شما دو پکیج به پروژه اضافه شده اند: jstl.jar standard.jar در این مرحله پروژه برای استفاده از تگهای JSTL آمادگی دارد و میتوان در فایلهای JSP خود از آنها استفاده کنید. ابتدا فایل index.jsp را باز کرده و این تگ را قبل از تگ HTML اضافه کنید: [sourcecode language="text"][/sourcecode] سپس این کد را درون تگ body بنویسید: [sourcecode language="text"] Format the number 82491302 as a number with commas Format the number 0.82 as a percent Format the number 12345.67 as currency Format the number 12345.6789 as an integer only [/sourcecode] نتیجه چنین است: دلایل اصلی استفاده از JSP : قابلیت اجرا در محیط های مختلف اجزا توسط Javabeans and EJB. قابلیت استفاده دوباره دارند. امتیازات Java شمامی توانیدفایلهای JSP را ازمحیطی به محیط دیگرانتقال دهید(وب سرور و Servlrt Engine ). html وگرافیک که درمرورگر وب نمایش داده میشود درکلاس لایه نمایش (pesentation layer ) قرار میگیرند و کد JSP در سرور در کلاس پیاده سازی(implementation) قرار میگیرند. با داشتن پیاده سازی و نمایش جداگانه طراحان تنها در بخش نمایش و برنامه نویسان JSP در پیاده سازی تمرکز می کنند.. مقایسه JSP و ASP : ASP و JSP در عملیاتی که انجام میدهند بسیار مشابه هستند. JSP ممکن است دارای دوره یادگیری طولانیتری باشد. هر دو قابلیت گنجاندن کد در HTML برای کار با پایگاه داده ها ومندرجات پویا را دارند . از آنجایی که ASP معمولأ در محیط های مایکروسافت IE , NT یافت می شود و JSP در هر محیطی که با خصوصیات J2EE مطابقت داشته باشد کار میکند. JSP اجازه می دهد که اجزا دوباره به وسیله EJB’s , Javabeans استفاده شوند . ASP امکان استفاده از ActiveX , COM را فراهم میسازد. مقایسه JSP و Servlet کی Servlet کلاسی از Java میباشد که امکان ویژه ای از سرویسهای سمت سرور را فراهم میسازد. نوشتن کد های html در Servlet کار بسیار دشواری می باشد . در Servlet شما برای تولید html باید تعداد زیادی دستور Println استفاده کنید. معماری JSP JSP بر روی فن آوری Servlet شرکت SUN پیاده شده است. فایل JSP صفحه ای html است که در آن تکه کدهای JSP گنجانده شده است. این تکه کدها می توانند شامل کد های Java باشند. پسوند فایلهای JSP .jsp و ندرتاً .html , .htm می باشد . موتور(کامپایلر) JSP فایل jsp. را تجزیه کرده و فایل کد Servlet را تولید میکند. بعد فایل servlet را کامپایل کرده و فایل Class را تولید میکند . این کار تنها بار اول انجام میگیرد و این دلیل کند کار کردن JSP برای بار اول میباشد مراحل لازم برای پاسخ گویی به درخواست صفحه JSP : -1 کاربر وارد سایت شده و مرورگر در خواست را از طریق اینترنت ارسال می کند . -2 در خواست به وب سرور ارسال می شود . -3 وب سرور تشخیص می دهد که فایل در خواستی .jsp بوده و فایل را به JSP Servlet Engine می فرستد. -4 اگر فایل JSP برای مرتبه اول صدازده شده باشد فایل تجزیه می شود در غیر این صورت به مرحله 7 می رود. -5 این مرحله مرحله تولید کد Servlet می باشد. همه html باید به دستورهای println تبدیل شود. -6 کد Servlet کامپایل شده و Class را تولید می کند. -7 کد html تولید می شود . 8-کد 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 و ttpservletResponse مي باشند.اين آبجكت به شما اجازه تجزيه درخواستها رسيده را مي دهند و پاسخهايي را كه براي سرويس گيرنده پس فرستاده مي شوند را توليد مي كنند. متدهاي 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: 2: Form Examples 3: 4: 5: 6: Name: 7: 8: 9: password: 10: 11: 12: 13: 14: 15: 16: 17: Name : 18: 19: 20: please Select your Favorite Ice Cream Flavors: 21: 22: 23: Mint Chocolate chip 24: Rocky Road 25: Strawberry Cheesecake 26: Chocolate 27: Vanilla 28: 29: 30: 31: 32: 33: 34: پارامترهايي كه به متدهاي doxxx(…) عبور داده مي شوند مشابه متد Service (…) مي باشند و عبارتند از: آبجكت هايHttp Servlet Reques و HttpServletresponse . ترجمه يك JSP ساده به يك Servlet از آنجايي كه پايه اساس پياده سازي يك صفحه JSP ، يك Servlet مي باشد، اجازه دهيد نگاهي به يك صفحه JSP سپس كد Servlet معادل آن بيندازيم. كد معادل Servlet ، خروجي شبيه به صفحه JSP دارد، اما خواهيد ديد كه كار بيشتري را بايد انجام دهيد. نوشتن يك صفحه JSP ساده ليست زير يك صفحه JSP مي باشدكه جدول Powers of 2 را مي سازد. 1: 2: Powers of 2 3: 4: 5: Behold The Powers of 2 6: 7: 8: Exponent2^Exponent 9: 10: 11: 12: 13: 14: 15: 16: مقايسة صفحات JSP با برنامه هاي CGI : برنامه هاي CGI كلي ترين اصطلاحاتي هستند كه براي توصيف برنامه هاي موجود بر روي سرويس دهنده به كار مي روند كه توليد اسناد پويا را مي نمايند. اين برنامه ها را مي توانيد با زبانهاي برنامه نويسي C، C++، Perl يا جاوا بنويسيد. صفحات JSP نوعي از برنامه هاي CGI مي باشند. آنها اجازه دسترسي از سرويس گيرنده هاي وب، براي دسترسي به منابع سرويس دهنده را مي دهند و پاسخهاي پويايي را براي سرويس گيرنده هاي وب توليد مي نمايند. CGI فقط يك اصطلاح كلي براي توصيف برنامه هايي مانند ASP، JSP و ديگر برنامه هاي نوشته شده به زبانهايي مانند C و Perl مي باشد. مقايسة صفحات 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) ، مي توانيد مشاهده نماييد كه از تگ هاي %> و ليست 1: 1: 2: 3: 4: A Simple APS 5: 6: 7: 8: The Current Date and Time is : 9: 10: 11: نكته: صفحات ASP مانند صفحات JSP ، مي توانند در داخل هر ويرايشگر متني نوشته شوند و پسوند asp ذخيره شوند. ابزاري محبوب ويرايش كه متنن را به صورت برجسته (highlights) نمايش داده و به شما با دستور زبان مربوطه كمك مي نمايد. برنامه Visual InterDev شركت مايكروسافت مي باشد. اين ابزار در سازماندهي برنامه هاي كاربردي بزرگي كه شامل تعداد زيادي صفحات ASP و HTML مي باشند به شما كمك مينمايد. كد معادل در صفحه JSP ليست 3-2 آورده شده است. ليست (2): 1: 2: A Simpie JSP 3: 4: 5: 6: The Current date and Time is: 7: 8: 9: 10: نكته: جاوا كلاس هاي مشابه اي را در داخل بسته هاي نرم افزاري تركيب كرده است. كلاس Date در بسته Java . ulit قرار دارد وبه شما اجازه مي دهد كه از ساختار آن براي دستيابي به زمان و تاريخ فعلي سيستم استفاده نماييد. يك ساختار (Contructor) متدي است كه يك آبجكت را ايجاد و نمونه سازي مي نمايد. اگر چه صفحات ASP و JSP با يكديگر مشابه مي باشند، اما چند تفاوت بين آنها وجود دارد. يك تفاوت عمده در اين است كه صفحات ASP تنها بر روي سيستم هاي مايكروسافت اجرا مي شوند، در حالي كه، صفحات JSP فلسفه يك بار بنويس و در همه جا اجرا كن را دنبال مي كنند و بر روي هر سرويس دهنده اي كه از يك ماشين مجازي استفاده مي كنند، اجرا مي شوند. از آنجايي كه ماشين مجازي جاوا تقريباً بر روي هر سيستم عاملي قابل نصب و قابل دسترسي مي باشد، اين موضوع يكي از مزاياي صفحات JSP مي تواند باشد. مزيت ديگر JSP اين است كه از زبان برنامه نويسي قويتري به نام جاوا استفاده مي نمايد تا محتويات پوياي مربوط به خود را بسازد. اين به معناست كه صدها كلاس و متد در اختيار شما قرار دارند. ساخت اولين صفحه JSP اكنون زمان آن رسيده است كه محيط كاري خود را راه اندازي كرده و اولين صفحه JSP را اجرا نماييد. ذخيره كردن يك صفحه 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 ( ) فراهم كنند. نكته: گسترش كلاس جاوا، يك كلاس سلسله مراتبي را ايجاد مي كند كه تقريباً مانند يك درخت خانوادگي مي باشد. كلاس گسترش يافته را ابر كلاس يا كلاس والد مي نامند. كلاسي كه تعريف شده است، خودش به يك كلاس ديگر گسترش مي ي
:: موضوعات مرتبط:
زبان برنامهنویسی (JSB(Java Server Page ,
,
:: بازدید از این مطلب : 1375
|
امتیاز مطلب : 0
|
تعداد امتیازدهندگان : 0
|
مجموع امتیاز : 0