Latest web development tutorials

แก้จุดบกพร่อง 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)