مقدمه
ASP راه حل شرکت ماکروسافت براي ايجاد صفحات پوياي وب ميباشد. با گسترش اينترنت و www در زندگي روزمره، ايجاد وب سايت يکي از بخشهايي است که به سرعت در حال رشد مي باشد.همواره در تار جهان گسترده، طراحي وب سايت بر ايجاد گرافيکهاي تخيلي و زيبا و صفحات وب ساده براي خواندن مبتني است.به همين دليل امروزه سايتهاي وب محل تلاقي کاربران شده است.

اگرچه خلق يک وب سايت دلپذير مهم ميباشد، اما تمرکز اصلي، از طراحي گرافيکي به سمت طراحي مبتني بر برنامه نويسي ميباشد. براي مثال، تصور کنيد که شما ميخواهيد يک وب سايت از چيزي که ميتوانيد بفروشيد ايجاد کنيد.

طراحي مبتني بر برنامه نويسي، صفحات وبي ايجاد ميکند که ميتوانند اطلاعات صورت حسابهاي کاربران را جمع آوري و ذخيره کند.
اگر شما احتياج به وب سايت پويا(Dynamic) داريد، ASP يک راه حل فوق العاده و ساده ميباشد. امروز، شما اولين قدم را در داخل دنياي ASP ها برمي داريد.
Active Server Pages چيست؟

به زبان مايکروسافت : Active Server Pages يک محيط باز براي ترکيب HTML ، اسکريپت ها و کامپوننت هاي سرور قابل استفاده مجدد ActiveX است که امکان ساختن راه حل هاي ديناميک و قدرتمند تجاري وب محور رو به شما مي دهد . ASP امکان اسکريپت نويسي طرف سرور با استفاده از VBScript و JScript رو براي IIS ميدهد .
نکته . قبل از اينکه سرور يک صفحه ASP را به مرورگر بفرستد ، اسکريپت هاي طرف سرورآن صفحه را اجرا مي کند . براي اينکه بين صفحات ASP و HTML معمولي تفاوت وجود داشته باشد ، صفحات ASP را با پسوند asp ذخيره مي کنند .

با گذشت سالهاي متمالي، ما تغييرات مهمي را در موضوع اينترنت مشاهده مي نماييم. ابتدا، اينترنت به منظور يک سرويس دهنده ارتباطات متوسط براي بخشهاي دولتي و موسسات دانشگاهي بود. با پيدايش www، اينترنت يک محيط دوستانه چند رسانه اي شد. در اصل سرويس دهنده اينترنت به عنوان يک مکان براي آدمهاي با ذوق به منظور خلق صفحات خانگي بود. اما هر چه افراد بيشتري به اينترنت وارد شدند، اينترنت به يک منبع اطلاعاتي براي همه افراد تبديل شد. وفقتي تعداد افراد Online به يک محدوده بحراني رسيد، شرکتهايي که محصولات و خدمات را مي فروختند شروع به Spring up نمودن کردند.اين شرکتها هيچ حضور فيزيکي نداشتند، فقط يک حضور مجازي داشتند!. براي مثال شما ميتوانيد از سايت Amazon.com کتاب بخريد، اما شما قادر نخواهيد بود که کتابفروشي Amazon.com را در نزديکي خود پيدا کنيد.

همانگونه که اينترنت به صورت يک فروشگاه موفق شد، طراحي صفحات وبسايت هم تغيير پيدا کرد. در روزهاي اوليه www، ؛HTML به منظور ايجاد صفحات وب ايستا استفاده مي شد. اما امروزه، صفحات وب ايستا به سرعت در حال منسوخ شدن ميباشند. تصور کنيد اگر Amazon.com تنها از صفحات وب ايستا تشکيل شده بود!؛ شما نمي توانستيد فهرستهاي کتاب جستجو کنيد. شما نمي توانستيد يک در خواست را به صورت Online صادر کنيد، شما نمي توانستيد توضيحات کاربران ديگر را بخوانيد. اين است دليل يک سرمايه گذاري مطمين که اگر Amazon.com از صفحات وب پويا(Active Server Pages) استفاده نمي کرد، نمي توانست کتابهاي زيادي بفروشد.

شما ميتوانيد صفحات وب پويا را از راهاي زيادي ايجاد نماييد. راه حل ماکروسافت براي ساختن صفحات وب پويا استفاده از Active Server Pages ها مي باشد که بصورت مختصر بر آن ASP مي گويند.

