如何在 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 中获取页面名称?的主要内容,如果未能解决你的问题,请参考以下文章
如何通过在jsp页面中使用jstl迭代地图来动态生成div? [复制]
如何使用 JSTL 在 jsp 页面中迭代 ArrayList<HashMap<String, String>>