Java Servlet

Servlet (סֶרְוְלֶט; לפי מונחי האקדמיה ללשון העברית: שָׁרָתִית) היא טכנולוגיית צד-שרת מבוססת Java, המהווה את אחד מממשקי תכנות היישומים של Java Enterprise Edition. המפרט של Java Servlet מגדיר את האופן שבו רכיב תוכנה הכתוב בשפת ג'אווה ורץ בצד השרת, יכול להגיב לבקשות המגיעות מצד הלקוח (לדוגמה, בקשות HTTP מסוג GET ו-POST). סרוולטים הם מחלקות Java, אשר עקרונית יכולות לתקשר על גבי כל פרוטוקול שרת–לקוח, אבל השימוש הנפוץ ביותר ב-Servlets הוא עם פרוטוקול ה-HTTP. לפיכך, המילה "Servlet" לבדה בדרך כלל משמשת בהקשר ל-"HTTP Servlet". סרוולט הוא אובייקט המקבל בקשה (request) ויוצר תגובה (response) על סמך אותה בקשה.

Servlets רצים על גבי שרת HTTP והם מהווים את המקבילה של ג'אווה לטכנולוגיות אחרות לתוכן ווב דינמי, כדוגמת PHP ו-ASP.NET. בדרך כלל, התוכן שנוצר על ידי Servlets הם דפי HTML, אבל אלה יכולים להיות גם נתונים בצורות אחרות, כמו JSON ,XML, ועוד. Servlets יכולים לשמור מידע אודות המצב (state) בתוך משתני session, על פני טרנזקציות שרת רבות, על ידי שימוש ב-cookies או ב-URL rewriting.

כדי לפרוס Servlet, נדרש שימוש ב-Web container (נקרא גם Servlet container) – רכיב בשרת HTTP המשמש לאינטראקציה עם ה-Servlets. רכיב זה אחראי על ניהול מחזור החיים של servlets, ממפה בין כתובת URL ל-Servlet ספציפי, ומוודא שהבקשה הנכנסת ב-URL היא בעלת הרשאות גישה מתאימות. ממשק תכנות היישומים Servlet המוכל ב-package בשם javax.servlet, מגדיר את האינטראקציות המצופות בין web container ל-servlet.

סרוולטים ניתנים ליצירה באופן אוטומטי מתוך (JavaServer Pages (JSP, על ידי ה-JavaServer Pages compiler. ההבדל בין Servlets ל-JSP הוא בכך שב-Servlets משבצים קוד HTML בתוך קוד Java, ואילו ב-JSP זה הפוך, שם קוד Java משובץ בתוך קוד HTML.

אף על פי שהשימוש הישיר ב-Servlets לצורך יצירת קוד HTML הפך לנדיר, תשתית התוכנה JavaServer Faces שהיא high-level יותר לעומת Servlets ומשמשת ליצירת יישומי רשת על פי מודל ה-MVC, עדיין משתמשת מפורשות בטכנולוגיית ה-Servlet לצורך טיפול שהוא יותר low-level בבקשות ותגובות. צורת שימוש ישנה יותר ב-Servlets, היא בצימוד לשימוש ב-JSP בתבנית הנקראת Model 2, שגם היא סוג של תבנית העיצוב MVC.

שימושים 
השימושים הנפוצים ב-Servletes הם לצורך:
 עיבוד או אחסון נתונים שנשלחו (submitted) מתוך טופס HTML.
 לספק תוכן דינמי כדוגמת התוצאה של שאילתה על בסיס נתונים.
 ניהול מידע אודות המצב (state), שבאופן טבעי אינו קיים בפרוטוקול ה-HTTP שהוא כשלעצמו stateless protocol. לדוגמה: שימור תוכן "עגלת הקניות" של מבקר באתר קניות באינטרנט, בזמן שהוא מדפדף בין דפי האתר.

ראו גם 
 JavaServer Pages
 Java Enterprise Edition
 אפאצ'י טומקט
 יישום רשת

קישורים חיצוניים 
 
 Java Servlet Technology – מתוך המדריך הרשמי של Oracle ל-Java EE 6 
 JSPs and Servlets – סדרת מדריכי וידאו באתר YouTube 

טכנולוגיות צד-שרת
Servlet