Come posso eseguire il debug di un JSP?


26

Sto cercando di modificare un JSP per un progetto e sto ottenendo una NullPointerException da qualche parte nel JSP quando viene richiesto dal mio server.

Il mio server Web (JBoss) sta segnalando l'eccezione, ma mi sta fornendo un numero di riga falso. Sta segnalando che l'eccezione si è verificata sulla linea 702, ma il mio JSP è lungo solo 146 linee, quindi non sono in grado di identificare quale linea sta soffocando.

Quali sono alcune buone tecniche per eseguire il debug degli errori nei JSP? Sto usando IntelliJ 9 Ultimate come il mio IDE.

Grazie


1
può essere richiesto su
Stackoverflow.com

1
Ok. Spiacenti, non sono del tutto chiaro sulla differenza tra StackOverflow.com e Programmers.StackExchange.com. Non sono sicuro di quali domande appartengano dove .. Ho letto le FAQ per programmers.stackexchange ma è un po 'vago.
commerciale

3
In realtà non sono sicuro che questo sarebbe OK su Stack Overflow. Sebbene sia abbastanza specifico, non ci sono abbastanza dettagli concreti (a causa della natura del problema). Quello che stai cercando sono le tecniche di debug che dovrebbero essere in argomento per questo sito.
ChrisF

hai incluso jsps nel tuo jsp? Ecco come il numero di riga può aumentare. La domanda deve essere spostata su StackOverflow
menoSeven

Una tecnica sta vedendo i file di compilazione: codeinventions.blogspot.com/2014/08/…
Suresh Atta

Risposte:


29

Esistono diverse opzioni che possono aiutarti:

  1. Questa risposta spiega in realtà come eseguire il debug di JSP in particolare: /programming/33739/jsp-debugging-in-intellij-idea . Non l'ho mai provato, quindi ho seguito i tre suggerimenti seguenti quando stavo usando JSP, JBoss e IntelliJ ...

  2. Ricorda che i JSP sono compilati in classi. Quando dice la riga 702, significa nella classe compilata. Se lo hai test.jsp, il nome della classe è probabilmente test_jsp, quindi apri la directory di lavoro di JBoss e cerca test_jsp.java(una volta trovata la directory corretta, vedrai che la struttura della directory corrisponde alla struttura della directory JSP). Ogni volta che ho avuto un'eccezione JSP ho potuto trovare la linea abbastanza facilmente e di solito abbinarla alla linea corrispondente nel JSP.

  3. I punti di interruzione funzionano bene nelle classi Java chiamate da un JSP. Quindi, forse puoi spostare il codice di script Java che hai nel tuo JSP in una classe ed eseguire il debug dal punto di ingresso. In futuro puoi anche prendere l'abitudine di riorganizzare la tua logica in modo che la maggior parte di essa si trovi in ​​una classe che viene chiamata dal JSP, e il JSP è semplice, diretto e si spera che non dia alcuna eccezione. Questa è comunque una buona pratica.

  4. Meglio ancora, rimuovere tutta la logica Java (o quasi tutta) nelle classi Java, lasciando JSP per tag HTML e JSP. So che non è fattibile subito, ma di nuovo, è una buona idea a lungo termine evitare problemi come questo.


2
+1 per la rimozione della logica dal JSP. Ulteriori informazioni al riguardo sono disponibili nelle best practice JSP / Servlet, con architettura Model 2 (MVC): oracle.com/technetwork/articles/javase/servlets-jsp-140445.html
bunglestink

Grazie! L'opzione 4 è l'ideale, sono d'accordo, ma non abbiamo un'ottima separazione vista / controller in questo progetto.
commerciale

1
Anche +1 per l'articolo n. 2. Non avevo idea di dove trovare le *_jsp.javalezioni.
scottyseus,

2
rimuovendo tutta la logica dai JSP su un progetto che ha migliaia di JSP, ognuno contenente diverse migliaia di righe di scriptlet ... no, grazie, voglio solo eseguire il debug di Hashtables e Vettori. FML :-( </rant> bella risposta però
Peter Perháč il

-1

È possibile eseguire il debug di una pagina JSP facilmente come un codice java:
"un file JSP è uguale al debug di una classe Java, ma la maggior parte delle funzionalità (Watch, Inspect, ecc.) Non sono implementate. L'unico modo per ottenere i valori delle variabili è la vista Variabili ".
Vedi il link sotto:
https://www.laliluna.de/articles/posts/debugging-jsp-java-tutorial.html


4
Quando rispondi a una domanda precedente che ha già una risposta ben accolta, aggiungi maggiori dettagli alla tua risposta in modo da indirizzare a qualcosa che non era già coperto.
moscerino
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.