代码之家  ›  专栏  ›  技术社区  ›  elzapp

获取jsp中的当前文件名

  •  17
  • elzapp  · 技术社区  · 16 年前

    有没有一种方法可以得到当前呈现的JSP,使用JSTL或Struts(或不使用)?像python和php中的文件?

    4 回复  |  直到 8 年前
        1
  •  17
  •   Community CDub    8 年前

    好。。。对。。。在某种程度上

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

    我正在使用一个名为 pre.jsp 对于我在webapp中每个jsp顶部包含的内容:

    <%@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); %>
    

    这给了我一份仔细的日志。为了确保每个JSP都是“正确的”,我有一个签入我的构建脚本,它只查找两个字符串 "/pre.jsp" 和``end<%=\ujspname`。

    注意:文件名中允许有许多字符,但Java类名中没有。如果你使用它们,你的类名可能看起来很奇怪。如果是这样的话,我建议创建一个静态助手函数,将类名转换为文件名并调用它,即。

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

    每个JSP编译器都有自己的规则;下面是一个示例: http://itdoc.hitachi.co.jp/manuals/3020/30203Y0510e/EY050044.HTM

    夸夸其谈 Marcus Junius Brutus 为了指出这一点。

        2
  •  0
  •   Dima R.    12 年前

    更方便的方法是使用:<%=request.getrequesturi()%>

    <%=request.getrequesturi()%> 例如,在我的所有JSP文件中,我总是将这一行:

    呈现JSP文件:“<%=request.getrequesturi()%>”

    这会在呈现的HTML中插入一行符合要求的HTML。这样人们就不能在浏览器中看到它,但是为了调试的目的,我总是可以在“查看源代码”中看到它。

        3
  •  0
  •   gwallet    11 年前

    我成功地使用了JSTL,如下所示:

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

    现在,您应该将容器生成的servlet的名称作为HTML注释来呈现JSP文件,该名称非常接近JSP源文件。

        4
  •  0
  •   Daniel De León    9 年前

    这是一个简单的复制粘贴解决方案:

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