شی  Response برای ارسال خروجی از سرور برای کامپیوتر کاربر بکار می رود

دقت کنید :

در فصل اول گفتم ، اگر می خواهید برنامه های Asp روی سیستم تان اجرا شود باید iis را نصب کنید تا سیستم شما به یک سرور وب تبدیل شود

چرا ؟

چون شما می خواهید در کامپیوتر خودتان asp را یاد بگیرید

 

اما در فضای واقعی اینترنت ، iis فقط روی کامپیوتری نصب می شود که نقش سرور را دارد

یعنی شما می روید و فایلهای وب خود را در ان سرور اپلود می کنید

و کاربری که صفحه وب شما را که مثلا پسوند Asp دارد می گیرد

نیازی نیست که iis نصب کرده بشد تا اجرای برنامه را ببیند

بلکه دستورات asp درون ان فایل ، در سرور اجرا شده

نتیجه اجرای ان برای کاربر ارسال می شود

و می توان ان نتیجه را در مرورگر کاربر نمایش داد

 در ادامه با ذکر مثالهایی روش استفاده از این شی را خواهید اموخت

notepad را باز کنید

مثالها را در ان کپی کنید

با پسوند Asp در مسیر iis ذخیره کنید

اجرا کنید

لذت ببرید !

نوشتن متن در خروجی

 

<!DOCTYPE html>
<html>
<body>

<%
response.write("Hello World!")
%>


</body>
</html>

 مشاهده و اجرای برنامه کامل
 
روش قالب بندی متن با تگ های html درون محدوده asp نویسی

 دقت کنید

این مورد را در php هم داریم

در جاوا اسکریپت هم داریم

کلا در هر زبانی که دستوراتش باید از دستورات html جدا شده درو ن تگ های باز و بسته زبان خودش قرار بگیرد این را داریم که :

اگر بخواهیم در هر زبانی غیر از زبان html ، از تگ های html برای خوشگل کردن خروجی استفاده کنیم

باید تگ های html درون کوتیشن و در دستورات خروجی ان زبان نوشته شوند

نکته :

 در صورتی که خود دستور html دارای کوتیشن باشد باید بجای کوتیشن از تک کوتیشن استفاده شود

 

<!DOCTYPE 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>

 
 مشاهده و اجرای برنامه کامل
 
هدایت کردن کاربر به صفحه ای دیگر

بعد از اجرای برنامه  زیر ، یک فرم با دو دکمه رایویی نشان داده می شود

نام مجموعه دو دکمه رادیویی ، select است

هر کدام را انتخاب نماید ، با کلیک روی submit ، با دستور

       Response.Redirect(Request.Form("select"))

به صفحه ای می رویم که در ویژگی value دکمه رادیویی انتخاب شده قرار دارد .

 

 

 اگر کاربر بدون انتخاب هیچک از این دو روی دکمه submit کلیک کند طبق پیش فرض به همان صفحه ای می رویم که در ویژگی action تگ فرم مشخص شده است

 

 

<%
if Request.Form("select")<>"" then
       Response.Redirect(Request.Form("select"))
end if
%>
  

<!DOCTYPE html>
<html>
<body>

<form action="demo_redirect.asp" method="post">

<input type="radio" name="select"
value="demo_server.asp">
Server Example<br>

<input type="radio" name="select"
value="demo_text.asp">
Text Example<br><br>
<input type="submit" value="Go!">

</form>

</body>
</html>

 مشاهده و اجرای برنامه کامل
 
نمایش پیوند تصادفی

 

<!DOCTYPE html>
<html>
<body>

<%
randomize()
r=rnd()
if r>0.5 then
  response.write("<a href='http://www.w3schools.com'>W3Schools.com!</a>")
else
  response.write("<a href='http://www.refsnesdata.no'>Refsnesdata.no!</a>")
end if
%>


<p>
This example demonstrates a link, each time you load the page, it will display
one of two links: W3Schools.com! OR Refsnesdata.no! There is a 50% chance for
each of them.
</p>

</body>
</html>

 مشاهده و اجرای برنامه کامل

 ما ادرس پیوندها را خودمان در برنامه می نویسیم

دستور randomie یعنی هر دفعه اجرای برنامه ، یک عدد دیگر را حدس بزن

تابع rnd یک عدد تصادفی از صفر تا بینهایت می دهد که در متغیر r قرار می گیرد

حالا مقدار حدس زده شده در if بررسی می شود

مثلا در این مثال این طور گفته شده که

اگر عدد حدس زده شده بیشتر از نیم باشد

