تماس درباره   صفحه اصلی
  برنامه نويسی مبتنی بر وب > ASP  
 
 

ASP


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

ASP چیست؟
ASP.NET چيست؟
اشيای Response و Request
Response.Write
Response.Redirect
متغيرهای ASP
شیء Session
شیء Application
Request.QueryString
Request.Form


ASP چیست؟

تکنولوژی (Active Server Pages) ASP متعلق به میکروسافت چارچوبی برای ایجاد صفحات وب پویا فراهم می‌کند که اینترنت و برنامه‌های کاربردی اینترنت را قادر می‌سازد باهم تعامل کنند.

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

ASP برنامه‌ای است که درون IIS اجرا می‌شود. برای اجرای IIS کامپیوتر شما باید سیستم عامل Windows NT 4.0 یا نسخه‌های بعد از آن را دارا باشد. در اين حالت کامپيوتر شما بعنوان وب سرور عمل می‌کند.

قبل از فراگیری ASP باید مفاهیم پایه‌ای HTML/XHTML و يک زبان اسکریپتی مانند JavaScript يا VBScript را بلد باشید.


فایل ASP

يک فايل ASP می تواند حاوی متن، تگ‌های HTML و اسکریپت باشد. اسکریپت‌های درون فایل ASP بر روی سرور اجرا می‌شوند.

کليه صفحات ASP بايد با پسوند ".asp" ذخيره شوند.

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

چون اسکريپت‌های ASP روی سرور اجرا می‌شوند مرورگری که آنها را نمايش می‌دهد نيازی به پشتيبانی از آنها ندارد.


چگونه ASP به IIS متصل می شود

ASP در حقيقت يک DLL به نام asp.dll است که به طور پيش فرض در فهرست Winnt\System32\intsrv نصب می‌شود. اين DLL مسئول گرفتن صفحات ASP (که با انشعاب .asp مشخص شده‌اند) و بررسی آنها برای اسکريپت‌های سمت سرور است. اين اسکريپت‌ها سپس به موتور اسکريپتی مناسب داده می‌شوند. نتايج اجرای اسکريپت با متن و HTML موجود در صفحه ترکيب می‌شود. صفحه کامل به وب سرور داده می شود که به نوبه خود آنرا به کاربری که صفحه را درخواست کرده می‌دهد.

بنابراين يک صفحه وب قبل از ارسال به سمت کاربر تغيير يا به طور پويا ايجاد می‌شود.

اسکريپت‌های سمت سرور می‌توانند عبارت، دستورات، زيربرنامه يا عملگرهای مجاز زبان اسکريپتی که انتخاب کرديد باشند.

اسکريپت‌های سمت سرور توسط علائم <% و %> محصور می‌شوند. موتور ASP هر متنی که داخل آن باشد را تحليل می‌کند.


ASP.NET چيست؟

تکنولوژی قدیمی صفحات سمت سرور ASP کلاسیک ناميده می‌شود. که بالاترین نسخه آن ASP 3.0 است. باوجود قدرت و انعطاف پذيری کدنويسی زيادی لازم بود درضمن يک قالب يا محيط برای پياده سازی را در اختيار قرار نمی داد. ASP.NET راه حلی برای حل اين مشکلات بود.

ASP.NET تکنولوژی کاملا جديدی از شرکت ميکروسافت برای صفحات سمت سرور است. در حقيقت نسل بعدی ASP است. ASP.NET بخش عمده چارچوب دات نت (.NET Framework) است.

چارچوب دات نت، زیربنای دانت نت و محيطی برای ايجاد، توسعه و اجرای برنامه‌ها و سرویس‌های وب است.

+ASP نام اوليه ASP.NET بود که توسط ميکروسافت استفاده می‌شد. ASP.NET 2.0، ASP.NET 3.0 و ASP.NET 4.0 نسخه های بعدی دات نت هستند که ابزارها و کتابخانه های جدیدی را به دات نت اضافه کردند.

دات نت نیز بر روی IIS اجرا می‌شود.


اشيای Response و Request

در ASP درخواست کاربر و پاسخ سرور از طريق دو شی Request و Response ساخته می‌شود.

تقريبا تمام کارهائی که در صفحه ASP انجام می‌دهيم بستگی به اين دو شی دارد. نحوه استفاده از آنها می‌تواند روی کارائی و قدرت صفحات تاثير بگذارد. البته کار اصلی آنها دسترسی به مقاديری است که کاربر از طريق قسمت <form> صفحه HTML يا اضافه کردن يک رشته به URL به سرور ارسال می‌کند و ايجاد خروجی مناسب برای برگرداندن به کاربراست.

