目前我有一个.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中请求的。
但我该如何解决这个问题?
答案 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编译/评估。