Як я можу налагоджувати JSP?


26

Я намагаюсь відредагувати JSP для проекту, і я отримую NullPointerException десь у JSP, коли це вимагається з мого сервера.

Мій веб-сервер (JBoss) повідомляє про виняток, але він дає мені фіктивний номер рядка. Він повідомляє, що виняток стався на лінії 702, але мій JSP - це лише 146 рядків, тож я не можу визначити, який рядок захлинається.

Які є хороші методи налагодження помилок у JSP? Я використовую IntelliJ 9 Ultimate в якості свого IDE.

Спасибі


1
Вас можуть запитати на Stackoverflow.com
Абімаран Кугатхасан

1
Добре. Вибачте, мені не зовсім зрозуміла різниця між StackOverflow.com та Programmers.StackExchange.com. Я не впевнений, які питання належать де. Я прочитав FAQ для програмістів.stackexchange, але це трохи розпливчасто.
ampersandre

3
Насправді я не впевнений, що це буде нормально для переповнення стека. Хоча це досить конкретно, конкретних деталей недостатньо (через характер проблеми). Те, про що ви хочете, - це методи налагодження, які повинні бути на тему цього сайту.
ChrisF

Ви включили будь-які jsps до свого jsp? Ось так може збільшитися номер рядка Питання потрібно перенести на
stackoverflow

Однією з методик є перегляд файлів компіляції: codeinventions.blogspot.com/2014/08/…
Suresh Atta

Відповіді:


29

Є кілька варіантів, які можуть вам допомогти:

  1. Ця відповідь фактично пояснює, як спеціально налагодити JSP: /programming/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 в класи Java, залишивши JSP для тегів HTML та JSP. Я знаю, що це неможливо одразу, але знову ж таки, це довгострокова ідея, щоб уникнути подібних проблем.


2
+1 для видалення логіки з JSP. Більше про це можна побачити в кращих практиках JSP / Servlet, в архітектурі Model 2 (MVC): oracle.com/technetwork/articles/javase/servlets-jsp-140445.html
bunglestink

Спасибі! Варіант 4 є ідеальним, я погоджуюся, але у нас немає великого розділення перегляду / контролера в цьому проекті.
ampersandre

1
Також +1 для елемента №2. Я не мав уявлення, де знайти *_jsp.javaзаняття.
scottyseus

2
видалення всієї логіки з JSP на проект, який містить тисячі JSP, кожен з яких містить кілька тисяч рядків сценаріїв ... ні, дякую, просто хочу налагодити Hashtables і Vectors. FML :-( </rant> приємна відповідь, хоча
Пітер Пергач

-1

Ви можете легко налагодити сторінку JSP так само, як код Java:
"Файл JSP такий же, як налагодження класу Java, але більшість функцій (Watch, Inspect тощо) не реалізовані. Єдиний спосіб отримати значення змінних - це перегляд змінних. "
Дивіться посилання нижче:
https://www.laliluna.de/articles/posts/debugging-jsp-java-tutorial.html


4
Відповідаючи на старіше запитання, на яке вже є добре отримана відповідь, будь ласка, додайте до нього більш детальну інформацію, щоб ви зверталися до чогось, що вже не було висвітлено.
гнат
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.