【问题标题】:How to get page name in JSP or JSTL?如何在 JSP 或 JSTL 中获取页面名称?
【发布时间】:2011-05-15 09:53:44
【问题描述】:

我想使用 JSP 或 JSTL 获取当前页面名称(类似于“myPage”)。我怎样才能做到这一点?

【问题讨论】:

    标签: jsp jstl el


    【解决方案1】:

    您可以通过HttpServletRequest#getServletPath()获取。

    ${pageContext.request.servletPath}
    

    您可以在必要时使用JSTL functions 标签库来提取扩展。

    【讨论】:

    • 它给了我类似 /webinf/views/myPage.jsp 之类的东西,你能帮我一下如何只提取名称
    • 嗯,好的,您正在使用一个控制 servlet,它转发到 /WEB-INF 文件夹中的 JSP。使用${requestScope['javax.servlet.forward.servlet_path']} 来获取 URL 的 servlet 路径,因为它显示在浏览器地址栏中。
    • 我也可以通过以下方式做到这一点:request.getRequestURI().substring(request.getRequestURI().lastIndexOf("/")+1,request.getRequestURI().lastIndexOf ("."));
    【解决方案2】:

    获取页面:

    <% String pageName = com.kireego.utils.Utils.extractPageNameFromURLString(request.getRequestURI()); %>
    

    还有这个帮助代码:

    public static String extractPageNameFromURLString(String urlString){
            if (urlString==null) return null;
            int lastSlash = urlString.lastIndexOf("/");
            //if (lastSlash==-1) lastSlash = 0;
            String pageAndExtensions = urlString.substring(lastSlash+1);
            int lastQuestion = pageAndExtensions.lastIndexOf("?");
            if (lastQuestion==-1) lastQuestion = pageAndExtensions.length();
            String result = pageAndExtensions.substring(0,lastQuestion);
            return result;
        }
    

    【讨论】:

      【解决方案3】:

      此行将为您提供正确的 JSP 名称,当页面包含多个页面时它也可以正常工作

      <%= this.getClass().getSimpleName().replaceAll("_5F", "").replaceFirst("_", "") %>.jsp<BR> 
      

      【讨论】:

      • 从标签调用时不起作用
      • @coterobarros 需要在 jsp 正文中
      【解决方案4】:

      也许你可以用 javascript 的方式来理解它,比如:

      var url = window.location.href;
      

      然后使用字符串方法获取当前页面名称。

      【讨论】:

      • JavaScript 既不是 JSP 也不是 JSTL。
      猜你喜欢
      • 2011-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-23
      • 2011-06-17
      • 1970-01-01
      • 2011-10-30
      • 1970-01-01
      相关资源
      最近更新 更多