شی Request شامل کليه اطلاعات يا فرمی است که کاربر هنگام درخواست صفحه آماده کرده است. که شامل متغيرهای HTTP، cookie ها، کنترل‌های HTML در بخش فرم و هر مقدار اضافه شده به URL مثل QueryString است. همچنين هر گواهی که توسط SSL يا پروتکل‌های ديگر ارتباطی برای رمزگذاری استفاده می‌شود و خواصی که به ما در مديريت اين اتصال کمک می‌کند.

شی Response برای توليد پاسخی است که سرور برای ارسال به کاربر آماده می‌کند. که شامل متغيرهای HTTP، cookie ها، اطلاعاتی درباره محتوائی که به مرورگر ارسال می‌کنيم، و مجموعه‌ای از متدهای برای ايجاد خروجی مثل Response.Write است.

ورودی کاربر می‌تواند توسط دستور Request.Form يا Request.QueryString بازيابی شود.


Response.Write

دستور response.write برای نوشتن خروجی روی برازر است.


مثال. متن "Hello World" برای برازر ارسال می‌شود و در بدنه مستند نوشته می‌شود.

<html>
<body>
<%
response.write("Hello World!")
%>
</body>
</html>
Show Example »


به جای دستور response.write يک راه کوتاهتر هم وجود دارد.


مثال. متن "Hello World" به برازر ارسال می‌شود.

<html>
<body>
<%
="Hello World!"
%>
</body>
</html>


نکته. زبان اسکريپتی پيش فرض ASP زبان VBScript است. ASP به شما امکان انتخاب زبان را می‌دهد. می‌توانيد زبان را به صورت زير تعيين کنيد. اگر می خواهيد زبان ديگری به عنوان زبان پيش‌فرض در يک صفحه خاص باشد در بالای صفحه مشخص کنيد.

نکته. دقت داشته باشيد JavaScript حساس به متن است. کدهای شما هرجا که لازم است بايد با حروف بزرگ يا کوچک نوشته شوند.


مثال. زبان JavaScript به عنوان زبان پيش‌فرض تعريف شده است.

<%@ language="javascript"%>
<html>
<body>
<%
Response.Write("Hello World!")
%>
</body>
</html>


مثال. از تگ‌های HTML برای فرمت خروجی می‌توان استفاده کرد.

<html>
<body>
<%
Response.Write("<h2>You can use HTML tags to format the text!</h2>")
response.write("<p style='color:#0000ff'>This text is styled with the style attribute!</p>")
%>
</body>
</html>

مثال. در VBScript علامت تک کوتيشن برای شروع خط توضيحات استفاده می‌شود.

<%@ language="vbscript"%>
<%
   'This is a comment.
   'Nothing after a tick will be seen by the user
%>


Request.Redirect

متد redirect کاربر را به صفحه ديگری هدايت می کند.


مثال. هدايت مرورگر کاربر به آدرس http://www.hpkclasses.ir.

<%
Response.Redirect "http://www.hpkclasses.ir"
%>


متغيرهای ASP

کليه متغيرها در ASP به صورت Variant تعريف می‌شوند. نياز به تعريف آنها به صورت عدد يا رشته نيست.


مثال. اسکريپت زير محتوای دو متغير را به همراه پيغام در برازر نشان می دهد.

<%
   Dim SomeText
   Dim SomeNum

   SomeText = "ASP is great!"
   SomeNum = 1

   Response.Write(SomeText)
   Response.Write(SomeNum)

   Response.Write ("Right now you are thinking that " & SomeText)
%>

مثال. اعلان يک آرايه برای ذخيره اسامی.

<html>
<body>

<%
Dim famname(5),i
famname(0) = "Jan Egil"
famname(1) = "Tove"
famname(2) = "Hege"
famname(3) = "Stale"

For i = 0 to 3
response.write(famname(i) & "<br>")
Next
%>

</body>
</html>


نکته. متغيری که خارج از زيربرنامه تعريف شود توسط هر اسکريپتی درون فايل ASP قابل دسترسی و تغيير است.
نکته. متغيرهایی که درون زيربرنامه تعريف می شوند هنگام خروج از زيربرنامه از بين می روند. اسکريپتی خارج از زيربرنامه به آنها دسترسی ندارد.
نکته. برای تعريف متغيرهايی که در بيشتر از يک فايل قابل دسترسی باشند از متغيرهای session و application استفاده می‌شود.


