Obtenir le nom de fichier actuel dans JSP

Y a-t-il un moyen d’obtenir quelle JSP est actuellement rendue, avec JSTL ou Struts (ou sans)? comme _ _ fichier _ _ en Python et PHP?

Eh bien … oui … d’une certaine manière

Ssortingng __jspName = this.getClass().getSimpleName().replaceAll("_", "."); 

J’utilise un JSP appelé pre.jsp pour ce que pre.jsp haut de chaque JSP de mon application Web:

 <%@page import="org.apache.log4j.Logger"%> <% String __jspName = this.getClass().getSimpleName().replaceAll("_", "."); Logger log = Logger.getLogger(this.getClass().getName()); log.info("BEGIN JSP "+__jspName); %>  

De plus, je mets ceci à la fin de chaque JSP:

 <% log.info("END JSP "+__jspName); %> 

Cela me donne un journal cohérent. Pour vérifier que chaque fichier JSP est “correct”, je vérifie dans mon script de construction la recherche des deux chaînes "/pre.jsp" et “ END <% = __ jspName`.

Remarque: De nombreux caractères sont autorisés dans les noms de fichiers, mais pas dans les noms de classes Java. Si vous les utilisez, les noms de classe peuvent paraître bizarres. Si tel est le cas, je suggère de créer une fonction d’assistance statique qui convertit les noms de classes en noms de fichiers et les appelle, c.-à-d.

 Ssortingng __jspName = MyJspUtils.getFileName(this.getClass()); 

Chaque compilateur JSP a ses propres règles; Voici un exemple: http://itdoc.hitachi.co.jp/manuals/3020/30203Y0510e/EY050044.HTM

Félicitations à Marcus Junius Brutus pour l’avoir signalé.

Le moyen le plus pratique est d’utiliser: <% = request.getRequestURI ()%>

<% = request.getRequestURI ()%> Par exemple, dans tous mes fichiers jsp, je mets toujours cette ligne:

Rendu du fichier JSP: ‘<% = request.getRequestURI ()%>‘

Cela met une ligne HTML commentée dans le code HTML rendu. De cette façon, on ne peut pas le voir dans le navigateur, mais à des fins de débogage, je peux toujours le voir inf je fais “Afficher la source”.

J’ai réussi à utiliser JSTL comme suit:

 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> ...  ... 

Et maintenant, vous devriez voir comme commentaire HTML le nom du servlet produit par le conteneur pour rendre votre fichier JSP, nom très proche du fichier source JSP.

Ceci est une solution simple de copier-coller:

 <%=this.getClass().getSimpleName().replaceFirst("_jsp","")%>