it-swarm-vi.com

Làm thế nào tôi có thể gỡ lỗi một JSP?

Tôi đang cố gắng chỉnh sửa một JSP cho một dự án và tôi đang nhận được một NullPulumException ở đâu đó trong JSP khi nó được yêu cầu từ máy chủ của tôi.

Máy chủ web của tôi (JBoss) đang báo cáo ngoại lệ, nhưng nó cho tôi số dòng không có thật. Nó báo cáo rằng ngoại lệ đã xảy ra trên dòng 702, nhưng tệp JSP của tôi chỉ dài 146 dòng, vì vậy tôi không thể xác định dòng nào bị nghẹt.

Một số kỹ thuật tốt để gỡ lỗi trong các tệp JSP là gì? Tôi đang sử dụng IntelliJ 9 Ultimate làm IDE của mình.

Cảm ơn

28
ampersandre

Có một số tùy chọn có thể giúp bạn:

  1. Câu trả lời này thực sự giải thích cách gỡ lỗi các tệp tin cụ thể: https://stackoverflow.com/questions/33739/jsp-debugging-in-intellij-idea . Tôi chưa bao giờ thử điều này vì vậy tôi đã làm theo ba gợi ý tiếp theo khi tôi đang sử dụng JSP, JBoss và IntelliJ ...

  2. Hãy nhớ rằng các tệp tin được biên dịch thành các lớp. Khi nó nói dòng 702, nó có nghĩa là trong lớp biên dịch. Nếu bạn có test.jsp, tên lớp có lẽ là test_jsp, vì vậy hãy mở thư mục công việc JBoss của bạn và tìm kiếm test_jsp.Java (một khi bạn tìm đúng thư mục, bạn sẽ thấy cấu trúc thư mục khớp với cấu trúc thư mục JSP của bạn). Bất cứ khi nào tôi có một ngoại lệ JSP, tôi có thể tìm thấy dòng này khá dễ dàng và thường khớp nó với dòng tương ứng trong JSP.

  3. Các điểm dừng hoạt động tốt trong các lớp Java được gọi từ một tệp JSP. Vì vậy, có lẽ bạn có thể di chuyển Java mã tập lệnh mà bạn có trong tệp JSP của bạn thành một lớp và gỡ lỗi từ điểm vào. Trong tương lai, bạn cũng có thể tạo thói quen sắp xếp lại logic của mình để phần lớn trong số đó nằm trong một lớp đang được gọi từ JSP và JSP đơn giản, đơn giản và hy vọng không đưa ra bất kỳ ngoại lệ nào. Đây là cách thực hành tốt.

  4. Tốt hơn hết, hãy xóa tất cả (hoặc hầu như tất cả) Java logic vào Java các lớp, để lại các tệp JSP cho các thẻ HTML và JSP. Tôi biết điều này không khả thi ngay đi, nhưng một lần nữa, đó là một ý tưởng tốt về lâu dài để tránh những vấn đề như thế này.

30
Nicole