דף הבית   | מפת האתר   | אודות

 שאלות נפוצות -Servlets

הינך נמצא ב :

שאלות נוספות-Servlets  

 

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.

 

 

       
  כל הזכויות שמורות למערכות מידע אית"ן