Получить текущее имя файла в JSP

есть ли способ получить, какой JSP в настоящее время отображается, с JSTL или распорками (или без)? как _ _ file _ _ в Python и PHP?

4 ответов


хорошо ... да... таким образом

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

Я использую JSP под названием pre.jsp для того, что я включаю в верхней части каждого JSP в моем 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 %> -->

плюс я ставлю это в конце каждого JSP:

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

это дает мне журнал consistend. Чтобы убедиться, что каждый JSP "правильный", у меня есть проверка в моем скрипте сборки, который просто ищет две строки "/pre.jsp" и "END

Примечание: есть много символов, которые разрешены в файл имена, но не имена классов Java. Если вы используете их, ваши имена классов могут выглядеть странно. Если это так, я предлагаю создать статическую вспомогательную функцию, которая преобразует имена классов в имена файлов и вызывает это, т. е.

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

каждый компилятор JSP имеет свои собственные правила; вот один пример:http://itdoc.hitachi.co.jp/manuals/3020/30203Y0510e/EY050044.HTM

престижность перейти к Марк Юний Брут за указание на это.


более удобный способ использовать:

Например, во всех моих файлах jsp я всегда ставлю эту строку:

отрисовка JSP-файла: ''

Это помещает comented html-строку в отображаемый html. Таким образом, его нельзя увидеть в браузере, но для целей отладки я всегда могу видеть его inf, я делаю "просмотр источника".


мне удалось использовать JSTL следующим образом:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
...
<!-- <c:out value="${pageScope['javax.servlet.jsp.jspPage']}"></c:out> -->
...

и теперь вы должны увидеть в качестве комментария HTML имя сервлета, созданного контейнером для отображения вашего JSP-файла, имя которого очень близко к исходному файлу JSP.


Это простое решение для копирования и вставки:

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