แก้จุดบกพร่อง servlet
การพัฒนา Servlet ทดสอบ / การแก้จุดบกพร่องของหลักสูตรเป็นเรื่องยากเสมอ Servlet มักจะเกี่ยวข้องกับจำนวนมากของการปฏิสัมพันธ์ Client / Server แต่อาจจะยากที่จะทำให้เกิดข้อผิดพลาด
นี่คือเคล็ดลับและข้อเสนอแนะที่สามารถช่วยคุณแก้ปัญหาเป็น
System.out.println ()
System.out.println () ถูกใช้เป็นเครื่องหมายที่ใช้ในการทดสอบว่าเป็นชิ้นส่วนที่เฉพาะเจาะจงของรหัสจะถูกดำเนินการ นอกจากนี้เรายังสามารถพิมพ์ค่าของตัวแปร นอกจากนี้:
- เพราะวัตถุของระบบเป็นส่วนหนึ่งของหลักวัตถุ Java ก็สามารถใช้ที่ใดก็ได้โดยไม่จำเป็นต้องติดตั้งชั้นเรียนใด ๆ เพิ่มเติม ซึ่งรวมถึงการ Servlet, JSP, RMI, EJB ของถั่วทั่วไปและการเรียนเช่นเดียวกับการใช้งานแบบสแตนด์อะโลน
- หยุดอยู่กับที่แตกต่างกันเบรกพอยต์เขียนถึง System.out ไม่ยุ่งเกี่ยวกับการไหลปกติของการดำเนินการของการประยุกต์ใช้ซึ่งทำให้ระยะเวลาเป็นสิ่งสำคัญเมื่อมันเป็นประโยชน์อย่างยิ่ง
นี่คือไวยากรณ์ที่จะใช้ System.out.println () คือ:
System.out.println ( "ข้อความการแก้จุดบกพร่อง");
ข้อความทั้งหมดที่ถูกสร้างโดยไวยากรณ์ข้างต้นจะถูกบันทึกไว้ในแฟ้มบันทึกเว็บเซิร์ฟเวอร์
บันทึกข้อความ
ใช้วิธีการที่เหมาะสมในการเข้าสู่ระบบเพื่อบันทึกทุกข้อความแก้ปัญหาคำเตือนและข้อผิดพลาดซึ่งเป็นความคิดที่ดีมากก็จะแนะนำให้ใช้ log4j บันทึกข้อความทั้งหมด
Servlet API นอกจากนี้ยังมีวิธีที่ง่ายของการส่งออกโดยใช้เข้าสู่ระบบ () วิธีการดังต่อไปนี้:
// นำเข้าจำเป็น Java ห้องสมุดนำเข้า java.io. *; นำเข้า javax.servlet * .; นำเข้า javax.servlet.http * .; เรียนสาธารณะ ContextLog ขยาย HttpServlet { โมฆะสาธารณะ doGet (HttpServletRequest ร้องขอ การตอบสนอง HttpServletResponse) พ่น ServletException, java.io.IOException { สตริงที่ตราไว้หุ้น = request.getParameter ( "par1"); // โทร ServletContext.log สองวิธี ServletContext บริบท = getServletContext (); ถ้า (ตราไว้หุ้นละ == null || par.equals ( "")) // บันทึกพารามิเตอร์โดยรุ่น Throwable context.log ( "ไม่มีข้อความที่ได้รับ:" IllegalStateException ใหม่ ( "หายไปพารามิเตอร์")); อื่น context.log ( "นี่คือข้อความของผู้เข้าชม:" + ที่ตราไว้หุ้น); response.setContentType ( "text / html; charset = UTF-8"); java.io.PrintWriter ออก = response.getWriter (); ชื่อ String = "บริบทเข้าสู่ระบบ"; สตริง DOCTYPE = "\ n <DOCTYPE HTML!>"; out.println (DOCTYPE + "<html> \ n" + "<head> <title>" + ชื่อ + "</ title> </ head> \ n" + "<body bgcolor = \" # f0f0f0 \ "> \ n" + "<h1 align = \" ศูนย์ \ ">" + ชื่อ + "</ h1> \ n" + "<จัด H2 = \" ศูนย์ \ "> ข้อความที่ส่ง </ h2> \ n" + "</ body> </ html>"); } // doGet }
มัน ServletContext ข้อความไปยังแฟ้มบันทึก Servlet ภาชนะ สำหรับ Tomcat บันทึกเหล่านี้สามารถพบได้ใน <Tomcat ติดตั้งไดเรกทอรี> / ไดเรกทอรีล็อก
แฟ้มบันทึกเหล่านี้เป็นจริงที่เกิดขึ้นใหม่ความถี่ข้อผิดพลาดหรือปัญหาจะได้รับคำแนะนำ ด้วยเหตุนี้เราขอแนะนำให้ใช้เข้าสู่ระบบ () ฟังก์ชันยกเว้นจับข้อไม่ปกติเกิดขึ้น
ใช้ JDB ดีบัก
คุณสามารถใช้แอปเพล็หรือการแก้จุดบกพร่องการประยุกต์ใช้คำสั่ง JDB เพื่อแก้ปัญหา Servlet
ในการแก้ปัญหา Servlet เราสามารถแก้ปัญหา sun.servlet.http.HttpServer แล้วรันมันเป็น HTTPServer Servlet เพื่อตอบสนองต่อการร้องขอ HTTP ด้านเบราว์เซอร์ แก้จุดบกพร่องแอปเพล็โปรแกรมขนาดเล็กนี้จะคล้ายกันมาก และแก้จุดบกพร่องแอปเพล็ที่แตกต่างกันโปรแกรมจริงกำลังดีบั๊กเป็น sun.applet.AppletViewer
แก้จุดบกพร่องมากที่สุดโดยอัตโนมัติจะซ่อนรายละเอียดของวิธีการแก้ปัญหาแอปเพล็ ในทำนองเดียวกันสำหรับเซิร์ฟเล็ตที่คุณจะต้องทำต่อไปด้วยความช่วยเหลือของดีบัก:
- ตั้งดีบักของ classpath classpath เพื่อที่จะสามารถหา sun.servlet.http.Http-Server และที่เกี่ยวข้องกับการเรียน
- ตั้งดีบักของ classpath classpath เพื่อที่จะสามารถหาเซิร์ฟเล็ตและการเรียนการสนับสนุนของคุณมักจะอยู่ใน server_root / Servlets และ server_root / ชั้นเรียนใน
คุณมักจะไม่ต้องการที่จะ server_root / Servlets ใน classpath ของคุณเพราะมันปิดการใช้งานเซิร์ฟเล็ตโหลด แต่กฎนี้มีมีประโยชน์มากสำหรับการแก้จุดบกพร่อง จะช่วยให้คุณแก้ปัญหาใน HTTPServer รถตักดินแบบกำหนดเองก่อน Servlet Servlet ตั้งเบรกพอยต์ในเซิร์ฟเล็ต
หากคุณได้ตั้งค่า classpath classpath ถูกต้องคุณสามารถเริ่มแก้จุดบกพร่อง sun.servlet.http.HttpServer Servlet สามารถตั้งจุดพักในรหัสที่คุณต้องการที่จะแก้ปัญหาแล้ว Servlet รับใช้เว็บเบราว์เซอร์ (http: // localhost: 8080 / servlet / ServletToDebug) ทำให้การร้องขอไปยัง HTTPServer คุณจะเห็นการทำงานของโปรแกรมจะหยุดที่จุดพัก
ใช้ความคิดเห็น
ความคิดเห็นในรหัสที่จะช่วยให้ในรูปแบบต่างๆสำหรับการแก้จุดบกพร่อง หมายเหตุสามารถใช้ในรูปแบบอื่น ๆ อีกมากมายกระบวนการแก้จุดบกพร่อง
การใช้ความคิดเห็น Java Servlet และความคิดเห็นบรรทัดเดียว (// ... ), ความเห็นหลายคู่สาย (/ * ... * /) สามารถใช้ในการลบบางรหัส Java ชั่วคราว หากปัญหาจะหายไปคุณก็ดูรหัสแสดงความคิดเห็นและระบุปัญหา
ข้อมูลของลูกค้าและส่วนหัวด้านเซิร์ฟเวอร์
บางครั้งเมื่อ Servlet ไม่ได้ตามที่คาดไว้ดูร้องขอ HTTP เดิมและการตอบสนองเป็นประโยชน์อย่างมาก หากคุณมีความคุ้นเคยกับการกำหนดค่า HTTP คุณสามารถอ่านคำขอและการตอบสนองและดูข้อมูลสิ่งที่ส่วนหัวเหล่านี้
เทคนิคการแก้จุดบกพร่องที่สำคัญ
นี่คือบางส่วนเคล็ดลับการแก้จุดบกพร่อง Servlet:
- โปรดทราบ server_root / ชั้นเรียนจะไม่ถูกโหลดและ server_root / การ Servlets อาจ
- มันจะถามเบราว์เซอร์ที่จะแสดงเนื้อหาต้นฉบับของหน้าเว็บจะแสดง ซึ่งจะช่วยในการระบุรูปแบบปัญหา มันมักจะเป็นตัวเลือกในเมนู "ดูที่"
- โดยการบังคับให้เต็มโหลดหน้าเว็บเพื่อให้มั่นใจว่าเบราว์เซอร์ได้ร้องขอก่อนบัฟเฟอร์ส่งออกที่ ใน Netscape Navigator ใช้ Shift-โหลดใน Internet Explorer ใช้ Shift-รีเฟรช
- ตรวจสอบให้แน่ใจ init servlet ของ () วิธีการยอมรับ ServletConfig พารามิเตอร์และเรียกร้อง super.init (config)