Bagaimana saya bisa men-debug JSP?

26

Saya mencoba mengedit JSP untuk sebuah proyek dan saya mendapatkan NullPointerException di suatu tempat di JSP ketika diminta dari server saya.

Server web saya (JBoss) melaporkan pengecualian, tetapi memberi saya nomor baris palsu. Ini melaporkan bahwa pengecualian terjadi pada baris 702, tetapi JSP saya hanya 146 baris, jadi saya tidak dapat mengidentifikasi baris mana yang tersedak.

Apa sajakah teknik yang baik untuk men-debug kesalahan dalam JSP? Saya menggunakan IntelliJ 9 Ultimate sebagai IDE saya.

Terima kasih

ampersandre
sumber
1
dapat ditanyakan di Stackoverflow.com
Abimaran Kugathasan
1
Baik. Maaf, saya tidak sepenuhnya jelas tentang perbedaan antara StackOverflow.com dan Programmer.StackExchange.com. Saya tidak yakin pertanyaan mana yang termasuk di mana .. Saya sudah membaca FAQ untuk programmer.stackexchange tapi agak kabur.
Ampersandre
3
Sebenarnya saya tidak yakin ini akan baik-baik saja di Stack Overflow. Meskipun cukup spesifik, detail konkretnya tidak cukup (karena sifat masalahnya). Apa yang Anda kejar adalah teknik debugging yang seharusnya menjadi topik untuk situs ini.
ChrisF
Sudahkah Anda memasukkan jsps di dalam jsp Anda? Begitulah cara meningkatkan jumlah baris. Pertanyaan perlu dipindahkan ke stackoverflow
minusSeven
Salah satu teknik adalah melihat file kompilasi: codeinventions.blogspot.com/2014/08/...
Suresh Atta

Jawaban:

29

Ada beberapa opsi yang dapat membantu Anda:

  1. Jawaban ini sebenarnya menjelaskan cara men-debug JSP secara khusus: /programming/33739/jsp-debugging-in-intellij-idea . Saya belum pernah mencoba ini jadi saya mengikuti tiga saran berikutnya ketika saya menggunakan JSP, JBoss, dan IntelliJ ...

  2. Ingat bahwa JSP dikompilasi ke kelas. Ketika dikatakan baris 702, itu berarti di kelas yang dikompilasi. Jika ya test.jsp, nama kelasnya mungkin test_jsp, jadi buka direktori kerja JBoss Anda dan cari test_jsp.java(setelah Anda menemukan direktori yang tepat, Anda akan melihat bahwa struktur direktori cocok dengan struktur direktori JSP Anda). Setiap kali saya memiliki pengecualian JSP saya bisa menemukan garis dengan cukup mudah dan biasanya mencocokkannya dengan baris yang sesuai di JSP.

  3. Breakpoints bekerja dengan baik di kelas Java yang dipanggil dari JSP. Jadi, mungkin Anda bisa memindahkan kode skrip Java yang Anda miliki di JSP Anda ke dalam kelas dan men-debug dari titik masuk. Di masa depan Anda juga dapat membiasakan menata ulang logika Anda sehingga sebagian besar berada di kelas yang dipanggil dari JSP, dan JSP sederhana, mudah dan mudah-mudahan tidak membuang pengecualian. Ini adalah praktik yang baik.

  4. Lebih baik lagi, hapus semua (atau hampir semua) logika Java ke dalam kelas Java, meninggalkan JSP untuk tag HTML dan JSP. Saya tahu ini tidak layak segera, tapi sekali lagi, itu ide bagus jangka panjang untuk menghindari masalah seperti ini.

Nicole
sumber
2
+1 untuk menghapus logika dari JSP. Lebih lanjut tentang ini dapat dilihat dalam praktik terbaik JSP / Servlet, dengan arsitektur Model 2 (MVC): oracle.com/technetwork/articles/javase/servlets-jsp-140445.html
bunglestink
Terima kasih! Opsi 4 ideal, saya setuju, tetapi kami tidak memiliki pemisahan tampilan / pengontrol yang bagus dalam proyek ini.
Ampersandre
1
Juga memberi +1 untuk item # 2. Saya tidak tahu di mana menemukan *_jsp.javakelas.
scottyseus
2
menghapus semua logika dari JSP pada proyek yang memiliki ribuan JSP, masing-masing berisi beberapa ribu baris scriptlet ... tidak, terima kasih, hanya ingin men-debug Hashtable dan Vektor. FML :-( </rant> jawaban yang bagus
Peter Perháč
-1

Anda dapat men-debug halaman JSP dengan mudah seperti kode java:
"file JSP sama dengan men-debug kelas Java, tetapi sebagian besar fitur (Watch, Inspect, dll) tidak diterapkan. Satu-satunya cara untuk mendapatkan nilai variabel adalah tampilan Variabel. "
Lihat tautan di bawah ini:
https://www.laliluna.de/articles/posts/debugging-jsp-java-tutorial.html

Shadab
sumber
4
Saat menjawab pertanyaan yang lebih lama yang sudah memiliki jawaban yang diterima dengan baik, tambahkan lebih banyak detail ke jawaban Anda sehingga Anda menangani sesuatu yang belum dibahas.
nyamuk