מדריך ASP – האובייקט Server

Server
אוספים (Collections)תכונות (Properties)שיטות (Methods)
 ScriptTimeoutCreateObject
  Execute
  HTMLEncode
  MapPath
  Transfer
  URLEncode

האובייקט Server מכיל אוסף פקודות, שלא תמיד קשורות לשרת, אך הן שימושיות מאוד.

Server.CreateObject


שיטה זו משמשת ליצירת מופעים של אובייקטי COM (כדוגמאת ActiveX Objects). טווח ההכרה (scope) של האובייקטים
שנוצרים באמצעות השיטה, הוא לרוב אותו עמוד, כלומר, המופע יפסיק להתקיים ברגע שייסתיים עיבוד קובץ ה-ASP.
לדוגמא:

VBScriptJScript

	<%
	Set conn = Server.CreateObject("ADODB.Connection")
	%> 
	


	<%
	var oConn = Server.CreateObject("ADODB.Connection")
	%>
	

יוצר מופע של האובייקט
connection (חיבור לבסיס נתונים) ומקשר אותו למשתנה conn. מכאן והלאה אנו יכולים, באמצעות המשתנה conn, לפנות
לכל השיטות והמאפיינים של האובייקט. (למשל: conn.Open). בסוף השימוש באובייקט, "נהרוס" אותו ע"י המשפט:

VBScriptJScript

	<%
	Set conn = nothing
	%>
	


	<%
		delete oCon;
		oCon = null;
	%> 
	

(בנושא העבודה מול בסיסי נתונים נדון בפרק נפרד).

Server.HTMLEncode


אם ננסה להציג ללקוח משפט כמו "<HTML> הוא התג שפותח כל דף HTML"
מה שנראה בסופו של דבר יהיה "הוא התג שפותח כל דף HTML". זאת מכיוון שהתוים ">" "<" מפורשים ע"י הדפדפן לא כמו תווים רגילים.
כדי להציג על המסך תווים מיוחדים (< > …) עלינו להשתמש באחת משתי שיטות.
החלפת התגים המיוחדים ב- escape code שלהם. לדוגמא:

&lt;HTML&gt;

שימוש ב:

<% Server.HTMLEncode("<HTML>") %> 

Server.URLEncode


אם נרצה לכתוב קישור כזה:

<a href="http://www.site.co.il?name=Moshe Levy">

נקבל טעות כאשר נלחץ על הקישור, בגלל הרווח (IE בגרסאותיו האחרונות כבר תומך ברווחים בקישור, אך NS עדיין לא…)
על מנת למנוע זאת, URLEncode מקבל מחרוזות, והופכת אותה ל-URL תקין.

<a href="www.site.co.il?name=<%=Server.URLEncode("Moshe Levy")%>">

Server.MapPath


שיטה זו מספקת מידע על מיקום הקבצים. היא מתרגמת את המסלול היחסי או הוירטואלי המשמש את הדפדפן למסלול פיזי על השרת.
השיטה אינה בודקת אם הערך המוחזר שלה אכן קיים על השרת, ואינה תומכת בתחביר של מסלול יחסי. למשל:

<%=Server.MapPath("../user/file.asp")%>

יחזיר לנו נתיב כלשהו, אבל מכיוון שהשיטה לא בודקת אם הנתיב או הקובץ קיימים, היא תחזיר לנו נתיב לא קיים.

<%=Server.mappath(Request.ServerVariables("PATH_INFO"))%> 

יתן את התוצאה:


D:hshomeweborgilwebmaster.org.ilguide.asp

Server.ScriptTimeout


מאפיין זה מציין את הזמן המקסימלי (בשניות) שהסקריפט יעובד לפני שיסתיים.
ברירת המחדל היא 90 שניות. בקבצים קטנים אין סיבה לשנות ערך זה, אך אם ישנו קובץ הגדול, המבצע, למשל,
חיפוש בבסיס נתונים גדול, או מבצע upload של קובץ גדול לשרת, אזי יש סיבה להגדיל את הערך.

Server.Execute


שיטה זו קוראת לקובץ ASP חדש ומעבדת אותו כאילו היה חלק מהסקריפט הנוכחי. בסיום עיבוד הקובץ החדש, השרת חוזר לעבד את הקובץ הנוכחי בדיוק באותה שורה בה הפסיק.

page1.asp:

<%
    Response.Write ("Hello ")
    Server.Execute ("page2.asp")
    Response.Write ("World!")
%>

page2.asp:

<%Response.Write ("Hello ")%>


Hello Hello World!

שיטה נוספת להכללת קובץ נוסף היא include
דוגמא
יכליל את הקובץ menu.htm בדף.

Server.Transfer



אם כאשר קראנו ל-Server.Execute, השרת חזר לעבד את הקובץ הנוכחי בדיוק באותה נקודה בה הפסיק, בקריאה ל- Server.Transfer אנו מפסיקים לחלוטין את עיבוד הקובץ הנוכחי, מעבירים את כל המידע שבו (אובייקטים, request, משתנים ) לקובץ החדש ומעבדים אותו. לאחר סיום עיבוד הקובץ החדש השרת איננו חוזר לבצע את הקובץ שקרא ל-Server.Transfer, וכל מה שהיה כתוב לאחר שורה זו, לא יתבצע.
השיטה נתמכת רק החל מ- IIS 5.0 , כלומר, נסיון להשתמש בשיטה על PWS יחולל שגיאה.

page1.asp:

<%
Response.Write ("Hello ")
Server.Transfer ("page2.asp")
Response.Write ("World!")
Response.Write ("Hello ")
%>

page2.asp:

<%Response.Write ("Hello ")%> 

התוצאה תהיה:


Hello Hello

תגיות: , , , , ,

תגובות בפייסבוק