gpt4 book ai didi

java - ${pageContext.request.contextPath} 和 request.getContextPath() 有什么区别

转载 作者:行者123 更新时间:2023-11-30 06:49:18 24 4
gpt4 key购买 nike

所以我有一个 .jsp 来显示我的 Web 应用程序的 header 部分。这是一个外观非常标准的页面。我在顶部有一个栏,其中包含登录、注册、联系我们等内容...在其下方有一个水平导航栏。

这是一个使用 Maven 构建的标准 Spring Web 应用程序。它生成一个文件 web.war,我们将其部署到 tomcat。在开发上,这工作得很好。

我们正在测试生产,并希望此 war 成为根,因此我们将 war 重命名为 ROOT.war 并重新启动。一切都很好。

现在有时,我们从内容管理系统获取导航部分。我们将文本设置为变量并显示它。不,显然我们不能使用 ${pageContext.request.contextPath} 因为它不会以这种方式解析,所以在显示文本之前我们在 jsp 中执行此操作

<%  navcopy = navcopy.replace("${pageContext.request.contextPath}", request.getContextPath()); %>

现在将/web 添加到 URL 中。现在这让我感到困惑,因为 jsp 中的注册链接有效:

 <a id="home-left-menu-item" href="${pageContext.request.contextPath}/register.html">Register Now!</a> 

所以在jsp中解析的${pageContext.request.contextPath}返回正确的根,但调用request.getContextPath()返回“/web”

它们本质上不是对同一个对象对同一个方法的相同调用吗?

如有任何见解,我们将不胜感激。

最佳答案

${pageContext.request.contextPath} :返回请求 URI 中指示请求上下文的部分。事实上,它与 request.getContextPath() 相同,因为 ${pageContext.request} 引用当前请求的 HttpServletRequest。

例如:

http://localhost:80/myProjectName/path/servlet

${pageContext.request.contextPath} 返回/myProjectName

request.getServletPath() 返回此请求的 URL 中调用 servlet 的部分,例如/路径/servlet

${pageContext.request.servletPath} 返回/path/servlet

对于此代码,请尝试以下操作:

<a id="home-left-menu-item" href="<%=request.getContextPath()%>/register.html">Register Now!</a> 

关于java - ${pageContext.request.contextPath} 和 request.getContextPath() 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43129139/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com