پیوندی با عنوان W3Schools.com! برای رفتن به صفحه ی http://www.w3schools.com نشان داده شود

در غیر این صورت پیوندی با عنوان Refsnesdata.no! برای رفتن به صفحه ی

http://www.refsnesdata.no نشن داده شود

 

 
کنترل کردن بافر - ویژگی buffer
 ویژگی Buffer  مشخص می کند که ایا بافر کرد ن خروجی انجام شود یا نه
 زمانی که خروجی بافر می شود ، سرور تا زمانی که پردازش تمام اسکریپت ها تمام نشده ، یا تا زمانی که اسکریپتی دستور flush  یا end را صادر نکرده ،  از ارسال خروجی به مرورگر کاربر جلوگیری می کند ، یا

 نکته :

اگر بخواهید از این ویژگی استفاده کنید ،باید  انرا قبل از تگ باز html در برنامه Asp تا ن بنویسید

 
 روش استفاده از این ویژگی :

 

response.Buffer[=flag]

 اشنایی با پارامتر flag:

یک مقدار بولین یعنی true یا false باید در ان قرار گیرد

که مشخص می کند ایا خروجی بافر شود یا نه

مقدار false یعنی بافر شدن انجام نشودو سرور مقدار خروجی بدست امده را به مرورگر کاربر ارسال خواهد کرد . اگر buffer را مشخص نکند ، در iis نسخه 4.0 مقدار پیش فرض ان false ست

اما مقدار پیش فرض در iis نسخه 5 به بعد برابر true است

 

و اما مقدار true یعنی عمل بافر کردن انجام شود 

سرور جلوی ارسال خروجی بدست امده را به مرورگر کاربر می گیرد و این توقیف تا پایان انجام شدن تمام اسکریپت های موجود در ا ن صفحه Asp طول می کشد

البته اگر در این بین در اسکریپتی دستور end یا Flush  بود عمل بافر کردن تمام می شود

 

 مثال 1 :

در این مثال ، قبل از اتمام اجرای حلقه هیچ خروجی به مرورگر کاربر ارسال نمی شود

اگر buffer برابر false شود ، همزمان با اجرای حلقه هر خروجی   بدست امده در خط  جداگانه در مرورگر کاربر نشان داده می شوند

 

<%response.Buffer=true%>
<html>
<body>
<%
for i=1 to 100
  response.write(i & "<br>")
next
%>
</body>
</html>

 
 مثال 2:

 

<%response.Buffer=true%>
<html>
<body>
<p>I write some text, but I will control when
the text will be sent to the browser.</p>
<p>The text is not sent yet. I hold it back!</p>
<p>OK, let it go!</p>
<%response.Flush%>
</body>
</html>

 خط اول باعث می شود که هیچکدام از متن های مشخص شده با تگ p در خروجی دیده نشوند

چون جلوی نمایش انها را گرفته

اما به محض رسیدن به خط response.Flush عمل بافر تمام می شود

 
 مثال 3 :

 

<%response.Buffer=true%>
<html>
<body>
<p>This is some text I want to send to the user.</p>
<p>No, I changed my mind. I want to clear the text.</p>
<%response.Clear%>
</body>
</html>

 خط اول ، جلوی نمایش متن های خروجی را می گیرد

اما خط اخر متن بافر شده را کلا پاک می کند البته نه از فایل برنامه بلکه از حافظه ای که محتوای ان باید در مرورگر کاربر نمایش داده شود پس چیزی به کاربر نمایش داده نمی شود و بافر پاک  می شود

 

 در این 3 مثال شما چند ویژگی و متد شی response اشنا شدید :

response.Buffer

response.Flush

response.Clear

 
متوقف کردن اجرای ادامه برنامه
 می توان بادستور Response.End از ادامه اجرای دستورات برنامه جلوگیری کرد و خروجیهایی را که تا قبل از این دستور هستند فقط نمایش داد

 

مثال:

 

<!DOCTYPE html>
<html>
<body>
<p>من منتظر دیدن متنی هستم اما این متن هرگز <br>
<%
Response.End
%>

نشان داده نخواهد شد زیرا قبل از نمایش کامل متن اجرای ادامه برنامه متوقف شده </p>
</body>
</html>

 مشاهده و اجرای برنامه کامل

 شما در این مثال با ویژگی و کاربرد  دیگری از شی response اشنا شدید

Response.End

 
مدت زمان cach کردن
مشخص می کند قبل از پاک شدن صفحه وب asp درخواستی کاربر از حافظه مرورگر ،  مدت زمان cached  شدن هر صفحه asp در رایانه کاربر چقدر باشد
 مثال:

 