نکته: سايت هاي وب بزرگ زيادي از ASP به منظور سرويس دادن پويا به اسناد وب استفاده مي کنند. براي مثال Buy.com, HotBot.com, Dell.com از ASP براي ساخت سايت هاي وب پوياي محاوره اي خود استفاده کردند.
ASP شامل دوبخش مي باشد: ۱- کدهاي برنامه نويسي ۲- کدهاي HTML. کدهاي برنامه نويسي ميتوانند به وسيله تعدادي از زبانهاي دست نويس(Scripting Language) نوشته شوند.

واژه جديد: يک زبان دست نويس(Scripting Language) يک دستور زبان مخصوص است که براي اجراي دستورات بر روي کامپيوتر استفاده مي شود.
زبانهاي اسکريپت نويسي دست نويس(Scripting Language) مربوط به وب که محبوب مي باشند عبارتند از: VBScript و JavaScript. وقتي يک صفحه ASP درست مي کنيد، شما ميتوانيد از يکي از چهار زبان برنامه نويسي استفاده کنيد.(شبيه به دستورات زبان Visual Basic)
تعريف زبانهاي دست نويس

VBScript: معمولترين زبان برنامه نويسي تحت وب براي ASP مي باشد.
JScript: شبيه به JavaScript ميباشد.
PerlScript: شبيه به زبان Perl ميباشد.
Python: يک زبان اسکريپت نويسي قدرتمند مي باشد که بطور معمول براي توسعه وب به کار مي رود.
با ASP چه کارهايي مي شود انجام داد ؟
کارهاي زيادي هست که با ASP انجام می شود ، از جمله :

– شما مي توانيد تاريخ ، زمان و ديگر اطلاعات را به روش هاي مختلف نشان بدهيد
– شما مي توانيد يک فرم نظر سنجي بسازيد و از بازديد کنندگان سايت خود بخواهيد که آن را پر کنند.
-شما مي توانيد يک بانک اطلاعاتي داشته باشيد که مردم از طريق وب به آن دسترسي داشته باشند ، مي توانيد اين بانک اطلاعاتي را به روز کنيد ، چيزي را به آن اضافه يا ازآن کم کنيد و کارهايي از اين دست
– شما مي توانيد بعضي از بخش هاي سايت خود را بوسيله کلمه عبور محافظت کنيد تا مطمئن باشيد که فقط افراد مجاز قادر به استفاده از اطلاعات بخش هاي محافظت شده هستند.

مقايسه بين صفحات HTML و ASP
اجازه بدهيد روند مشاهده يک صفحه وب را به صورت خلاصه بررسي کنيم . وقتي شما يک آدرس را در نوار آدرس مرورگر خود تايپ مي کنيد مثلا : http://www.yahoo.com مرورگر يک درخواست به سرور مي فرستد . سرور به درخواست مرورگر شما پاسخ مي دهد و سند درخواستي شما را برمي گرداند ( البته اين وسط DNS ها آدرس IP دامين سايت را پيدا

مشخص مي کنند به اضافه يک سري کارهاي ديگر که به اين مسائل کاري نداريم ) . اگر اين سند يک فايل قابل نمايش براي مرورگر باشد ، کد فايلی که توسط مرورگر ترجمه مي شود و شما اطلاعات فايل را مي بينيد . اگر هم قابل نمايش نباشد برنامه مرورگر سعي در بارگذاري ( دانلود ) فايل مي کند . فرض کنيد شما آدرس زير را در مرورگر خود تايپ کنيد : http://www.somewhere.com/somepage.htm . اين درخواست يک فايل از نوع HTML است . HTML مخفف Hyper Text Markup Language به معني زبان نشانه گذاري ابرمتن است . اگر چنين فايلي روي سرور سايت وجود داشته باشد . مرورگر کد فايل را ترجمه مي کند و شما صفحه somepage.htm را مي بينيد . براي دستيابي به کد يک صفحه از نوع HTML در اينترنت اکسپلورر مي توانيد از منوي View گزينه Source را انتخاب کنيد . اين کد چيزي شبيه به کدهاي زير خواهد بود

<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=windows-1252″>
<title>Page Title</title>
</head>

