pageContext.request.contextPath和通用链接

时间:2013-08-04 01:35:30

标签: spring jsp java-ee servlets jstl

关于我较早的未回答的问题,我还有一个与其部分相关的错误/问题。

generic linking, variables and paths in jsp

enter image description here

当我像这样包含我的header.jsp时:

<%@include file="/WEB-INF/view/jsp/common/header.jsp" %>

工作正常。

但是如果我这样做的话不会这样:

<%@include file="${pageContext.request.contextPath}/view/jsp/common/header.jsp" %>

错误:

HTTP Status 500 - /WEB-INF/view/jsp/common/login/login.jsp (line: 8, column: 1) File "${pageContext.request.contextPath}/view/jsp/common/header.jsp" not found

上面的$ {}是一种正确的方式,这就是我过去一直在做的事情,直到我开始使用弹簧和弹簧安全。

但我不认为它是弹簧或弹簧安全的问题。

我真的不明白为什么WEB-INF有一个重量和 如何使我的链接通用(参考我陈述的旧问题)

1 个答案:

答案 0 :(得分:3)

实际上,在这种情况下,这不是正确的方法。上下文路径不用于在应用程序内部创建路径,如本例所示。相反,它用于在视图层中生成URL,例如链接,表单URL等。

在这种情况下,以下是正确的:

<%@include file="/WEB-INF/view/jsp/common/header.jsp" %>

上面的include行是指在war文件中打包的资源。在servlet容器中配置的上下文路径如何与战争中打包的东西的位置有关?

总结一下,您只需要使用${pageContext.request.contextPath}为将要输出到客户端的URL添加前缀。