没有请求jsp $ {pageContext.request.contextPath}

时间:2015-03-14 22:28:39

标签: java html jsp servlets

目前我有一个.jsp项目,我的欢迎页面是一个servlet

<welcome-file>frontpage</welcome-file>

servlet集获取两个ressource,一个包含&lt;的头文件。 NAV&GT;和包含&lt;页脚&GT;

request.setAttribute("header1", sc.getResource("/includes/nav.jsp").toString());
request.setAttribute("footer", sc.getResource("/includes/footer.jsp").toString());

转发到index.jsp页面

getServletContext().getRequestDispatcher("/WEB-INF/jsp/index.jsp").forward(request, response);

我的问题是。 当我得到ressource(footer.jsp)时,我如何在footer.jsp中动态导入/包含图像?

我尝试了以下

<img src="${pageContext.request.contextPath}/images/picture1.png" alt="picture1"/>

但表达式$ {pageContext.request.contextPath}被视为字符串而不是命令,并且不会获取上下文路径。

我怀疑它是因为footer.jsp的内容是以这种方式获取的,并且它们的上下文路径实际上是在footer.jsp中请求的。

但我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

在JSP页面的顶部添加<%@ page isELIgnored="false" %>,以启用表达式语言。

并包含一个其他用途<jsp:include的JSP页面,如:

<jsp:include page="/includes/nav.jsp"/>
<jsp:include page="/includes/footer.jsp"/>

答案 1 :(得分:1)

这不是包含内容的方式。使用jsp:include操作包含页眉/页脚。如果由于某种原因您真的想在servlet中执行此操作,请参阅此post。只要你像你一样抓取资源,就像任何文本一样读取文件,没有JSP编译/评估。