<body>
……
</body>
</html>
نمونه سورس يک فايل HTML . به جاي نقطه چين ها عناصري قرار مي گيرد که بايد در صفحه نمايش داده شود
اما فرض کنيد فايل HTML اي که شما درخواست کرده ايد روي سرور سايت وجود نداشته باشد . در اين صورت شما يک پيغام خطا دريافت خواهيد کرد ( خظاي ۴۰۴ ) مبني بر اين که مرورگر موفق نشده است فايل مورد نظر شما را پيدا کند . حالا فرض کنيم شما در نوار آدرس مرورگر خود آدرس يک فايل را تايپ کنيد که قابل نمايش نيست . مثل فايل هاي exe يا zip يا mp3 و … . در اين صورت برنامه مرورگر سعي مي کند فايل مورد نظر را دانلود کند .

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

ليگ برتر کشور . خوب اگر شما به صورت عادي و با استفاده از جدول هاي HTML کار را پياده سازي کنيد مجبور هستيد هر بار که مسابقه اي انجام مي شود ، بررسي کنيد که جايگاه هر تيم چه تغييري مي کند ، امتيازات و تفاضل گل و بقيه چيزها را هم خودحساب کنيد و بعد بر اساس آن ، صفحه را يک بار ديگر طراحي کنيد . اين بار با يک جدول که بر اساس اطلاعات جديد طراحي شده . اين يک کار وقت گير و بيهوده است . تازه امکان اشتباه هم کم نيست . اما حالا اگر فرض کنيم که اين پروژه را با ASP پياده سازي کرده باشيم . بر اين اساس فقط بايد يک سرويس طراحي کنيم که يک نفر بياید و نتيجه هر مسابقه را وارد کند . نتايج براي پردازش به سرور فرستاده مي شود ، بعد از پردازش بر اساس اسکريپت هايي که درون صفحه هست ، جدول به روز مي شود .

نکات قابل توجه :
اجازه بديد که اولين صفحه ASP را بنويسيم :
<HTML>
<HEAD>
<TITLE>Hello World !</TITLE>
</HEAD>
<BODY>
<%
Response.Write “Hello, World !”
%>
</BODY>
</HTML>

سطرهاي بالا را در يک اديتور بنويسيد و بعد با نام hello.asp ذخيره کنيد . hello.asp را در فولدر wwwroot ذخيره کنيد .
براي اجراي صفحه ، اينترنت اکسپلورر رو باز کنيد و در نوار آدرس بنويسيد : http://localhost/hello.asp . عبارت زير کارش اين است که درون صفحه کلمات Hello, World را نمايش مي دهد .
Response.Write “Hello, World !”
روش ديگر برنامه سلام دنيا
يک راه کوتاهتر براي نمايش سلام دنيا در صفحه . کد زير را ببينيد
<HTML>
<HEAD>
<TITLE>Hello World !</TITLE>
</HEAD>
<BODY>
<%= “Hello, World !” %>
</BODY>
</HTML>
فقط توجه کنيد که علامت = را درست بعد از تگ شروع اسکريپت قرار بديد . عملکرد اين روش درست مثل استفاده از Response.Write هست .
بعد از اينکه صفحه hello.asp را در مرورگر خود اجرا کرديد . از منوي view گزينه Source را انتخاب کنيد . تا سورس صفحه را ببينيد . همون طور که مشاهده مي کنيدخبري از اسکريپت ها نيست . جاي تمام اسکريپت ها را عبارت هاي HTML گرفته اند. امتحان کنيد
مثال ديگر : نمايش تاريخ …
حالا اجازه بدهيد يک گام به جلو برداريم و صفحه ای بسازيم که تاريخ امروز را به کاربر نشان ميدهد . کد زير را در نظر بگيريد .
<HTML>
<HEAD>
<TITLE>Hello World !</TITLE>
</HEAD>
<BODY>
<%= Date %>
</BODY>
</HTML>
استفاده از تابع “Date” تاريخ فعلي را به شما مي دهد ، به طريق مشابه تابع “Time” زمان فعلي را بر مي گرداند. براي استفاده همزمان از تاريخ و زمان مي توانيد از تابع “Now” استفاده کنيد . کد بعدي روش استفاده از تابع “Now” را نشان مي دهد
<HTML>
<HEAD>
<TITLE>Hello World !</TITLE>
</HEAD>
<BODY>
<%
Response.Write Now
%>
</BODY>
</HTML>

جزييات بيشتر : در کد زير قصد داريم به طور جزيي تر به مساله تاريخ و زمان بپردازيم . مي خواهيم سال و ماه و ساعت و دقيقه و ثانيه را نشان بدهيم
<HTML>
<HEAD>
<TITLE>Hello World !</TITLE>
</HEAD>
<BODY>
<%
Response.Write “Year: ” & Year (Now)
Response.Write “Month: ” & Month (Now)
Response.Write “MonthName: ” & MonthName (Month(Now))

