首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >${pageContext.request.contextPath}和request.getContextPath()之间有什么区别?

问${pageContext.request.contextPath}和request.getContextPath()之间有什么区别?
EN

Stack Overflow用户
提问于 2017-03-30 22:02:28
回答 1查看 5.2K关注 0票数 1

所以我有一个.jsp来显示我的web应用程序的标题部分。这是一个非常标准的外观页面。我在顶上有个酒吧,上面写着登录,注册,联系我们,等等.下面我们有一个水平导航栏。

这是一个带有maven构建的标准Spring应用程序。它生成一个文件web.war,我们将其部署到tomcat。在dev上,这个操作很好。

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

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

代码语言:javascript
复制
<%  navcopy = navcopy.replace("${pageContext.request.contextPath}", request.getContextPath()); %>

现在这是将/web添加到URL中。现在,作为jsp工程的注册链接,我对此感到困惑:

代码语言:javascript
复制
 <a id="home-left-menu-item" href="${pageContext.request.contextPath}/register.html">Register Now!</a> 

因此hoe执行jsp中解析的${pageContext.request.contextPath}返回正确的根,但是调用request.getContextPath()返回"/web“

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

任何洞察力都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2017-03-31 08:10:24

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

例如:

代码语言:javascript
复制
http://localhost:80/myProjectName/path/servlet

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

request.getServletPath()返回该请求中调用servlet的部分,例如/path/servlet

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

这段代码的尝试如下:

代码语言:javascript
复制
<a id="home-left-menu-item" href="<%=request.getContextPath()%>/register.html">Register Now!</a> 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43129139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档