المفتاح لفهم الوظيفة الأساسية لـ JSPs هو فهم دورات الحياة التي تلتزم بها.
دورة حياة JSP هي العملية بأكملها من الإنشاء إلى التدمير، وهي تشبه دورة حياة servlet والفرق هو أن دورة حياة JSP تتضمن أيضًا تجميع ملفات JSP في servlet.
فيما يلي المراحل التي تمر بها دورة حياة JSP:
مرحلة التجميع:
تقوم حاوية servlet بتجميع ملف servlet المصدر وإنشاء فئة servlet
مرحلة التهيئة:
قم بتحميل فئة servlet المقابلة لـ JSP، وقم بإنشاء مثيل لها، واستدعاء طريقة التهيئة الخاصة بها
مرحلة التنفيذ:
استدعاء طريقة الخدمة لمثيل servlet المطابق لـ JSP
مرحلة التدمير:
قم باستدعاء طريقة التدمير لمثيل servlet المطابق لـ JSP، ثم قم بتدمير مثيل servlet
من الواضح أن المراحل الأربع الرئيسية لدورة حياة JSP تشبه إلى حد كبير دورة حياة servlet، كما هو موضح أدناه:
عندما يطلب المتصفح صفحة JSP، سيتحقق محرك JSP أولاً مما إذا كان الملف بحاجة إلى التحويل البرمجي. إذا لم يتم تجميع هذا الملف، أو تم تغييره منذ آخر تجميع، قم بتجميع ملف JSP.
تتكون عملية التجميع من ثلاث خطوات:
تحليل ملفات JSP.
تحويل ملفات JSP إلى servlets.
تجميع servlet.
بعد أن تقوم الحاوية بتحميل ملف JSP، فإنها تستدعي الأسلوب jspInit() قبل تقديم أي خدمة للطلب. إذا كنت بحاجة إلى تنفيذ مهام تهيئة JSP مخصصة، فما عليك سوى تجاوز طريقة jspInit()، كما يلي:
public void jspInit(){ // رمز التهيئة}
بشكل عام، يتم تهيئة البرنامج مرة واحدة فقط، وينطبق الشيء نفسه على servlets. يمكنك عادةً تهيئة اتصال قاعدة البيانات وفتح الملف وإنشاء جدول الاستعلام بطريقة jspInit().
تصف هذه المرحلة جميع التفاعلات المتعلقة بالطلب في دورة حياة JSP حتى يتم تدميرها.
عندما تكتمل صفحة ويب JSP، سيقوم محرك JSP باستدعاء طريقة _jspService().
يتطلب الأسلوب _jspService() كائن HttpServletRequest وكائن HttpServletResponse كمعلمات له، كما يلي:
void _jspService(HttpServletRequest request,HttpServletResponse Response){ // كود المعالجة من جانب الخادم}
يتم استدعاء الأسلوب _jspService() مرة واحدة في كل طلب وهو مسؤول عن إنشاء الاستجابة المقابلة، كما أنه مسؤول عن إنشاء استجابات لجميع طرق HTTP السبعة، مثل GET وPOST وDELETE وما إلى ذلك.
تصف مرحلة التدمير في دورة حياة JSP ما يحدث عند إزالة صفحة ويب JSP من الحاوية.
طريقة jspDestroy() في JSP تعادل طريقة التدمير في servlet. قم بتجاوز طريقة jspDestroy() عندما تحتاج إلى إجراء أي عمل تنظيف، مثل تحرير اتصال قاعدة البيانات أو إغلاق المجلد، وما إلى ذلك.
تنسيق طريقة jspDestroy () كما يلي:
public void jspDestroy(){ // تنظيف الكود}
مثال على رمز دورة حياة JSP هو كما يلي:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><html><head><title>life.jsp</title></head ><body><%! public int initVar=0; System.out.println("jspInit(): تمت تهيئة JSP "+initVar+" مرات"); } public void jspDestroy(){ DestroyVar++; "مرات"); }%><% ServiceVar++; استجاب JSP لإجمالي طلبات "+serviceVar+""); String content1="عدد عمليات التهيئة: "+initVar; String content2="عدد الاستجابات لطلبات العملاء: "+serviceVar; String content3="عدد عمليات التدمير: " +destroyVar;%> <h1>مثال لاختبار JSP التعليمي الخاص بـ w3cschool</h1><p><%=content1 %></p><p><%=content2 %></p><p><%=content3 %></p></body></html>