
Ξέρει κανείς πώς να διορθώσετε `JSP`το **IntelliJ** IDEA;


Όταν έθεσα σημείο διακοπής κατά τη γνώμη μου `JSP`τα αρχεία, τα εν λόγω σημεία διακοπής ποτέ δεν φαίνεται να έχουν αποτέλεσμα. Το πρόγραμμα εντοπισμού σφαλμάτων δεν τους χτυπά. IDEA φαίνεται να πιστεύει ότι τα σημεία διακοπής είναι έγκυρα. Βλέπω μια κόκκινη κουκκίδα τοποθετούνται στα αριστερά της γραμμής, όπου μπορώ να τοποθετήσω σημείο διακοπής μου.


Διάβασα σε IntelliJ φόρουμ [σε αυτό το post](http://intellij.net/forums/thread.jspa;jsessionid=2B86A25AECC06A4BE3447388882AA79F?messageID=5218405&#5218405) που `JSP`τα αρχεία πρέπει να είναι κάτω από το web-inf για τον εντοπισμό σφαλμάτων για να εργαστούν.


Στη συνέχεια, όμως διάβασα επίσης ότι `JSP`τα αρχεία που έχουν υπαχθεί web-inf δεν θα είναι άμεσα προσβάσιμες από τον χρήστη.


Δεν είμαι σίγουρος ποιος είναι πραγματικά σωστό. 

 
JSP τον εντοπισμό σφαλμάτων σε IntelliJ IDEA
============================================



Για το δεύτερο σκέλος της ερώτησής σας ( «JSP αρχεία που έχουν υπαχθεί web-inf δεν θα είναι άμεσα προσβάσιμη από το χρήστη») που είναι σωστή. Για να επιτρέψετε στους χρήστες να έχουν πρόσβαση σε αρχεία JSP στις καταχωρήσεις WEB-INF φάκελο servlet και servlet-χαρτογράφηση πρέπει να γίνουν στο αρχείο web.xml για κάθε σελίδα JSP. 

 

Για JSP τον εντοπισμό σφαλμάτων σε IntelliJ υπάρχουν κάποιες ρυθμίσεις που πρέπει να είναι σε τάξη. Το γεγονός ότι IntelliJ επιτρέπει πάντα να προσθέσετε ένα σημείο διακοπής σε μια γραμμή JSP δεν σημαίνει απαραίτητα ότι έχετε ρυθμίσει JSP τον εντοπισμό σφαλμάτων. Στη συνέχεια θα αναφερθώ σε IntelliJ 8 διαμόρφωση, σ.σ.μ. προηγούμενες εκδόσεις, θα χρειαστεί να κάνει παρόμοιες ενέργειες, όπως οι έννοιες είναι οι ίδιες.


Για να μπορέσει JSP τον εντοπισμό σφαλμάτων θα πρέπει να κάνει δύο βήματα: να ορίσετε μια διαμόρφωση web εφαρμογή στο έργο σας και να προσθέσετε μια διαμόρφωση του διακομιστή web εφαρμογή.


*Διαμόρφωση εφαρμογή Web* : για να έχουμε JSP τον εντοπισμό σφαλμάτων, θα πρέπει να έχετε έναν «ιστό» πτυχή στη δομή του έργου σας, δείχνοντας με τον σωστό αρχείο web.xml. Ανάλογα με το είδος της δομής web εφαρμογή που χρησιμοποιείτε, η πτυχή μπορεί να ανιχνεύονται αυτόματα από IntelliJ (πάει έτσι κι αλλιώς για να ελέγξει τι έχει γίνει) ή μπορεί να χρειαστεί να το προσθέσετε με μη αυτόματο τρόπο. Να θυμάστε ότι στην καρτέλα «Java EE χτίσει ρυθμίσεων» για να ορίσετε ως anable «Δημιουργία ιστοσελίδων πτυχή εξερράγη κατάλογο»? αν δεν θέλετε επαναλήψεις, ένα τέχνασμα είναι ακριβώς σε αυτό και το σημείο επιτρέψει σε ήδη υπάρχοντα κατάλογο σας.


*(Web Server) Εφαρμογή* : Πηγαίνετε στο «διαμορφώσεις επεξεργασία», εκεί θα πρέπει να προσθέσετε για να διαμορφώσεις ένα διακομιστή εφαρμογών, δεν ξεκινήσει τον web server ως εφαρμογή όπως και κάθε άλλο. Με τον τρόπο αυτό IntelliJ θα είναι σε θέση να υποκλέψει JSP κλήσεις. Στη λίστα των διακομιστών εφαρμογής, θα πρέπει να έχετε το προεπιλεγμένο, Tomcat. Να είστε βέβαιος να έχουν μια τοπική εγκατάσταση Tomcat για να μπορέσετε να το κάνετε αυτό, και το σημείο στο ότι κατά την προσθήκη του διακομιστή web εφαρμογή. Το τελευταίο τέχνασμα πρόκειται να την καρτέλα «Ανάπτυξη» και επιλέγοντας ως «πηγή ανάπτυξης» στην ίδια πλευρά που ορίσατε στο προηγούμενο βήμα.


Η ίδια διάταξη λειτουργεί, εάν θέλετε να χρησιμοποιήσετε έναν άλλο διακομιστή web εφαρμογή, θα δοκιμαστεί με τις τελευταίες κυκλοφορίες Caucho ρητίνη και τον εντοπισμό σφαλμάτων λειτουργεί καλά (δεν το έκανε με τις προηγούμενες IntelliJ και ρητίνη συνδυασμούς).


Αν δεν μπορείτε να δείτε Tomcat στη λίστα των διαθέσιμων διακομιστές εφαρμογών για να προσθέσετε, ελέγξτε τα plugins στο γενικό τμήμα των ρυθμίσεων IntelliJ: στις τελευταίες κυκλοφορίες, όλο και περισσότερες λειτουργίες έχει γίνει «pluggable», και ακόμη και πολύ βασικές λειτουργίες μπορεί να απενεργοποιηθεί ? Αυτό το plugin ονομάζεται «ενσωμάτωση Tomcat».


Τέλος, σίγουρα δεν είναι αλήθεια ότι τα αρχεία JSP πρέπει να είναι κάτω WEB-INF να είναι κάτω από τον εντοπισμό σφαλμάτων.

 

Τέλος πάντων, θα πρέπει να ξεκινήσει το Tomcat στο IDEA, όχι από μια απομακρυσμένη Tomcat.

 

Για τον απομακρυσμένο εντοπισμό σφαλμάτων JSP (η οποία ισχύει και για `localhost`) θα πρέπει να εγκαταστήσετε το [JSR45](https://jcp.org/aboutJava/communityprocess/final/jsr045/) ㄧ [plugin υποστήριξη](http://www.jetbrains.com/idea/webhelp/run-debug-configuration-jsr45-compatible-server.html) . **Παρακαλείστε να σημειώσετε ότι αυτή η λειτουργία υποστηρίζεται μόνο στην έκδοση Ultimate των IntelliJ, δεν την κοινότητα έκδοση.**


1. Πηγαίνετε στο ***Preferences*** > ***Πρόσθετα*** , αναζητήστε την **JSR45** plugin, και να την ενεργοποιήσετε.
2. Δημιουργήστε μια διαμόρφωση τρέξιμο: ***Εκτέλεση*** > ***Run Διαμόρφωση*** > κάντε κλικ στο κουμπί, και να πάρει ***JSR45 Συμβατό διακομιστή*** , και στη συνέχεια, στο παράθυρο διαλόγου που ανοίγει, επιλέξτε **Remote** , και που υποδοχής server και το λιμάνι. Ρύθμιση ***Application Server:*** ***Γενική*** πρέπει να δουλεύουν μια χαρά. `**+**`

- Βεβαιωθείτε ότι έχετε ορίσει τη σωστή θύρα στην ***εκκίνηση / Διαμόρφωση*** > ***εντοπισμού σφαλμάτων*** .

- Ανοίξτε τις ρυθμίσεις της μονάδας ( **F3** στο φάκελο έργου), και να προσθέσετε ένα **Web Πτυχή** κάτω **Όψεις** και κάτω **Web Resource Κατάλογοι** καθορίσετε ριζικό φάκελο JSP σας.

- Κάντε κλικ στο `**Configuration...**`κουμπί και επιλέξτε τους φακέλους με τα φασόλια, τις κατηγορίες και τις βιβλιοθήκες που JSPs σας εξαρτώνται.



Τώρα JSP σημεία διακοπής θα πρέπει να εργαστεί, υπό την προϋπόθεση ότι ξεκινήσατε το διακομιστή σας με τους [κατάλληλη επιχειρηματολογία εντοπισμού σφαλμάτων](https://stackoverflow.com/a/975342/191246) .

 

Παρακαλώ βεβαιωθείτε ότι το γάτος που είναι *conf / web.xml*  **suppressSmap** είναι **να μην** ενεργοποιηθεί η υποστήριξη της JSR45 απαιτείται από το πρόγραμμα εντοπισμού σφαλμάτων IntelliJ του.


Θα πρέπει να μοιάζει κάπως έτσι:



```
<init-param>
  <param-name>suppressSmap</param-name>
  <param-value>false</param-value>
</init-param>

```

από <https://tomcat.apache.org/tomcat-7.0-doc/jasper-howto.html>



> 
> suppressSmap - Θα πρέπει να κατασταλεί η γενιά των SMAP πληροφορίες για JSR45 εντοπισμό σφαλμάτων; αληθείς ή ψευδείς, προεπιλογή ψευδείς.
> 
> 
> 

 

Εάν χρησιμοποιείτε το πρόγραμμα εντοπισμού σφαλμάτων IntelliJ μπορείτε να πάρετε την αξία ενός χαρακτηριστικού βάζοντας ένα σημείο διακοπής στο εσωτερικό JSP και την αξιολόγηση της έκφρασης `this.jspContext.request.getAttribute("attributeName")`.


Σημειώστε ότι αυτό μπορεί να επιστρέψει ένα Java τύπο αντικειμένου, και μπορεί να χρειαστεί να το ρίχνει στο σωστό τύπο. Επίσης, αν έχετε ξεκινήσει μια απομακρυσμένη Tomcat η ιδέα δεν θα χτυπήσει κάποια σημεία διακοπής, οπότε θα πρέπει να ξεκινήσει το Tomcat σε κατάσταση εντοπισμού σφαλμάτων από το εσωτερικό του IDEA.

 