Comment jsp travail?
Je me demande ne JSP jamais compilé ? Les raisons pour lesquelles que je demande est parce que chaque fois que je déployer mon application Java EE sur le serveur web, je ne vois que ceux de servlet et de haricots classe de fichier dans le dossier WEB-INF comme elles sont compilées, mais pas que JSP, comment cela fonctionne, et ce qui est la logique de flux et de la grande image de la normale de demande/réponse de cycle.
"ne JSP jamais compilé ?" Oui, lors du premier accès.
merci de ne pas poster des commentaires à la question demandant aux gens de lire votre réponse. C'est tout à fait inutile.
La jsp wiki ici AFIN de vous donner une bonne idée du cycle de vie de la JSP stackoverflow.com/tags/jsp/info
Vous êtes essentiellement en posant une question qui est déjà une réponse dans le chapitre 1, toutes les auto-respect d'un livre/didacticiel sur la JSP. Je vous recommande d'aller en obtenir un, de sorte que vous au moins, l'effort de la recherche 🙂
merci de ne pas poster des commentaires à la question demandant aux gens de lire votre réponse. C'est tout à fait inutile.
La jsp wiki ici AFIN de vous donner une bonne idée du cycle de vie de la JSP stackoverflow.com/tags/jsp/info
Vous êtes essentiellement en posant une question qui est déjà une réponse dans le chapitre 1, toutes les auto-respect d'un livre/didacticiel sur la JSP. Je vous recommande d'aller en obtenir un, de sorte que vous au moins, l'effort de la recherche 🙂
OriginalL'auteur peter | 2012-05-15
Vous devez vous connecter pour publier un commentaire.
En gros:
Dans votre conteneur de servlets, les JSP servlet est mappé à une URL qui se termine dans
.jsp
(généralement)Lorsque l'un de ces
.jsp
Url est demandée, la demande est transmise à la JSP en servlet. Ensuite, cette servlet vérifie si la page JSP est déjà compilé.Si la JSP n'est pas compilé encore, la JSP en servlet se traduit par la JSP pour certains le code source Java mise en œuvre de la
Servlet
interface. Ensuite, il compile ce code source Java à un.class
fichier. Cette.class
fichier est généralement situé quelque part dans le conteneur de servlet du répertoire de travail pour l'application.Une fois que la page JSP, servlet a compilé la classe de servlet à partir de la page JSP, code source, c'est juste transmet la demande à cette classe de servlet.
La chose est, sauf si vous précompiler votre JSP, tout cela se passe au moment de l'exécution, et caché dans le conteneur de servlet du répertoire de travail, il est "invisible". Également avoir à l'esprit que c'est ce qui se passe "sur le plan conceptuel", plusieurs optimisations sont possibles dans ce flux de travail.
C'est en effet là où elle se résume à de la. +1.
La java généré le fichier doit être visible sous
work\Catalina\localhost\ProjectName\jspFile.java
OriginalL'auteur
Jsp compiler pour les Servlets. Ils ont juste une spéciale compilateur embarqué dans le conteneur.
De bonne ole wikipédia:
OriginalL'auteur
Oui, ils sont compilés!
Anciens compilateurs même produit de java et les fichiers de classe.
Ressemble avec les nouveaux compilateurs ( au moins à partir avec Sun JDK 6 update 30 ), ils peuvent le faire tous les octets de la génération de code en mémoire, de sorte que vous ne voyez pas des traces dans votre application
work
outemp
répertoires.Je ne sais pas pourquoi, mais je trouve votre dernière déclaration douteuse. Avez-vous des références? Êtes-vous sûr que vous n'êtes pas prête à confusion avec le fait que la moyenne de l'IDE prend le pas sur le serveur de travail, ainsi que les dossiers temporaires, quelque part dans les profondeurs de l'espace de travail lors de l'élaboration et de l'exécution de JSP à l'intérieur d'un IDE?
Non, parce que j'ai été surpris de ne pas trouver
.class
fichiers dans monwork
répertoire en cours de production avec tomcat 7.0.25. Faire quelques session de débogage avec Jasper a confirmé la dernière instruction.Intéressant. Mais Tomcat ne pas utiliser le JDK pour compiler les Jsp. Tomcat 7 utilise Eclipse JDT pour cela. Tomcat 6 et plus utilise Ant JSPC pour cela.
OriginalL'auteur
Au moment de l'exécution, le code JSP est interprété par l'
JSP compilateur, qui analyse toutes les fonctionnalités spéciales dans le code JSP et les traduit en Java
code. La classe Java créés à partir de chaque JSP implémente
Servlet
. Ensuite, le code Java passe parle même cycle il le fait normalement. Encore au moment de l'exécution, il est compilé en bytecode puis dans la machine
code. Enfin, la JSP-tourné-Servlet répond à des demandes comme n'importe quel autre Servlet.
Si vous regardez l' *_jsp.java fichier, ce que vous devriez trouver une classe qui étend la classe
org.apache.jasper.runtime.HttpJspBase
. Cetteclasse abstraite s'étend
HttpServlet
.HttpJspBase
offre de basela fonctionnalité qui sera utilisé par toutes les pages Jsp Tomcat compile, et lorsque votre page JSP est exécutée,
finalement, la méthode de service sur cette Servlet est exécutée, ce qui a finalement exécute la
Méthode _jspService.
Si vous examinez la méthode _jspService, vous trouverez une série d'appels à la méthode de l'écriture de votre code HTML à
le flux de sortie. Ce code devrait être très familier pour vous, car il n'est pas si différent de
le code Java que vous avez remplacé avec cette JSP.
Bien sûr, la JSP en Servlet classe n'a pas le même aspect
sur chaque conteneur web. Le org.apache.jasper classes, par exemple, sont Tomcat-classes spécifiques.
Votre JSP compile différemment sur chaque conteneur web vous l'exécutez sur. Le point important
c'est qu'il y est une spécification standard pour le comportement et la syntaxe de la JSPs, et aussi longtemps que le web
les conteneurs que vous utilisez sont compatibles avec le cahier des charges, votre Jsp doivent exécuter la même chose sur tous
eux, même si le code Java il est traduit dans l'air complètement différent.
Pris (et paraphrasé) à partir de Professionnelle en Java pour les Applications Web par Nicolas S Williams
OriginalL'auteur