Is there a way to get which JSP is currently rendered, with JSTL or Struts (or without)? like _ _ file _ _ in Python and PHP?
Well ... yes ... in a way
String __jspName = this.getClass().getSimpleName().replaceAll("_", ".");
I'm using a JSP called pre.jsp
for that which I include at the top of each JSP in my webapp:
<%@page import="org.apache.log4j.Logger"%>
<%
String __jspName = this.getClass().getSimpleName().replaceAll("_", ".");
Logger log = Logger.getLogger(this.getClass().getName());
log.info("BEGIN JSP "+__jspName);
%>
<!-- BEGIN <%=__jspName %> -->
Plus I put this at the end of each JSP:
<!-- END <%=__jspName %> --><% log.info("END JSP "+__jspName); %>
That gives me a consistend log. To make sure each JSP is "correct", I have a check in my build script which just looks for the two strings "/pre.jsp"
and ``END <%=__jspName`.
Note: There are many characters which are allowed in file names but not in Java class names. If you use them, your class names might look weird. If that's the case, I suggest to create a static helper function which converts class names to File names and call that, i.e.
String __jspName = MyJspUtils.getFileName(this.getClass());
Each JSP compiler has it's own rules; here is one example: http://itdoc.hitachi.co.jp/manuals/3020/30203Y0510e/EY050044.HTM
Kudos go to Marcus Junius Brutus for pointing that out.