Latest web development tutorials

Servlet Debugging

Pengujian / debugging pengembangan Servlet tentu saja selalu sulit. Servlet sering melibatkan sejumlah besar interaksi klien / server, tapi mungkin sulit untuk mereproduksi kesalahan.

Berikut adalah beberapa tips dan saran yang dapat membantu Anda debug.

System.out.println ()

System.out.println () digunakan sebagai penanda, yang digunakan untuk menguji apakah suatu bagian tertentu dari kode dieksekusi. Kami juga dapat mencetak nilai dari variabel. Selain itu:

  • Karena benda Sistem merupakan bagian dari objek inti Java, dapat digunakan di mana saja tanpa perlu menginstal kelas tambahan. Ini termasuk Servlet, JSP, RMI, EJB, Kacang umum dan kelas, serta aplikasi yang berdiri sendiri.
  • Dengan berbeda berhenti di breakpoint, menulis ke System.out tidak mengganggu aliran normal eksekusi aplikasi, yang membuatnya waktu yang sangat penting saat itu adalah sangat berharga.

Berikut adalah sintaks untuk menggunakan System.out.println () adalah:

System.out.println ( "Debugging pesan");

Semua pesan yang dihasilkan oleh tata bahasa di atas akan disimpan di file log server Web.

Log pesan

Menggunakan metode yang tepat penebangan untuk merekam semua debug, peringatan dan pesan kesalahan, yang merupakan ide yang sangat baik, disarankan untuk menggunakan log4j record semua pesan.

Servlet API juga menyediakan cara yang mudah untuk output, menggunakan metode log (), sebagai berikut:

// Impor diperlukan java perpustakaan import java.io. *;
import javax.servlet * .;
impor javax.servlet.http * .;

public class ContextLog meluas HttpServlet {
  public void doGet (permintaan HttpServletRequest, 
      HttpServletResponse respon) melempar ServletException,
         java.io.IOException {
    
      String par = request.getParameter ( "par1");
      // Panggil ServletContext.log dua metode ServletContext konteks = getServletContext ();

      jika (par == null || par.equals ( ""))
      // Parameter catatan dengan versi Throwable context.log ( "Tidak ada pesan yang diterima:",
          IllegalStateException baru ( "Missing parameter"));
      lain
          context.log ( "Berikut adalah pesan pengunjung:" + par);
      
      response.setContentType ( "text / html; charset = UTF-8");
      java.io.PrintWriter out = response.getWriter ();
      title String = "Konteks Log";
      String DOCTYPE = "\ n <DOCTYPE html!>";
      out.println (doctype +
        "<Html> \ n" +
        "<Head> <title>" + judul + "</ title> </ head> \ n" +
        "<Tubuh bgcolor = \" # f0f0f0 \ "> \ n" +
        "<H1 align = \" center \ ">" + judul + "</ h1> \ n" +
        "<H2 align = \" center \ "> Pesan yang dikirim </ h2> \ n" +
        "</ Body> </ html>");
    } // DoGet
}

ServletContext itu pesan teks ke Servlet container file log. Untuk Tomcat, log ini dapat ditemukan di <Tomcat-instalasi-direktori> / log direktori.

file log ini memang muncul kesalahan frekuensi atau masalah yang diberikan petunjuk. Karena itu, kami sarankan menggunakan log () fungsi pengecualian klausa menangkap biasanya tidak terjadi.

Gunakan JDB debugger

Anda dapat menggunakan applet atau aplikasi debugging perintah JDB untuk debug Servlet.

Untuk men-debug Servlet, kita bisa debug sun.servlet.http.HttpServer, dan kemudian jalankan sebagai HTTPServer Servlet untuk menanggapi permintaan HTTP sisi browser. program kecil debugging applet ini sangat mirip. Dan debugging applet berbeda, program yang sebenarnya sedang debugged adalah sun.applet.AppletViewer.

Kebanyakan debugger otomatis akan menyembunyikan rincian tentang bagaimana untuk debug applet. Demikian pula, untuk servlet, Anda harus melakukan hal berikut dengan bantuan debugger:

  • Mengatur debugger Anda classpath classpath, sehingga dapat menemukan sun.servlet.http.Http-Server dan kelas terkait.
  • Mengatur debugger Anda classpath classpath, sehingga dapat menemukan servlet dan kelas pendukung, biasanya dalam server_root / servlets dan server_root / kelas di.

Anda biasanya tidak ingin server_root / servlets di classpath Anda, karena ia mematikan ulang servlet. Namun, aturan ini mengandung sangat berguna untuk debugging. Hal ini memungkinkan Anda untuk debug di HTTPServer Servlet kustom loader sebelum Servlet mengatur breakpoint di Servlet.

Jika Anda telah mengatur classpath classpath yang benar, Anda dapat mulai debugging sun.servlet.http.HttpServer. Servlet dapat mengatur breakpoints dalam kode Anda ingin debug, dan kemudian diberi Servlet menggunakan browser Web (http: // localhost: 8080 / servlet / ServletToDebug) membuat permintaan untuk HTTPServer. Anda akan melihat eksekusi program berhenti di breakpoint.

menggunakan komentar

Komentar dalam kode akan membantu dalam berbagai cara untuk debugging. Catatan dapat digunakan dalam banyak cara lain proses debugging.

Penggunaan Java Servlet komentar dan komentar single-line (// ...), komentar multi-line (/ * ... * /) dapat digunakan untuk menghapus sementara beberapa kode Java. Jika bug menghilang, Anda hanya melihat kode berkomentar dan mengidentifikasi masalah.

Klien dan sundulan server-side informasi

Kadang-kadang, ketika sebuah Servlet tidak seperti yang diharapkan, melihat permintaan HTTP asli dan respon sangat berguna. Jika Anda sudah familiar dengan konfigurasi HTTP, Anda dapat membaca permintaan dan respon dan melihat informasi apa header ini.

teknik debugging penting

Berikut adalah beberapa tips Servlet debugging:

  • Harap dicatat, server_root / kelas tidak akan dimuat ulang, dan server_root / servlets kekuatan.
  • Ia meminta browser untuk menampilkan konten asli dari halaman ini akan menampilkan. Ini membantu untuk mengidentifikasi format masalah. Ini biasanya merupakan pilihan dalam menu "View".
  • Dengan memaksa penuh kembali halaman tersebut untuk memastikan bahwa browser tidak permintaan sebelum output buffer. Pada Netscape Navigator, menggunakan Shift-Reload, di Internet Explorer, gunakan Shift-Refresh.
  • Pastikan init () metode servlet menerima parameter ServletConfig dan panggilan super.init (config).