Response.Write “Hour: ” & Hour (Now)
Response.Write “Minute: ” & Minute (Now)
Response.Write “Second: ” & Second (Now)
%>
</BODY>
</HTML>
اسکريپتهاي طرف سرور ( Server Side ) چگونه به نظر مي رسند ؟
اسکريپت هاي طرف سرور عموما با %> شروع و با <% خاتمه مي يابند . به اولي تگ شروع کننده و به دومي تگ پايان بخش گفته مي شود . بين اين دو علامت اسکريپت هاي طرف سرور قرار مي گيرند. شما مي توانيد اسکريپت هاي طرف سرور خود را هر جاي کد صفحه از جمله در داخل تگ هاي HTML به کار ببريد .

براي اجراي صفحات ASP به چه چيزي نياز هست ؟
به خاطر اينکه سرور بايد پردازش روي اسکريپت هاي ASP انجام دهد بايد اين توانايي را داشته باشد . تنها سرور هايي که از ASP به طور کامل پشتيباني مي کنند Microsoft Internet Information Services و Microsoft Personal Web Sever هستند .
Internet Information Services
اين يک وب سرور مايکروسافت است که براي ويندوز ان.تي طراحي شده . اين سرور تنها در ويندوز ان.تي ۴ و ويندوز ۲۰۰۰ نسخه حرفه اي و نسخه سرور قابل اجراست . نسخه فعلي اين سرور ۵ است و به همراه ويندوز ۲۰۰۰ عرضه شده . ( مترجم : اين متن قديمي است . آخرين نسخه IIS نسخه ششم است که همراه با ويندوز دات نت ۲۰۰۳ عرضه شده ، در ويندوز اکس پي شما به نسخه ۵٫۵ وب سرور IIS دسترسي داريد )
Personal Web Sever
اين وب سرور روي تمام ويندوز ها از جمله ۹۵ و ۹۸ و ام.اي کار مي کند . اگر شما از ويندوزهاي ۹x يا ام.اي استفاده مي کنيد تنها راه براي اجراي صفحات ASP استفاده از اين وب سرور است .

نصب IIS در ويندوز اکس پي و ۲۰۰۰
۱٫ به کنترل پنل برويد .
۲٫ روي Add or remove Programs کليک کنيد .
۳٫در پنجره Add or Remove Programs گزينه Add/Remove Windows Components را انتخاب کنيد .
۴٫ در ويزارد Windows Components Wizard گزينه Internet Information Services [IIS] را انتخاب کنيد . براي نصب بايد سي دي ويندوز را داخل درايو سي دي قرار بدهيد.
بعد از اتمام عمليات نصب در درايو c يک فولدر به نام Inetpub ساخته مي شود . شما بايد صفحات ASP خود را داخل فولدر wwwroot که داخل همين فولدر Inetpub هست قرار بدهيد.

دسترسي به صفحات وب شما
حالا که سيستم شما به يک سرور تبديل شده ببينيم چه جوري به صفحات وب اين سرور مي شود دسترسي داشت . فرض کنيد يک صفحه به نام test.asp را در فولدر wwwroot ذخيره کرديد . براي دسترسي به اين صفحه اول مرورگر خود را باز کنيد . مطمئن شويد که در حالت offline نيستيد . در نوار آدرس تايپ کنيد : http://localhost/test.asp . به اين ترتيب صفحه شما نمايش داده ميشود . درست مثل اينکه يک سرور واقعي روي اينترنت باشد .

چرا ASP ؟
چرا به ASP نياز هست زماني که HTML مي تواند تمام نيازهاي شما را برآورده کند ؟ اگر مي خواهيد اطلاعات را نمايش دهيد ، تمام آن چيزي که بايد انجام دهيد اين است که اديتور مورد علاقه خود را باز کنيد ، چند تا تگ HTML بنويسيد و صفحه را با پسوند HTML ذخيره کنيد
اگر بخواهيد اطلاعاتي که تغيير مي کنند را نمايش دهيد چطور ؟ آيا باز هم اين روش مفيد است . فرض کنيد شما يک صفحه شامل اطلاعاتي داريد که مدام به روز مي شوند مثل وضعيت هوا ، يا سهام بورس ، و … HTML چاره کار نيست ، اون چيزي که شما بهش احتياج داريد يک سيستم براي ارايه اطلاعات ديناميک ( پويا ) هست . ASP همان چيزي است که لازم داريد

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