شیء Session

از شی Session برای ذخیره و بازیابی اطلاعات و مقادیر هر کاربر در صفحه استفاده می‌شود .

پروتکل HTTP یک پروتکل ناپایدار است يعنی سرور هر درخواست وب را به صورت یک در خواست مستقل پردازش می‌کند و اطلاعی درباره متغیرها و اطلاعاتی که در درخواست‌های قبلی استفاده شده‌اند ندارد. شی Session ذخیره و بازیابی اطلاعات مورد نظر به ازای هر کاربر را هنگام حرکت بین صفحات برنامه وب ميسر می‌کند.

متغيرهايی که در شیء Session ذخيره می‌شوند اطلاعاتی درباره يک کاربر می‌دهند و در کليه صفحات يک برنامه وب قابل دسترس هستند.

سرور برای هر کاربر جديد يک شیء Session ايجاد می‌کند . درخواست‌های ارسالی از سوی یک کاربر تا زمانی که پنجره مرورگرش باز و فعال است شناسایی و اطلاعات لازم و مرتبط در Session قرار می‌گيرد.


مثال. در تکه کد زیر نحوه ایجاد دو متغیر با نام‌های username و age است که به ترتیب با "ali" و "50" مقداردهی شده اند.

<%
Session("username")="ali"
Session("age")=50
%>

مثال. روش دوم مقداردهی به متغیرهایSession.

<%
Session.Add("name", "Ali");
%>

مثال. مقدار متغیر name از Session خوانده و در صفحه وب به نمایش در می آید.

Welcome <%Response.Write(Session("username"))%>

مثال. حذف متغير sale در صورتی که متغير age زير 18 باشد.

<%
If Session.Contents("age")<18 then
Session.Contents.Remove("sale")
End If
%>

مثال. اگر بخواهیم تمای اطلاعات موجود در Session شامل تمامی متغیرها آن را پاک کنیم از تابع RemoveAll به شکل زیر استفاده می‌کنیم.

<%
Session.Contents.RemoveAll()
%>

مثال. برای این که بخواهیم تمامی مقادیر موجود در متغیرهای Session را بخوانیم مانند تکه کد زیر عمل می‌کنیم.

<%
dim i
dim j
j=Session.Contents.Count
Response.Write("Session variables: " & j)
For i=1 to j
Response.Write(Session.Contents(i) & "<br>")
Next
%>


تا زمانی که Session منقضی نشده باشند می توانیم متغیرهای آنرا بازیابی و استفاده کنيم. زمانی که کاربر هيچ درخواست صفحه‌ای از برنامه ارسال نکند، Session ها خاتمه یا به اصطلاح منقضی (expired) می‌شود. این زمان به شکل پیش‌فرض 20 دقیقه می‌باشد. البته این زمان قابل تغییر است و بسته به حساسیت و میزان امنیت برنامه کاربردی توسط برنامه نویس می‌تواند مقداردهی شود.

خاصيت Timeout در شیء Session برای تنظيم زمانی غير از پيش‌فرض است.


مثال. فاصله زمانی 5 دقيقه برقرار می‌شود.

<%
Session.Timeout=5
%>

مثال. متد Abandon برای خاتمه فوری يک session است.

<%
Session.Abandon
%>


نکته. پيدا کردن اين فاصله زمان انقضا ساده نيست. تشخيص اينکه آيا درخواست کاربر آخرين بوده يا خير راحت نيست.
نکته. تنها مقدار کمی اطلاعات را در متغيرهای Session ذخيره کنيد.


شیء Application

يک برنامه کاربردی روی وب معمولا از چندين صفحه ASP تشکيل شده که با هم کار می‌کنند. شیء Application برای متصل کردن اين فايل‌ها به يکديگر است. متغيرهای Application مشابه Session در کليه صفحات يک برنامه کاربردی قابل دسترسی هستند با اين تفاوت که کليه کاربران از يک شیء مشترک بهره می‌برند. به همين دليل برای نگهداری اطلاعاتی که در همه صفحات بکار می‌روند نظير اتصال پايگاه‌داده استفاده می‌شوند.

اگر در جايی شیء Application تغيير کند روی کليه صفحات تاثير می‌گذارد.


