Latest web development tutorials

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-รีเฟรช