如何在 JSP 或 JSTL 中获取页面名称?

Posted

技术标签:

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

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

【问题讨论】:

【参考方案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。

以上是关于如何在 JSP 或 JSTL 中获取页面名称?的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有 JSTL 的情况下遍历 JSP 上的数组列表

如何通过在jsp页面中使用jstl迭代地图来动态生成div? [复制]

如何使用 JSTL 在 jsp 页面中迭代 ArrayList<HashMap<String, String>>

JSP页面上使用JSTL函数,对函数传参能否使用JSTL表达式?

jsp中如何获取servlet的值?

在jsp页面中如何获取另一个jsp页面提交的信息