من الصعب دائمًا اختبار/تصحيح أخطاء برنامج JSP أو servlet. تميل برامج JSP وServlets إلى إشراك الكثير من التفاعل بين العميل والخادم، وهو ما من المحتمل جدًا أن يسبب أخطاء، ومن الصعب إعادة إنتاج بيئة الخطأ.
بعد ذلك، سنقدم لك بعض النصائح والاقتراحات لمساعدتك في تصحيح أخطاء برنامجك.
يمكن لـ System.out.println() تحديد ما إذا كان قد تم تنفيذ جزء من التعليمات البرمجية بسهولة. بالطبع، يمكننا أيضًا طباعة قيم مختلفة. أيضًا:
نظرًا لأن كائن النظام أصبح كائن Java أساسيًا، فيمكن استخدامه في أي مكان دون تقديم فئات إضافية. يشمل نطاق الاستخدام Servlets وJSP وRMI وEJB's وBeans والفئات والتطبيقات المستقلة.
بالمقارنة مع إيقاف التشغيل عند نقطة توقف، فإن استخدام System.out للإخراج لن يكون له تأثير كبير على عملية تشغيل التطبيق. هذه الميزة مفيدة جدًا في التطبيقات التي تكون فيها آلية التوقيت مهمة جدًا.
يتم إعطاء بناء الجملة لاستخدام System.out.println() التالي:
System.out.println("رسالة التصحيح");فيما يلي مثال بسيط باستخدام System.out.print():
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><html><head><title>System.out.println</title></ head><body><c:forEach var="counter" begin="1" end="10" step="1" > <c:out value="${counter-5}"/></br> <% System.out.println( "counter= " + pageContext.findAttribute("counter") ); %></c:forEach></body></html>الآن، إذا قمت بتشغيل المثال أعلاه، فسوف يؤدي إلى النتائج التالية:
-4-3-2-1012345إذا كنت تستخدم خادم Tomcat، فستتمكن من العثور على المحتوى الإضافي التالي في ملف stdout.log في دليل السجلات:
عداد=1عداد=2عداد=3عداد=4عداد=5عداد=6عداد=7عداد=8عداد=9عداد=10باستخدام هذه الطريقة، يمكن إخراج المتغيرات والمعلومات الأخرى إلى سجل النظام لتحليلها والعثور على السبب الأساسي للمشكلة.
يوفر إطار عمل التسجيل J2SE خدمات التسجيل لأي فئة تعمل في JVM. حتى نتمكن من استخدام هذا الإطار لتسجيل أي معلومات.
دعنا نعيد كتابة الكود أعلاه لاستخدام واجهة برمجة تطبيقات المسجل في JDK:
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%@page import="java.util.logging.Logger" %><html> <head><title>Logger.info</title></head><body><% Logger=Logger.getLogger(this.getClass().getName());%><c:forEach var="counter " تبدأ = "1" نهاية = "10" خطوة = "1" > <c:set var = "myCount" value = "${counter-5}" /> <c:out value = "${myCount}"/ </br> <% String message = "counter=" + pageContext.findAttribute("counter") + " myCount=" + pageContext.findAttribute("myCount"); :forEach></body></html>النتائج مشابهة للنتائج السابقة، ومع ذلك، يمكنها إخراج معلومات إضافية إلى ملف stdout.log. هنا نستخدم طريقة المعلومات في المسجل. نعطي أدناه لقطة من ملف stdout.log:
24 سبتمبر 2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: counter=1 myCount=-424-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: counter=2 myCount=- 324-سبتمبر-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: counter=3 myCount=-224-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: counter=4 myCount=-124-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: counter=5 myCount=024-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: counter=6 myCount=124-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: counter= 7myCount=224-سبتمبر-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: counter=8 myCount=324-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: counter=9 myCount=424-Sep-2013 23: 31:31 org.apache.jsp.main_jsp _jspServiceINFO: العداد=10 myCount=5يمكن إرسال الرسائل بأولويات مختلفة، باستخدام الطرق sever() وwarning() وinfo() وconfig() وfiner() وfiner() وfinest(). يتم استخدام الطريقة الأفضل () لتسجيل أفضل المعلومات، ويتم استخدام الطريقة ()sever لتسجيل المعلومات الأكثر أهمية.
استخدم إطار عمل Log4J لتسجيل الرسائل في ملفات مختلفة، والتي يتم تصنيفها على أساس الخطورة والأهمية.
NetBeans عبارة عن بنية شجرية وبيئة تطوير شاملة لـ Java مفتوحة المصدر تدعم تطوير تطبيقات Java المستقلة وتطبيقات الشبكة، كما تدعم أيضًا تصحيح أخطاء JSP.
يدعم NetBeans وظائف تصحيح الأخطاء الأساسية التالية:
نقطة توقف
تتبع خطوة واحدة
نقطة المراقبة
يمكن العثور على معلومات تفصيلية في دليل NetBeans.
يمكنك استخدام أوامر jdb في JSPs وservlets لتصحيح الأخطاء تمامًا مثل التطبيقات العادية.
عادةً ما نقوم بتصحيح أخطاء كائن sun.servlet.http.HttpServer مباشرة لنرى كيف ينفذ HttpServer JSP/Servlets استجابةً لطلبات HTTP. وهذا يشبه إلى حد كبير تطبيقات تصحيح الأخطاء. والفرق هو أن ما يصححه برنامج التطبيق الصغير بالفعل هو sun.applet.AppletViewer.
يمكن لمعظم مصححي الأخطاء تجاهل بعض التفاصيل تلقائيًا عند تصحيح أخطاء التطبيقات الصغيرة لأنهم يعرفون كيفية تصحيح أخطاء التطبيقات الصغيرة. إذا كنت تريد نقل كائن التصحيح إلى JSP، فأنت بحاجة إلى القيام بالأمرين التاليين:
قم بتعيين مسار فئة مصحح الأخطاء حتى يتمكن من العثور على sun.servlet.http.Http-Server والفئات ذات الصلة.
قم بتعيين مسار فئة مصحح الأخطاء حتى يتمكن من العثور على ملفات JSP والفئات ذات الصلة.
بعد تعيين مسار الفصل، ابدأ في تصحيح أخطاء sun.servlet.http.Http-Server. يمكنك تعيين نقطة توقف في أي مكان في ملف JSP كما تريد، ثم استخدم المتصفح لإرسال طلب إلى الخادم ويجب أن ترى توقف البرنامج عند نقطة التوقف.
تلعب التعليقات الموجودة في البرنامج دورًا معينًا في تصحيح أخطاء البرنامج بعدة طرق. يمكن استخدام التعليقات في العديد من جوانب تصحيح أخطاء البرنامج.
يستخدم JSP تعليقات Java التوضيحية. إذا اختفى خطأ ما، فقم بإلقاء نظرة فاحصة على الكود الذي قمت بالتعليق عليه للتو، ويمكنك عادة معرفة السبب.
في بعض الأحيان يكون من المفيد أيضًا عرض طلبات واستجابات HTTP الأولية عندما لا يتصرف JSP على النحو المنشود. إذا كنت على دراية ببنية HTTP، فيمكنك مراقبة الطلب والاستجابة مباشرة ومعرفة ما يحدث مع وحدات الرأس هذه.
نكشف هنا عن نصيحتين إضافيتين لتصحيح أخطاء JSP:
استخدم متصفحًا لعرض محتوى الصفحة الأصلية لتمييز ما إذا كانت هناك مشكلة في التنسيق. يوجد هذا الخيار عادة ضمن قائمة العرض.
تأكد من أن المتصفح لا يلتقط مخرجات الطلب السابق عند فرض إعادة تحميل الصفحة. إذا كنت تستخدم متصفح Netscape Navigator، فاستخدم Shift-Reload؛ وإذا كنت تستخدم متصفح IE، فاستخدم Shift-Refresh.