所以我有一个.jsp来显示我的web应用程序的标题部分。这是一个非常标准的外观页面。我在顶上有个酒吧,上面写着登录,注册,联系我们,等等.下面我们有一个水平导航栏。
这是一个带有maven构建的标准Spring应用程序。它生成一个文件web.war,我们将其部署到tomcat。在dev上,这个操作很好。
我们正在测试生产,并希望这场战争成为根源,因此我们将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> 因此hoe执行jsp中解析的${pageContext.request.contextPath}返回正确的根,但是调用request.getContextPath()返回"/web“
它们不是对同一个对象的调用,本质上是对同一个方法的调用吗?
任何洞察力都将不胜感激。
发布于 2017-03-31 08:10:24
${pageContext.request.contextPath}:返回请求URI中指示请求上下文的部分。实际上,它与request.getContextPath()相同,因为${pageContext.request}引用当前请求的HttpServletRequest。
例如:
http://localhost:80/myProjectName/path/servlet${pageContext.request.contextPath}返回/myProjectName
request.getServletPath()返回该请求中调用servlet的部分,例如/path/servlet
${pageContext.request.servletPath}返回/path/servlet
这段代码的尝试如下:
<a id="home-left-menu-item" href="<%=request.getContextPath()%>/register.html">Register Now!</a> https://stackoverflow.com/questions/43129139
复制相似问题