سيرفلت

سيرفلتس (Servlets) هي عناصر في لغة الجافا البرمجية تقوم بتحويل الطلبات وبناءالإستجابات بفعالية. واجهة البرمجة التطبيقية للجافا سيرفلتJava Servlet API تسمح لمطور الويب بإضافة محتوى فعال إلى خادوم الويب باستخدام قاعدة الجافا. من المألوف ان يكون المحتوى الناتج بصيغة الإتش تي ام ال HTML ولكن قد تكون هناك بيانات أخرى بصيغة اكس ام ال XML. سيرفلتس تقوم مقام الجافا في تقنيات الويب التي لا تحتوي عليها مثل البي اتش بي PHP، سي جي أي CGI واي اس بي نت ASP.NET ويرى البعض انه من السهل ان نصنفها كجافا سكريبت (وينبغي عدم الخلط بينها وبين النصوص البرمجية للجافا JavaScript) والسيرفلتس تقوم بالحفاظ على الوضع عبر العديد من تعاملات السيرفر وذلك باستخدام الملفات المؤقتة للإتش تي تي بيHTTP ومتغيرات الوضع أو إعادة كتابة العنوان URL.

واجهة البرمجة التطبيقية للجافا سيرفلتJava Servlet API المتوفرة في سلسلة حزمة الجافا تقدم تعريف للتفاعلات المتوقعة لما يحتويه الويب والسرفلت servlet. حيث ان ما يحتويه صندوق الويب (الشبكة العالمية) هو أساساً مايتكون منه الويب سيرفر الذي يتفاعل مع السيرفلتس. وصندوق الويب بكل ما يحتويه هو المسؤول عن إدارة عمل السيرفلتس، ورسم خرائط لعناوين المواقع في سرفلت servlet خاص والتأكد من أن الطالب للعنوان لديه حق للسماح له بالوصول اليه.

 هو العنصر الذي يتلقى الطلب ويقوم بتوفير الاستجابة بناء على الطلب. وتعمل الحزمة الأساسية للسيرفلت على تحديد عناصر الجافا التي تقدم طلبات واستجابات السيرفلت، وكذلك عناصر أخرى لتعكس تكوين السيرفلت المعلمي وطريقة تطبيق بيئتها. حزمة  تحدد الإتش تي تي بي HTTP - كأقسام فرعية محددة من عناصر السيرفلت العامة، بمافي ذلك من عناصر الجهة المسؤولة عن تعقب الطالبات والاستجابات المتعددة بين الويب سيرفر والعميل. والسيرفلتس قد تكون محفوظة في ملف WAR كتطبيق ويب.

السيرفلتس يمكن أن تنتج تلقائيا من صفحات الجافا سيرفر البرمجي، أو بالتناوب تستخدم محركات قوالب مثل WebMacro اوأباتشي لإنتاج أتش تي أم أل HTML. السيرفلتس غالبا ما تستخدم جنبا إلى جنب مع الجي اس بي اس JSPs في نمط يسمى "النموذج 2"، وهو صفة مميزة من نموذج عرض للتحكم.

التاريخ 

ان مجموعة السيرفلت الكاملة قد تم إنشاؤها بواسطة شركة صن مايكروسيستمزSun Microsystems، مع الإصدار 1.0 مع وضع اللمسات الأخيرة في حزيران / يونيو 1997. وبدءاً من الإصدار 2.3، تم تطوير السيرفلت تحت مجموعة الجافا الموحدة. جي اس ار JSR 53 تُحدد كل من السيرفلت 2.3 ومواصفات صفحة الجافا سيرفر 1.2. جي اس ار 154 JSR تُحدد مواصفات السيرفلتس 2.4 و 2.5. واعتبارا من مايو 10، 2006، الإصدار الحالي من مجموعة السيرفلت هو 2.5.

وفي مدونته على الجافا نت، واصل Sun veteran و GlassFish تفاصيل Jim Driscoll عن تاريخ تكنولوجيا السيرفلت. James Gosling قد بدأ في التفكير في السيرفلت منذ بدايات الجافا، ولكن المفهوم لم يتحول إلى إنتاج حتى قام Sun بشحن إنتاج الجافا ويب سيرفر. وقد كان هذا قبل ما يعرف الآن بقاعدة الجافا، حيث أصبحت منشورة كمجموعة مخصصة.

دائرة عمل السيرفلت 

دائرة عمل السيرفلت تتكون من الخطوات التالية:

 يتم تحميل نظام السيرفلت بواسطة الصندوق أثناء بدء التشغيل.
 يقوم الصندوق باستدعاء نظام init. هذا النظام يقوم بتهيئة السيرفلت ويجب أن يتم استدعائه قبل أن تقوم السيرفلت بخدمة الطلبات. وطوال فترة استخدام السيرفلت لا يتم استدعاء نظام init سوى مرة واحدة.
 بعد التهيئة، يمكن للسيرفلت خدمة طلبات العميل. حيث ان كل طلب يتم تنفيذه في موضوع منفصل. والصندوق يقوم باستدعاء نظام الخدمة للسيرفلت لكل طلب. حيث ان نظام الخدمة يقوم بتحديد نوع الطلب الموجود وارساله للنظام المناسب له في التعامل.والمطور للسيرفلت لا بد ان يوفر تطبيق لجميع هذه الأنظمة. وإذا تم تقديم طلب لا يتوفر تطبيق له من السيرفلت، يتم استدعاء فئة النظام الأصلي وينتج عن ذلك خطأ يتم اعادته لمقدم الطلب.
 أخيرا، يقوم الصندوق باستدعاء نظام destroy لإيقاف السيرفلت وجعلها خارج الخدمة. والدستروي destroy مثل نظام init يتم استدعائه مرة واحدة فقط خلال فرتة استخدام السيرفلت.
هنا سيرفلت مبسطة تقوم يإنتاج HTML فقط.
علما بأن HttpServlet هي فئة فرعية من GenericServlet، كتطبيق لواجهة السيرفلت.
نظام The service() يقوم بإرسال الطلبات إلى أنظمة doGet(), doPost(), doPut(), doDelete(), تبعاً لطلب الإتش تي تي بي HTTP.
import java.io.IOException;
import java.io.PrintWriter;
import javax.servletServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloWorld extends HttpServlet {
   public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      PrintWriter out = response.getWriter();
      out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " +
                  "Transitional//EN\">\n" +
                  "<html>\n" +
                  "<head><title>Hello WWW</title></head>\n" + 
                  "<body>\n" + 
                  "<h1>مرحبا شبكة الاتصالات العالمية</h1>\n" + 
                  "</body></html>");
   }
}

مراجع

وصلات خارجية 

 

برمجيات