**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 (באנגלית)
* Java Servlet Technology – מתוך המדריך הרשמי של Oracle ל-Java EE 6 (באנגלית)
* JSPs and Servlets – סדרת מדריכי וידאו באתר YouTube (באנגלית)

| Java (פלטפורמת תוכנה) |
| --- |
| פלטפורמה | Java (שפת תכנות) • Java Card • Java ME • Java EE • Java SE • Java Virtual Machine |  |
| טכנולוגיות | Java applet • Java Web Start • Java Servlet • JavaServer Pages • JavaFX • JavaServer Faces |
| מושגים | איסוף זבל • Cross-platform • Java Bytecode • Java Development Kit • Javadoc • Java Classloader • Java Class Library 
JIT Compiler • HotSpot • JavaBeans • Enterprise JavaBeans • JNI • JAR • POJO • Web container • Java annotation 
Java package • Java Class File |
| ממשקי תכנות יישומים | Swing • AWT • SWT • Java 3D • Java 2D • JMS • JDBC • JAXP • JPA • RMI • JNDI |
| שפות ל-JVM | Scala • Clojure • Groovy • JRuby • Jython |
| תשתיות תוכנה וכליםשל חברות צד שלישי | אפאצ'י טומקט‏ • Apache Maven • Apache Ant • Apache Struts
JUnit • Hibernate • Spring Framework • JBoss • Google Web Toolkit • BEA WebLogic • IBM WebSphere |
| סביבות פיתוח משולבות | Eclipse • NetBeans • IntelliJ |
| חברות | סאן מיקרוסיסטמס • אורקל |
| אישים | ג'יימס גוסלינג • ביל ג'וי • אריק שמידט |

|  |  |
| --- | --- |
| בקרת זהויות עריכת הנתון בוויקינתונים | 
* NLI: 987007290951805171
* BnF: cb13603508g (data)
* LCCN: sh00004803

 |