1. מה זה Servlet?
2.
מה ההבדל בין
GenericServlet ל-HttpServlet?
3.
האם יש
mailing list בנושא Servlets?
4.
כיצד אני יכול לתמוך הן ב-GET
והן ב-SET באותו Servlet?
5. מה
ההבדל בין doGet ו-doPost?
6.
כיצד יש לבחור בין מימוש doGet ו-doPost?
7.
כיצד אני יכול לדעת את הגירסה של Servlet API
שמנוע ה-Servlet/JSP עושה בו שימוש?
8.
מה זה מנוע Servlet או Servlet
engine?
9.
מהו Servlet Context?
10.
כיצד ניתן
להוסיף Servlet מה-command line?
11. מדוע
אין constructor ב-Servlet?
1.
מה זה Servlet?
Servlet הוא תוכנית הכתובה ב-Java
שרצה בשרת, בניגוד לתוכנית הרצה אצל הלקוח כגון Applets.
ה-Servlet
הוא דרך להרחיב את השרת עם תוכניות Java כדי לבצע משימות שקודם
בוצעו על ידי CGI. אינפורמציה מקיפה ניתן למצוא ב-
http://java.sun.com/products/servlet.
2.
מה ההבדל בין GenericServlet ל-HttpServlet
?
GenericServlet הוא
עבור Servlets שעשויים לא להשתמש ב-HTTP
כמו למשל FTP Servlets. ברור שמסתבר שאין דבר כזה כ-FTP
Servlets אבל הם ניסו לתכנן הרחבה עתידית כאשר בנו את ה-spec. אולי מתישהו
תהיה מחלקת בן נוספת, אך כרגע תמיד השתמש ב-HttpServlet.
לראש הדף
3.
האם יש
mailing list בנושא Servlets?
כן, יש רשימה מקיפה של
mailing list והיא- The Purple Servlet Resource List.
כמו כן בדוק את Sun's SERVLET-INTEREST mailing list. על
מנת להירשם שלח דואר אלקטרוני ל-
listserv@java.sun.com עם הטקסט הבא בגוף הדואר: subscribe SERVLET-INTEREST. בנוסף
בדוק את הארכיב של
ה-mailing list.
לראש הדף
4.
כיצד אני יכול לתמוך הן ב-GET
והן ב-SET באותו Servlet
?
הדרך הקלה לעשות כן היא
לתמוך ב-POST ואז לקרוא מ-doGet ל-doPost
public void
doGet(HttpServletRequest req,
HttpServletResponse res,
throws ServletException,IOException
{
doPost(req,res);
}
שים לב שלממש את service method
אינו מה שאתה רוצה לעשות בד"כ, משום
ש-HttpServlet מספק
מימוש משלו ל-service אשר קורא ל-doGet
ו-doPost באופן מתאים, ואם תדרוס את ההגדרה הזו הרי שתטפל
באופן זהה לא רק ב-doGet ו-doPost
אלא גם בכל בקשות ה-HTTP כגון: HEAD,TRACE,PUT
וכו'.
לראש הדף
5.
מה ההבדל בין doGet ו-doPost?
doGet נקרא כתגובה לבקשת HTTP GET.
זה קורה כאשר המשתמש לוחץ על היפר קישור או כאשר מכניסURL
ל-address bar בדפדפן. כמו כן זה קורה ב-HTML Form
אם METHOD="GET"
מצוין
ב-Form tag.
doPost נקרא כתגובה לבקשת HTTP POST. זה קורה ב-HTML
Form אם METHOD="POST"
מצוין
ב-Form tag.
שני Methods אלו
נקראים במימוש ברירת המחדל של ה-service של
HttpServlet base class. עליך לדרוס את המימוש של אחד מהם אך
כנראה שלא את ()service.
לראש הדף
6.
כיצד יש לבחור בין מימוש doGet ו-doPost
? בקשת GET
היא בקשה להשיג (get) משאב מהשרת. זה המקרה שדפדפן מבקש web page. ניתן גם לציין פרמטרים בבקשה, אך אורך הפרמטרים
בכללותו מוגבל. זה המקרה של Form המוגדר
<form
method="GET"> או פשוט <Form>.
בקשת
POST היא בקשה
לשלוח (to post) את ה-Form data
למשאב בשרת. זה המקרה של Form המוגדר ב-HTML
כך: <form method="POST">, במקרה
זה גודל הפרמטרים יכול להיות הרבה יותר גדול.
לראש הדף
7.
כיצד אני יכול לדעת את הגירסה של Servlet API
שמנוע ה-Servlet/JSP עושה בו שימוש?
הממשק ServletContext מכיל
את השיטות: ()getMajorVersion ו-()getMinorVersion בהן תוכל להשתמש על מנת להשיג מידע זה. בנוסף מתוך JSP תוכל להשתמש
במשתנה המוגדר מראש application על מנת לגשת ל-ServletContext.
לדוגמה: Major:<%=
application.getMajorVersion()%>
Minor:<%= application.getMinorVersion()%>
לראש הדף
8.
מה זה מנוע
Servlet או Servlet engine ?
מנוע Servlet הינו תוכנית
שמשתלבת (plug-in) לתוך השרת ומריצה Servlets. המונח העדכני יותר כעת הוא "Servlet container" שכן זה
תופס גם ל-plug-in engines וגם ל-standalone web
servers התומכים ב-Servlet API.
לראש הדף
9. מהו
Servlet Context ?
ServletContext הוא מקבץ שתחתיו רצים
Servlets קשורים (ו-JSP ומשאבי רשת אחרים).
הם יכולים לשתף נתונים, URL namespace ומשאבים אחרים.
יכולים להיות מספר Context
ב-Servlet container
יחיד. Servlet אינדיבידואלי משתמש באובייקט
ServletContext כדי לקבל שרותים מה-container
(כמו request dispatcher). אתה יכול לתחזק משתני "אפליקציה גלובליים" על ידי שימוש
ב-ServletContext Attributes.
לראש הדף
10.
כיצד ניתן
להוסיף Servlet מה-command line ?
ברגע שהתקנת את ה-Servlet
בתוך Servlet container כגון Tomcat, אתה יכול להשתמש בכלי כמו ServletUnit (חלק
מ-HTTPUtil). אולם שים לב שכלי זה לא מממש את כל
ה-features.
לראש הדף
11.
מדוע אין constructor ב-Servlet?
Servlet הינו כמו applet
מהבחינה שיש לו init() method המתנהג כמו
constructor. משום שסביבת ה-Servlet
אחראית ליצור מופע של Servlet, לא נחוץ constructor
מפורש. כל קוד אתחול שהינך צריך להריץ, שים אותו בגוף ה-()init
משום ש-method זה נקרא כאשר
ה-Servlet
נטען בפעם הראשונה על ידי
ה-Servlet container.
לראש הדף
|