<%Response.Expires=-1%>
<!DOCTYPE html>
<html>
<body>
<p>This page will be refreshed with each access!</p>
</body>
</html>

 چون مدت زمان باقی ماندن صفحه وب درخواستی کاربر در حافظه مرورگرش -1 است لذا هر بار که کاربر این صفحه را تقاضا کند باید از سرور برای او ارسال مجدد شود
 مشاهده و اجرای برنامه کامل

  در این مثال با یکی دیگر از ویژگیهای شی response اشنا شدید

Response.Expires

 

تعیین زمان و تاریخ اتمام catch بودن صفحه در مرورگر کاربر
 مشخص می کند صفحه وب catch شده در مرورگر کاربر در چه تاریخ و زمانی منقضی شود

 

<%
Response.ExpiresAbsolute=#May 05,2001 05:30:30#
%>

<!DOCTYPE html>
<html>
<body>
<p>This page will expire on May 05, 2001 05:30:30!</p>
</body>
</html>

 در این مثال با یکی دیگر از ویژگیهای شی response اشنا شدید

Response.ExpiresAbsolute

 
ایا کاربر هنوز به سرور متصل است ؟
 ایا هنوز کاربر در حال مشاهده صفحه ای از سرور وب است ؟

 

<!DOCTYPE html>
<html>
<body>

<%
If Response.IsClientConnected=true then
Response.Write("The user is still connected!")
else
Response.Write("The user is not connected!")
end if
%>


</body>
</html>

 ویژگی بولین IsClientConnected از شی response این مورد را بررسی می کند

در صورت true بود ن یعنی کاربر هنوز به سرور متصل است

 

 مشاهده و اجرای برنامه کامل
 
تعیین نوع محتوای صفحه وب

برای این منظور از ویژگی ContentType شی response استفاده می کنیم

 

 در مثال زیر محتوای صفحه وب ، متن و کدهای html است

 

<%
Response.ContentType="text/html"
%>

<!DOCTYPE html>
<html>
<body>

<p>This is some text</p>

</body>
</html>

 مشاهده و اجرای برنامه کامل
 
تعیین نام برای مجموعه ای از کاراکترها
 از ویژگی شی response استفاده می کنیم

 

<%
Response.Charset="ISO8859-1"
%>

<!DOCTYPE html>
<html>
<body>

<p>This is some text</p>

</body>
</html>

 مشاهده و اجرای برنامه کامل
 

در ادامه با مجموعه ها ، متدها و ویژگیهای دیگری از

شی response اشنا می شوید

 
 

مجموعه ها

مجموعهتوضیحات
Cookies

مقدار کوکی را تنظیم می کند

اگر کوکی وجود ندارد انرا بوجود می اورد در غیر این صورت مقدار انرا دریافت می کند 

 

 

 

ویژگیها

ویژگیتوضیحات
Buffer

مشخص می کند ایا صفحه خروجی بافر شود یا نه

CacheControl

مشخص می کند ایا پراکسی سرور می تواند خروجی مشخص شده با Asp را catch کند یا نه

Charset

به نوع محتوای هدر شی response نم مجموعه ای از کاراکترها  را اضافه می کند

ContentType

برای شی Response نوع محتوای HTTP را تنظیم می کند

Expires

مشخص می کند قبل از تاریخ انقضای حضور صفحه Asp در مرورگر کاربر ، چند دقیقه این صفحه در مرورگر کاربر catch باشد

ExpiresAbsolute

مشخص می کند یک صفحه asp تا چه تاریخ و زمانی در مرورگر کاربر catch باشد و بعد از ان منقضی شود

IsClientConnected

مشخص می کند ایا کاربر از سرور قطع شده یا نه

Pics

مقداری را به label هدر pics پاسخ  می افزاید

Status

وضعیت خط پاسخ  سرور را مشخص می کند

 

 

متدها

متدتوضیحات
AddHeader

یک هدر جدید http و مقداری را به پاسخ http می افزاید

AppendToLog رشته ای را به انتهای فایل log می افزاید
BinaryWrite

بدو ن هیچ تبدیل کاراکتری ، داده ها را مستقیما در خروجی می نویسد

Clear تمام خروجیهای html بافر شده را پاک می کند
End اجرای ادامه دستورات اسکریپت را تمام کرده و خروجی فعلی را بر می گرداند
Flush خروجیهای بافر شده را بلافاصله نمایش می دهد
Redirect کاربر را به صفحه وب دلخواه ما می برد
Write خروجی مورد نظر را در مرورگر نشان می دهد