ฉันจะดีบัก JSP ได้อย่างไร


26

ฉันพยายามแก้ไข JSP สำหรับโครงการและฉันได้รับ NullPointerException ที่ไหนสักแห่งใน JSP เมื่อได้รับการร้องขอจากเซิร์ฟเวอร์ของฉัน

เว็บเซิร์ฟเวอร์ของฉัน (JBoss) กำลังรายงานข้อยกเว้น แต่ให้หมายเลขบรรทัดปลอม มีการรายงานว่ามีข้อยกเว้นเกิดขึ้นที่บรรทัด 702 แต่ JSP ของฉันมีความยาวเพียง 146 บรรทัดดังนั้นฉันจึงไม่สามารถระบุว่าสายใดสำลัก

เทคนิคที่ดีในการแก้ไขข้อผิดพลาดใน JSP มีอะไรบ้าง ฉันใช้ IntelliJ 9 Ultimate เป็น IDE ของฉัน

ขอบคุณ


1
อาจถูกถามใน Stackoverflow.com
Abimaran Kugathasan

1
ตกลง. ขออภัยฉันไม่ชัดเจนเกี่ยวกับความแตกต่างระหว่าง StackOverflow.com และ Programmers.StackExchange.com ฉันไม่แน่ใจว่าคำถามใดอยู่ที่ไหนฉันอ่านคำถามที่พบบ่อยสำหรับ program.stackexchange แต่มันคลุมเครือเล็กน้อย
เครื่องหมาย

3
จริง ๆ แล้วฉันไม่แน่ใจว่าจะเป็นเช่นนั้นใน Stack Overflow ในขณะที่มันค่อนข้างเฉพาะมีรายละเอียดไม่เป็นรูปธรรมเพียงพอ (เนื่องจากลักษณะของปัญหา) สิ่งที่คุณทำหลังจากนั้นคือเทคนิคการดีบักซึ่งควรอยู่ในหัวข้อสำหรับเว็บไซต์นี้
ChrisF

คุณรวม jsps ใด ๆ ไว้ใน jsp ของคุณหรือไม่? นั่นคือวิธีที่หมายเลขบรรทัดอาจเพิ่มขึ้น ต้องย้ายคำถามไปที่ stackoverflow
ลบเมื่อ

เทคนิคหนึ่งคือการดูไฟล์คอมไพล์: codeinventions.blogspot.com/2014/08/…
Suresh Atta

คำตอบ:


29

มีหลายตัวเลือกที่สามารถช่วยคุณ:

  1. คำตอบนี้จริงอธิบายถึงวิธีการแก้ปัญหาโดยเฉพาะ JSPs: https://stackoverflow.com/questions/33739/jsp-debugging-in-intellij-idea ฉันไม่เคยลองสิ่งนี้มาก่อนดังนั้นฉันจึงทำตามคำแนะนำสามข้อต่อไปนี้เมื่อฉันใช้ JSP, JBoss และ IntelliJ ...

  2. จำไว้ว่า JSP ถูกคอมไพล์ไปยังคลาส เมื่อมันบอกว่าบรรทัด 702 มันหมายถึงในชั้นเรียนที่รวบรวม ถ้าคุณมีtest.jspชื่อคลาสน่าจะเป็นtest_jspให้เปิดไดเรกทอรีงาน JBoss และค้นหาtest_jsp.java(เมื่อคุณพบไดเรกทอรีที่ถูกต้องคุณจะเห็นว่าโครงสร้างไดเรกทอรีตรงกับโครงสร้างไดเรกทอรี JSP ของคุณ) เมื่อใดก็ตามที่ฉันมีข้อยกเว้น JSP ฉันสามารถค้นหาบรรทัดได้ง่ายและมักจะจับคู่กับบรรทัดที่เกี่ยวข้องใน JSP

  3. จุดพักทำงานได้ดีในคลาส Java ที่เรียกจาก JSP ดังนั้นบางทีคุณสามารถย้ายโค้ดสคริปต์ Java ที่คุณมีใน JSP ของคุณไปยังคลาสและดีบักจากจุดเข้าใช้งาน ในอนาคตคุณยังสามารถสร้างนิสัยของการจัดเรียงตรรกะของคุณเพื่อให้ส่วนใหญ่อยู่ในชั้นเรียนที่ถูกเรียกจาก JSP และ JSP นั้นง่ายตรงไปตรงมาและหวังว่าจะไม่ส่งข้อยกเว้นใด ๆ นี่เป็นการฝึกฝนที่ดีอยู่แล้ว

  4. ยังดีกว่าให้ลบจาวาตรรกะทั้งหมด (หรือแทบทั้งหมด) ออกเป็นคลาส Java โดยปล่อย JSP สำหรับแท็ก HTML และ JSP ฉันรู้ว่านี่เป็นไปไม่ได้ในทันที แต่เป็นความคิดที่ดีในระยะยาวที่จะหลีกเลี่ยงปัญหาเช่นนี้


2
+1 สำหรับการลบตรรกะออกจาก JSP ข้อมูลเพิ่มเติมสามารถดูได้ในแนวทางปฏิบัติที่ดีที่สุดของ JSP / Servlet ด้วยสถาปัตยกรรมรุ่น 2 (MVC): oracle.com/technetwork/articles/javase/servlets-jsp-140445.html
bunglestink

ขอบคุณ! ตัวเลือก 4 เป็นอุดมคติฉันเห็นด้วย แต่เราไม่มีการแยกมุมมอง / ตัวควบคุมที่ยอดเยี่ยมในโครงการนี้
เครื่องหมาย

1
+1 สำหรับรายการ # 2 ด้วย ฉันไม่รู้ว่าจะหา*_jsp.javaชั้นเรียนได้จากที่ไหน
scottyseus

2
ลบตรรกะทั้งหมดออกจาก JSP ในโครงการที่มี JSP หลายพันรายการแต่ละอันมีสคริปต์สคริปต์หลายพันบรรทัด ... ไม่ขอบคุณเพียงแค่ต้องการดีบัก Hashtables และเวกเตอร์ FML :-( </rant> คำตอบที่ดีแม้ว่า
Peter Perháč

-1

คุณสามารถแก้ไขข้อบกพร่องของหน้า JSP ได้อย่างง่ายดายเหมือนกับรหัสจาวา:
"ไฟล์ JSP เหมือนกันกับการดีบักคลาส Java แต่ไม่ได้ใช้งานคุณลักษณะส่วนใหญ่ (ดู, ตรวจสอบ, ฯลฯ ) วิธีเดียวที่จะได้ค่าของตัวแปร คือมุมมองตัวแปร "
ดูลิงค์ด้านล่าง:
https://www.laliluna.de/articles/posts/debugging-jsp-java-tutorial.html


4
เมื่อตอบคำถามที่เก่ากว่าซึ่งได้รับคำตอบที่ดีแล้วโปรดเพิ่มรายละเอียดลงในคำตอบของคุณเพื่อที่คุณจะได้พูดถึงบางสิ่งที่ไม่ได้กล่าวถึง
ริ้น
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.