Selalu sulit untuk menguji/men-debug program JSP atau servlet. Program JSP dan Servlets cenderung melibatkan banyak interaksi klien/server, yang sangat mungkin menyebabkan kesalahan, dan sulit untuk mereproduksi lingkungan kesalahan.
Selanjutnya, kami akan memberikan beberapa tip dan saran untuk membantu Anda men-debug program Anda.
System.out.println() dapat dengan mudah menandai apakah suatu kode telah dieksekusi. Tentu saja kita juga bisa mencetak berbagai nilai. Juga:
Karena objek Sistem menjadi objek inti Java, objek tersebut dapat digunakan di mana saja tanpa memperkenalkan kelas tambahan. Cakupan penggunaan mencakup Servlet, JSP, RMI, EJB, Beans, kelas, dan aplikasi yang berdiri sendiri.
Dibandingkan dengan berhenti berjalan pada breakpoint, menggunakan System.out untuk menghasilkan output tidak akan berdampak signifikan pada proses berjalannya aplikasi. Fitur ini sangat berguna pada aplikasi yang mekanisme pengaturan waktunya sangat penting.
Sintaks untuk menggunakan System.out.println() diberikan selanjutnya:
System.out.println("Pesan debug");Berikut adalah contoh sederhana menggunakan System.out.print():
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><html><head><title>System.out.println</title></ head><body><c:forEach var="counter"start="1" end="10" step="1" > <c:out value="${counter-5}"/></br> <% Sistem.keluar.println( "penghitung= " + pageContext.findAttribute("penghitung") %></c:forEach></body></html>Sekarang, jika Anda menjalankan contoh di atas, maka akan menghasilkan hasil sebagai berikut:
-4-3-2-1012345Jika Anda menggunakan server Tomcat, Anda akan dapat menemukan konten tambahan berikut di file stdout.log di direktori logs:
penghitung=1penghitung=2penghitung=3penghitung=4penghitung=5penghitung=6penghitung=7penghitung=8penghitung=9penghitung=10Dengan menggunakan metode ini, variabel dan informasi lainnya dapat dikeluarkan ke log sistem untuk dianalisis dan menemukan penyebab utama masalahnya.
Kerangka logging J2SE menyediakan layanan logging untuk setiap kelas yang berjalan di JVM. Jadi kita bisa menggunakan kerangka ini untuk mencatat informasi apa pun.
Mari kita tulis ulang kode di atas untuk menggunakan API logger di 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 " mulai="1" end="10" langkah="1" > <c:set var="myCount" value="${counter-5}" /> <c:out value="${myCount}"/ ></br> <% String pesan = "counter=" + pageContext.findAttribute("counter") + " myCount=" + pageContext.findAttribute("myCount"); :untukSetiap></tubuh></html>Hasilnya mirip dengan yang sebelumnya, namun dapat menampilkan informasi tambahan ke file stdout.log. Di sini kami menggunakan metode info di logger. Di bawah ini kami memberikan snapshot dari file stdout.log:
24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: counter=1 myCount=-424-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: counter=2 myCount=- 324-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: counter=3 myCount=-224-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: counter=4 myCount=-124-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: counter=5 myCount=024-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: counter=6 myCount=124-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: counter= 7Hitunganku=224-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: counter=8 myCount=324-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: counter=9 myCount=424-Sep-2013 23: 31:31 org.apache.jsp.main_jsp _jspServiceINFO: penghitung=10 Jumlahku=5Pesan dapat dikirim dengan berbagai prioritas, menggunakan metode server(), warning(), info(), config(), fine(), finer(), dan best(). Metode terbaik() digunakan untuk mencatat informasi terbaik, dan metode server() digunakan untuk mencatat informasi paling parah.
Gunakan kerangka kerja Log4J untuk mencatat pesan dalam file berbeda, yang diklasifikasikan berdasarkan tingkat keparahan dan kepentingannya.
NetBeans adalah struktur pohon dan lingkungan pengembangan komprehensif Java open source yang mendukung pengembangan aplikasi Java dan aplikasi jaringan independen, dan juga mendukung debugging JSP.
NetBeans mendukung fungsi debugging dasar berikut:
titik henti sementara
Pelacakan satu langkah
titik observasi
Informasi selengkapnya dapat ditemukan di manual NetBeans.
Anda dapat menggunakan perintah jdb di JSP dan servlet untuk melakukan debug seperti aplikasi normal.
Biasanya, kami men-debug objek sun.servlet.http.HttpServer secara langsung untuk melihat bagaimana HttpServer mengeksekusi JSP/Servlets sebagai respons terhadap permintaan HTTP. Ini sangat mirip dengan debugging applet. Bedanya, yang sebenarnya di-debug oleh program applet adalah sun.applet.AppletViewer.
Kebanyakan debugger dapat secara otomatis mengabaikan beberapa detail saat men-debug applet karena mereka tahu cara men-debug applet. Jika Anda ingin mentransfer objek debugging ke JSP, Anda perlu melakukan dua hal berikut:
Atur jalur kelas debugger sehingga dapat menemukan sun.servlet.http.Http-Server dan kelas terkait.
Atur jalur kelas debugger sehingga dapat menemukan file JSP Anda dan kelas terkait.
Setelah mengatur classpath, mulailah men-debug sun.servlet.http.Http-Server. Anda dapat mengatur breakpoint di mana saja di file JSP sesuka Anda, lalu menggunakan browser untuk mengirim permintaan ke server dan Anda akan melihat program berhenti di breakpoint.
Komentar dalam program memainkan peran tertentu dalam men-debug program dalam banyak cara. Komentar dapat digunakan dalam banyak aspek debugging suatu program.
JSP menggunakan anotasi Java. Jika bug hilang, lihat lebih dekat kode yang baru saja Anda komentari, dan biasanya Anda dapat mengetahui alasannya.
Terkadang juga berguna untuk melihat permintaan dan tanggapan HTTP mentah ketika JSP tidak berfungsi sebagaimana mestinya. Jika Anda familiar dengan struktur HTTP, Anda dapat langsung mengamati permintaan dan respons serta melihat apa yang terjadi dengan modul header ini.
Di sini kami mengungkapkan dua tips lagi untuk men-debug JSP:
Gunakan browser untuk menampilkan konten halaman asli untuk membedakan apakah ada masalah format. Opsi ini biasanya berada di bawah menu View.
Pastikan browser tidak menangkap keluaran permintaan sebelumnya saat memuat ulang halaman secara paksa. Jika Anda menggunakan browser Netscape Navigator, gunakan Shift-Reload; jika Anda menggunakan browser IE, gunakan Shift-Refresh.