كم تعرف تقنية Servlet برمجة الويب Java؟
1. Servlet Basics <Br /> لتطوير تكنولوجيا Servlet ، توفر Sun Company بعض واجهات وأعمدة الأعمدة ، وأهمها واجهة javax.servlet.servlet. الحزمان المهمين هما Javax.Servlet و Javax.servlet.http. Servlet هو فئة تنفذ واجهة Servlet. يتم استدعاؤه وإنشائه بواسطة حاوية ويب (Tomcat/Jetty ، وما إلى ذلك) لتلقي طلبات المستخدم والرد عليها. 5 طرق تجريدية محددة في واجهة Servlet:
هيكل فئة من المستوى الأعلى من servlet هو كما يلي:
2. أول برنامج servlet
قم بإنشاء مشروع ويب جديد Java ، ثم قم بإنشاء فئة Hello جديدة. رمز المصدر Hello.java كما يلي:
package zzz ؛ import java.io.ioException ؛ import java.io.printwriter ؛ استيراد javax.servlet.http.httpservlet ؛ استيراد javax.servlet.http.httpservled DOGET (طلب httpservletrequest ، استجابة httpservletresponse) يلقي ioException {// تعيين رسالة ترميز استجابة الاستجابة. printWriter out = response.getWriter () ؛ Out.println ("Hello World") ؛ } Override public void dopost (طلب httpservletrequest ، استجابة httpservletresponse) يلقي ioException {this.doget (طلب ، استجابة) ؛ }}ملف التكوين web.xml كما يلي:
<؟ XSI: schemalocation = "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns id = "webapp_id" version = "3.1"> <simplay-name> zzz </display-name> <vishlet> <!-سجل servlet-> <stervlet-name> hello </servlet-name> <!-حدد اسم servlet-> </servlet-class> zzz.hello </servlet-class>! Path-> <Sradlet-Name> Hello </servlet-name> <!-حدد اسم servlet-> <url-pattern>/hello </url-pattern> <!-حدد المسار الظاهري للوصول إلى servlet-> </servlet mapping> </bil-app>
بدء تشغيل المتصفح وتشغيله على النحو التالي:
3. دورة حياة Servlet
تنقسم دورة حياة Servlet تقريبًا إلى 3 مراحل ، ومرحلة التهيئة ، ومرحلة التشغيل ، ومرحلة التدمير . فيما يلي أوصاف مفصلة لكل مرحلة:
مرحلة التهيئة: عندما يقدم العميل طلبًا إلى حاوية Servlet للوصول إلى Servlet ، تقوم الحاوية أولاً بتحليل الطلب للتحقق مما إذا كان كائن Servlet في الذاكرة ، وإذا تم استخدامه مباشرة ؛ خلاف ذلك ، قم بإنشاء كائن Servlet ثم استدعاء طريقة init (). لاحظ أنه سيتم استدعاء init () مرة واحدة فقط خلال دورة الإعلان بأكملها للخدمة.
مرحلة التشغيل: هذه هي المرحلة الأكثر أهمية في Servlet. في هذه المرحلة ، ستقوم الحاوية ببناء كائن ServleTRequest و ServletResponse كمعلمات وتمريرها إلى طريقة Servlet Service (). لكل وصول من servlet ، ستقوم حاوية servlet بالاتصال بالطريقة Service () مرة واحدة. سيتم استدعاء طريقة الخدمة () عدة مرات خلال دورة حياة Servlet بأكملها
مرحلة التدمير: عند إغلاق الخادم أو تتم إزالة تطبيق الويب من الحاوية ، سيتم إدخال هذه المرحلة. في هذا الوقت ، سيتم استدعاء طريقة التدمير (). خلال دورة الحياة بأكملها ، لن يتم استدعاء طريقة التدمير () مرة واحدة إلا مرة واحدة. عندما يصل العميل لأول مرة إلى Servlet ، ستقوم الحاوية بإنشاء كائن Servlet ، ولكن في بعض الأحيان يكون من المأمول أن يبدأ كائن Servlet بمجرد بدء تشغيل Tomcat. كيف تتعامل مع هذا؟ في هذا الوقت ، تحتاج فقط إلى استخدام عنصر <Load-On-Startup> في web.xml. تكوين المثال على النحو التالي:
<Srevlet> <Srevlet-Name> Hello </servlet-name> <Servlet-Class> zzz.hello </servlet-class> <!-التحميل التلقائي لبرنامج servlet-> <load-on-startup> 1 </load-on-startup> </tridlet>
4. ServletConfig و ServletContext
أثناء واجهة ServletConfig ، إذا كانت هناك حاجة إلى بعض المعلومات الإضافية ، مثل ترميز الملفات ، والشركات التي تستخدم servlets ، وما إلى ذلك ، يمكن تكوين هذه المعلومات باستخدام عنصر <Ing-param> في web.xml. عندما تقوم Tomcat بتهيئة Servlet ، سيتم تغليف معلومات تكوين Servlet في كائن ServletConfig وتم تمريره إلى Servlet من خلال init (ServletConfig Config). يحدد ServletConfig سلسلة من الطرق للحصول على معلومات التكوين:
بعد ذلك ، خذ getInitParameter () كمثال لشرح استخدام هذه الطريقة:
ملف تكوين web.xml كما يلي:
<؟ XSI: schemalocation = "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns id = "webapp_id" version = "3.1"> <simplay-name> zzz </display-name> <vishlet> <Sradlet-Name> Hello </revlet-name> <Srevlet-Class> zzz.hello </radlet-class> <Inig-param> <Srevlet-mapping> <Servlet-Name> Hello </revlet-name> <url-pattern>/hello </url-pattern> </revlet-mapping> </ball-app>
ملف Hello.java كما يلي:
package zzz ؛ import java.io.ioException ؛ استيراد java.io.printwriter ؛ استيراد javax.servlet.servletconfig Httpservlet {Override public void doget (طلب httpservletrequest ، استجابة httpservletresponse) يلقي ioException {// set message message revised.setContentType ("text/html ؛ charset = utf-8") ؛ printWriter out = response.getWriter () ؛ servletConfig config = this.getServletConfig () ؛ سلسلة param = config.getInitParameter ("الشركة") ؛ Out.println ("الشركة:" + param) ؛ } Override public void dopost (طلب httpservletrequest ، استجابة httpservletresponse) يلقي ioException {this.doget (طلب ، استجابة) ؛ }} ServletContext واجهة
عند بدء تشغيل حاوية Servlet ، يتم إنشاء كائن ServletContext فريد من نوعه لكل تطبيق ويب لتمثيل تطبيق الويب الحالي. لا يلف هذا الكائن فقط جميع المعلومات الخاصة بتطبيق الويب ، ولكن أيضًا ينفذ مشاركة البيانات بين كائنات Servlet المتعددة. في web.xml ، لا يمكنك فقط تكوين معلومات التهيئة الخاصة بـ servlet ، ولكن أيضًا تكوين معلومات التهيئة لتطبيق الويب بأكمله. طريقة التكوين هي كما يلي:
<context-param> <Param-Name> name </param-name> <Param-value> luoxn28 </param-value> </suctext-param> <context-param> <Param-Name> Company </param-name> <Param-value> dahua </baram-value> </context-param>
ملاحظة: لا يمكن أن يكون هناك سوى واحد <Param-Name> و <param-value> في عنصر <context-param> ، ويتم تكوين التكوين أعلاه ضمن <web-app> في web.xml. ملف Hello.java كما يلي:
package zzz ؛ import java.io.ioException ؛ import java.io.printwriter ؛ import java.Util.Enumeration ؛ import javax.servlet.servletcontext ؛ import javax.servlet javax.servlet.http.httpservletresponse ؛ Hello public hello يمتد httpservlet {Override public void dogge (httpservletrequest request ، httpservletsponse response) rewrows ioexception {// set reponse reversion.setcontttype ("text/html ؛ printWriter out = response.getWriter () ؛ سياق servletContext = this.getServletContext () ؛ التعداد <string> paramnames = context.getInitParameterNames () ؛ بينما (paramnames.hasmoreElements ()) {string name = paramNames.NextElement () ؛ قيمة السلسلة = context.getInitParameter (الاسم) ؛ Out.println (name + ":" + value + "<br/>") ؛ }} Override public void dopost (طلب httpservletrequest ، استجابة httpservletresponse) يلقي ioException {this.doget (request ، repress) ؛ }}نظرًا لأن جميع servlets في تطبيق الويب تشارك كائن ServletContext ، يمكن الوصول إلى خصائص المجال لكائن ServletContext بواسطة جميع servlets في تطبيق الويب. في واجهة ServletContext ، يتم تعريف أربع طرق لإضافة وحذف وتعيين خصائص مجال ServletContext:
من خلال الطريقة أعلاه ، يمكنك إدراك مشاركة البيانات بين servlets متعددة. لن يتم نشر هذا المثال المحدد باستخدام رمز. هناك العديد من المعلومات التي يمكن الرجوع إليها عبر الإنترنت ، مثل النقر:
ملخص تطوير Javaweb Servlet (II)
ما سبق هو كل شيء عن هذا المقال ، وآمل أن يكون من المفيد للجميع فهم تقنية Servlet في Java Web.
مراجع
1. "مقدمة لتطوير برنامج الويب Java