JSP การแก้จุดบกพร่อง
เพื่อทดสอบ / การแก้ปัญหา JSP หรือโปรแกรมเซิร์ฟเล็ตเป็นเรื่องยากเสมอดังนั้น JSP และ Servlets ขั้นตอนการมีแนวโน้มที่จะเกี่ยวข้องกับการทำงานร่วมกันระหว่างจำนวนมากของลูกค้า / เซิร์ฟเวอร์ซึ่งเป็นแนวโน้มที่จะสร้างข้อผิดพลาดและมันเป็นเรื่องยากที่จะทำให้เกิดสภาพแวดล้อมที่มีข้อผิดพลาด
ถัดไปจะได้รับเคล็ดลับและเคล็ดลับที่จะช่วยให้คุณแก้ปัญหาโปรแกรมของคุณ
ใช้ System.out.println ()
System.out.println () สามารถธงเป็นชิ้นส่วนของรหัสจะถูกดำเนินการ แน่นอนเรายังสามารถพิมพ์ออกมามีความหลากหลายของค่า นอกจากนี้:
- ตั้งแต่วัตถุระบบจะกลายเป็นหลัก Java วัตถุที่สามารถนำมาใช้ที่ใดก็ได้โดยไม่ต้องแนะนำของการเรียนเพิ่มเติม การใช้งานรวมถึงการใช้ Servlets, JSP, RMI, EJB ของถั่วเรียนและสแตนด์อะโลน
- เมื่อเทียบกับการหยุดที่จุดพักโดยใช้การส่งออก System.out จะไม่ได้มีผลกระทบต่อการดำเนินงานของการประยุกต์ใช้กระบวนการคุณลักษณะนี้เป็นสิ่งสำคัญมากในกลไกการกำหนดเวลาของการประยุกต์ใช้เป็นประโยชน์อย่างมาก
ถัดไปได้รับ System.out.println ไวยากรณ์ () เป็น:
System.out.println("Debugging message");
นี่คือตัวอย่างง่ายๆของการใช้ระบบออก () เป็น:
<%@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 -1 0 1 2 3 4 5
หากคุณกำลังใช้เซิร์ฟเวอร์ Tomcat คุณจะสามารถที่จะหาข้อมูลเพิ่มเติมต่อไปนี้ในแฟ้ม stdout.log ไดเรกทอรีล็อกใต้:
counter=1 counter=2 counter=3 counter=4 counter=5 counter=6 counter=7 counter=8 counter=9 counter=10
โดยใช้วิธีการของตัวแปรและข้อมูลอื่น ๆ นี้จะสามารถส่งออกไปยังระบบเข้าสู่ระบบในการวิเคราะห์ปัญหาและหาสาเหตุของเหตุผลที่ฝังลึกที่
ใช้ JDB Logger
กรอบ J2SE การเข้าสู่ระบบเข้าสู่ระบบให้บริการสำหรับการเรียนใด ๆ ที่ทำงานใน JVM ดังนั้นเราจึงสามารถใช้กรอบนี้เพื่อบันทึกข้อมูลใด ๆ
ลองเขียนโค้ดข้างต้นใช้ Logger API 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=Logger.getLogger(this.getClass().getName());%> <c:forEach var="counter" begin="1" end="10" step="1" > <c:set var="myCount" value="${counter-5}" /> <c:out value="${myCount}"/></br> <% String message = "counter=" + pageContext.findAttribute("counter") + " myCount=" + pageContext.findAttribute("myCount"); logger.info( message ); %> </c:forEach> </body> </html>
มันคล้ายกับผลของการก่อนหน้านี้ แต่ก็จะได้รับข้อมูลเพิ่มเติมไปยังแฟ้ม stdout.log ที่นี่เราใช้วิธีการตัดไม้ข้อมูล ด้านล่างเราจะให้ไฟล์ภาพรวม stdout.log:
24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=1 myCount=-4 24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=2 myCount=-3 24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=3 myCount=-2 24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=4 myCount=-1 24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=5 myCount=0 24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=6 myCount=1 24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=7 myCount=2 24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=8 myCount=3 24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=9 myCount=4 24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=10 myCount=5
สามารถส่งโดยใช้ความหลากหลายของการจัดลำดับความสำคัญโดยใช้ตัด () เตือน () ข้อมูล () การตั้งค่า () ดี () ปลีกย่อย () ที่ดีที่สุด () วิธีการ ที่ดีที่สุด () วิธีการใช้ในการบันทึกข้อมูลที่ดีที่สุดและตัด () วิธีการใช้ในการบันทึกข้อมูลที่ร้ายแรงที่สุด
ใช้กรอบ Log4J บันทึกข้อความในไฟล์ที่แตกต่างกันข้อความเหล่านี้ขึ้นอยู่กับความรุนแรงและความสำคัญในการจำแนก
แก้จุดบกพร่องเครื่องมือ
NetBeans เป็นโครงสร้างต้นไม้มาเปิด Java สภาพแวดล้อมการพัฒนาแบบบูรณาการสนับสนุนการพัฒนาของสแตนด์อะโลนโปรแกรม Java และการใช้งานเครือข่าย แต่ยังสนับสนุน JSP แก้จุดบกพร่อง
NetBeans สนับสนุนต่อไปไม่กี่คุณสมบัติการแก้จุดบกพร่องพื้นฐาน
- จุดพัก
- ติดตามขั้นตอนเดียว
- การสังเกตจุด
ข้อมูลรายละเอียดสามารถดูคู่มือ NetBeans
ใช้ JDB ดีบักเกอร์
คุณสามารถใช้คำสั่ง JDB ใน JSP และ Servlets ในการแก้จุดบกพร่องเช่นเดียวกับการแก้ปัญหาเป็นโปรแกรมปกติ
ปกติเราแก้จุดบกพร่องตรงวัตถุ sun.servlet.http.HttpServer เพื่อดูสถานการณ์ HTTPServer การดำเนินงานของ JSP / Servlets ในการตอบสนองต่อการร้องขอ HTTP นี้จะคล้ายกับแอปเพล็แก้จุดบกพร่อง ความแตกต่างก็คือว่า applets โปรแกรมการแก้ไขข้อบกพร่องที่เกิดขึ้นจริงเป็น sun.applet.AppletViewer
ที่สุดของการดีบักเมื่อแอปเพล็แก้จุดบกพร่องโดยอัตโนมัติสามารถละเลยรายละเอียดบางอย่างเพราะมันรู้วิธีที่จะแก้ปัญหา applets หากคุณต้องการที่จะแก้ปัญหาวัตถุ JSP โอนให้กับร่างกายคุณจะต้องทำสองสิ่ง:
- การตั้งค่า classpath ดีบักก็สามารถพบได้ sun.servlet.http.Http-Server และที่เกี่ยวข้องกับการเรียน
- การตั้งค่า classpath ดีบักเพื่อเปิดใช้งานเพื่อหาไฟล์ JSP ของคุณและการเรียนที่เกี่ยวข้อง
ชุด classpath มันก็เริ่มว่าจ้าง sun.servlet.http.Http เซิร์ฟเวอร์ คุณสามารถตั้งจุดพักในไฟล์ JSP ใดก็ได้ตราบใดที่คุณชอบแล้วใช้เบราว์เซอร์ส่งคำขอไปยังเซิร์ฟเวอร์ควรจะสามารถดูโปรแกรมหยุดที่จุดพัก
ใช้ความคิดเห็น
คำอธิบายประกอบโปรแกรมดีบักมีบทบาทที่เป็นประโยชน์ในหลาย ๆ ด้าน ความคิดเห็นสามารถนำมาใช้ในหลาย ๆ วิธีในการดีบัก
JSP ใช้คำอธิบายประกอบ Java หากข้อผิดพลาดที่หายไปควรตรวจสอบความคิดเห็นที่คุณได้เพียงแค่มีรหัสมักจะสามารถหาเหตุผลว่าทำไม
หัวของไคลเอ็นต์และเซิร์ฟเวอร์โมดูล
บางครั้งเมื่อ JSP ที่ไม่ได้ทำงานในลักษณะที่กำหนดไว้เมื่อดูการร้องขอ HTTP ดิบและการตอบสนองยังมีประโยชน์ หากโครงสร้างเป็นอย่างมากคุ้นเคยกับ HTTP คุณโดยตรงสามารถสังเกตเห็นการร้องขอและการตอบสนองส่วนหัวและเห็นว่าโมดูลในที่สุด
เทคนิคการแก้จุดบกพร่องที่สำคัญ
ที่นี่เราจะเผยให้เห็นอีกครั้งสอง JSP เคล็ดลับการแก้จุดบกพร่อง:
- โดยใช้เบราว์เซอร์จะแสดงเนื้อหาต้นฉบับของหน้าจะใช้ในการแยกแยะความแตกต่างไม่ว่าจะเป็นรูปแบบ ตัวเลือกนี้มักจะอยู่ในมุมมองเมนู
- ตรวจสอบว่าเบราว์เซอร์เมื่อโหลดหน้าบังคับไม่จับเอาท์พุทของการร้องขอก่อนหน้านี้ ถ้าคุณกำลังใช้เบราว์เซอร์ Netscape Navigator ใช้ Shift-โหลด; ถ้าใช้เบราว์เซอร์ IE แล้วใช้ Shift-รีเฟรช