מדריך ASP – האובייקט Server
Server | ||
אוספים (Collections) | תכונות (Properties) | שיטות (Methods) |
---|---|---|
ScriptTimeout | CreateObject | |
Execute | ||
HTMLEncode | ||
MapPath | ||
Transfer | ||
URLEncode |
האובייקט Server מכיל אוסף פקודות, שלא תמיד קשורות לשרת, אך הן שימושיות מאוד.
Server.CreateObject
שיטה זו משמשת ליצירת מופעים של אובייקטי COM (כדוגמאת ActiveX Objects). טווח ההכרה (scope) של האובייקטים
שנוצרים באמצעות השיטה, הוא לרוב אותו עמוד, כלומר, המופע יפסיק להתקיים ברגע שייסתיים עיבוד קובץ ה-ASP.
לדוגמא:
<% Set conn = Server.CreateObject("ADODB.Connection") %>
<% var oConn = Server.CreateObject("ADODB.Connection") %>
יוצר מופע של האובייקט
connection (חיבור לבסיס נתונים) ומקשר אותו למשתנה conn. מכאן והלאה אנו יכולים, באמצעות המשתנה conn, לפנות
לכל השיטות והמאפיינים של האובייקט. (למשל: conn.Open). בסוף השימוש באובייקט, "נהרוס" אותו ע"י המשפט:
<% Set conn = nothing %>
<% delete oCon; oCon = null; %>
(בנושא העבודה מול בסיסי נתונים נדון בפרק נפרד).
Server.HTMLEncode
אם ננסה להציג ללקוח משפט כמו "<HTML> הוא התג שפותח כל דף HTML"
מה שנראה בסופו של דבר יהיה "הוא התג שפותח כל דף HTML". זאת מכיוון שהתוים ">" "<" מפורשים ע"י הדפדפן לא כמו תווים רגילים.
כדי להציג על המסך תווים מיוחדים (< > …) עלינו להשתמש באחת משתי שיטות.
החלפת התגים המיוחדים ב- escape code שלהם. לדוגמא:
<HTML>
שימוש ב:
<% 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
תגובות בפייסבוק