مثال. ايجاد متغير Application.

<script language="vbscript" runat="server">

Sub Application_OnStart
application("vartime")=""
application("users")=1
End Sub

</script>

مثال. نمايش متغير مثال بالا.

There are
<%
Response.Write(Application("users"))
%>
active connections.

مثال. مجموعه Contents کليه متغيرهای برنامه را در خود دارد. کد زير با يک حلقه محتوای آنرا نمايش می‌دهد.

<%
dim i
For Each i in Application.Contents
Response.Write(i & "<br>")
Next
%>


نکته. با متد Lock در شیء Application می‌توانيد يک برنامه را قفل کنيد. بقيه کاربران قادر به تغيير متغيرهای Application برنامه قفل شده نخواهند بود. با متد Unlock قفل باز می‌شود.


Request.QueryString

کليه مقاديری که کاربر با پرکردن <form> درصفحه آماده می‌کند يا آنهائی که به انتهای URL اضافه می‌شوند توسط دو مجموعه Form و QueryString بازيابی می‌شوند.

دستور Request.QueryString برای جمع آوری مقادير در فرمی است که با صفت‌خاصه method="get" ساخته شده است. اطلاعاتی که با متد get ارسال می‌شوند برای همه قابل‌رويت است زيرا در بخش آدرس مرورگر نشان داده می‌شود.


مثال. نمونه يک فرم ورودی که با متد get ارسال می‌شود.

<form action="simpleform.asp" method="get">
FirstName: <input name="fname" type="text">
LastName: <input name="lname" type="text">
<input type="submit" value="send">
</form>

اگر در فرم بالا کاربر مقادير "Bill"و "Gates" را وارد کند آدرس URL که برای سرور ارسال می‌شود به صورت زير خواهد بود.

http://www.MyWebSite.com/simpleform.asp?fname=Bill&lname=Gates

اگر فايل"simpleform.asp" شامل اسکريپت زير باشد.

<body>
Welcome
<%
response.write(request.querystring("fname"))
response.write(" " & request.querystring("lname"))
%> </body>

مرورگر متن زير را نمايش خواهد داد:

Welcome Bill Gates


نکته. مجموعه مقاديری که می توان با متد get ارسال کرد محدود است.


Request.Form

برای گردآوری اطلاعات درون يک فرم که توسط متد "post" ارسال شده از دستور Request.Form استفاده می شود. اطلاعاتی که با متد post ارسال می‌شوند برای بقيه قابل رويت نيستند و برخلاف متد get محدوديتی در مقدار ندارند.


مثال. اگر در فرم بالا کاربر مقادير "Bill"و "Gates" را وارد کند آدرس URL که برای سرور ارسال می‌شود به صورت زير است.

http://www.MyWebSite.com/simpleform.asp

اگر فايل"simpleform.asp" شامل اسکريپت زير باشد مرورگر خروجی مشابه مثال قبل را خواهد داشت.

<body>
Welcome
<%
response.write(request.form("fname"))
response.write(" " & request.form("lname"))
%> </body>

می‌توانيم با دانستن ايندکس صحيح کنترل روی فرم (که از کنترل اول در HTML شروع می‌شود و به ترتيب تعريف کنترل‌ها ادامه پيدا می کند) به مجموعه فرم دسترسی پيدا کنيم. البته اين حالت توصيه نمی شود چون ترتيب کنترل‌ها ممکن است تغيير کند.

<%
FirstName=request.form(1))
LastName=request.form(2))
%>

مثال. کل مجموعه مقادير فرم بدون کليد يا ايندکس بازيابی می شود.

AllFormContent=Request.Form


مثال. هدايت کاربر به صفحه ديگر

مثال. ايجاد يک لينک تصادفی

مثال. کنترل بافر

مثال. پاک کردن بافر

مثال. پايان دادن به اسکريپت در ميان پردازش و برگرداندن نتايج

مثال. بررسی اينکه کاربر هنوز متصل است يا خير

مثال. تنظيم مجموعه کاراکتر

مثال. نمايش پيغام وابسته به زمان روی سرور.

مثال. نمايش رشته Querystring

مثال. ارسال اطلاعات فرم با متد get

مثال. ارسال اطلاعات فرم با متد post

مثال. کاربا با فرمی دارای دکمه راديوی

مثال. کاربا فرمی دارای چک باکس


 

 


 

صفحه اصلی| PDF| درباره| تماس