<%@ Language=”VBScript” %>
<html>
<body>
The current time is:
<%
Response.Write Time ( )
%>
</body>
</html>

تجزيه و تحليل: توجه کنيد که کد ASP بوسيله علامت <% %> احاطه شده است. وقتي يک صفحه ASP از يک سرويس دهنده وب درخواست مي گردد، سرويس دهنده وب به طور کامل همه کدهاي مابين علامت <% %> را قبل از فرستان خروجي براي سرويس گيرنده پردازش مي کند. کد بالا ممکن است شباهت زيادي به فايل HTML واقعي داشته باشد. در حقيقت، تنها کد ASP خطوط ۱و ۵ مي باشد. خط ۱ به سرويس دهنده وب اطلاع ميدهد که زبان Scripting در اين صفحه ASP بکار رفته است. آن هم از نوع VBScript. به خاطر بياوريد

که يک صفحه ASP مي تواند از يکي از چهار زبان اصلي اسکريپت نويسي استفاده نمايد.براي تعيين کردن يک زبان اسکريپت نويسي، براي يک صفحه ASP، شما از فرمان Language @ استفاده مي کنيد. اگر مي خواستيد از JScript بجاي VBScript در مثال بالا استفاده کنيد، بايد خط اول کد بالا را بصورت زير بنويسيد:

<%@ Language= “JScript” %>

حط دوم از کد بالا وقت و زمان فعلي را نشان ميدهند. تابع ( ) Time يک تابع VBScript مي باشد که در جلسات بعدي در موردش بيشتر بحث خواهد شد. قسمت Response.Write نتايج حاصل از تابع ( ) Time را به سرويس گيرنده به عنوان خروجي مي فرستد.(در مورد شيء Response و متد Response.Write در جلسات بعدي بيشتر بحث خواهد شد.)
اگر يک سرويس دهنده وب مابکروسافت بر روي کامپيوترتان داريد، ميتوانيد کدهاي بالا را آزمايش نماييد. يک فايل با نام current-time.asp ايجاد کرده و آنرا در دايرکتوري ريشه سايت وب(wwwroot) خود قرار دهيد.

 

http://localhost/current-time.asp

خروجي: The current time is: 10.26.57 AM
فرم‌ها در ASP و وردى‌هاى كاربر
دستورات Request.QueryString و Request.Form مى‌توانند براى گرفتن اطلاعات از فرم‌ها، مثل ورودى‌هاى كاربر استفاده گردند.
آبجكت Request مى‌تواند براى گرفتن اطلاعات از كاربر از فرم‌ها استفاده گردد.

<form method=”get” action=”simpleform.asp”>
First Name: <input type=”text” name=”fname”>
<br />
Last Name: <input type=”text” name=”lname”>
<br /><br />
<input type=”submit” value=”Submit”>
</form>
ورودى‌هاى كاربر مى‌توانند از دو طريق استفاده گردد: با Request.QueryString يا Request.Form
Request.QueryString

دستور Request.QueryString براى جمع كردن مقادير موجود در يك فرم با متد “get” استفاده مي شود. اطلاعات فرستاده شده از فرمى با متد “get” براي هر كسى قابل مشاده است (اين اطلاعات در قسمت آدرس Browser نشان داده مي شود) و در مورد مقدار اطلاعات محدوديت دارد.اگر كاربر در فرمى با متد “get” مقدار “Bill” و “Gates” را وارد كنيد، URLى كه به سرور فرستاده مى‌شود شبيه به اين خواهد بود:
http://www.irandevelopers.com/simpleform.asp?fname=Bill&lname=Gates
فرض كنيد فايل “simpleform.asp” حاوى اسكريپت زير است:
<body>
Welcome

<%
response.write(request.querystring(“fname”))
response.write(” ” & request.querystring(“lname”))
%>
</body>

Browser خط زير در قسمت Body سند نشان خواهد داد:
Welcome Bill Gates
Request.Form
دستور Request.Form براي جمع كردن اطلاعات از يك فرم با متد “post” استفاده مى‌شود. اطلاعات فرستاده شده از فرمى با متد POST براي بقيه غيرقابل مشاهده است و هيچ محدوديتى در مقدار اطلاعات فرستاده شده ندارد.