JSP包含动态页面

时间:2016-12-14 18:33:51

标签: java jsp servlets

我有一些存储在Servlet上下文中的包含页面。我想动态地在JSP中包含一些页面,但我不能。 我所做的是:

<jsp:include page="<%=(String)application.getAttribute("headURL")%>"/>

但是它给了我一个与引号有关的错误。我试图将其更改为:

<jsp:include page="<%=(String)application.getAttribute(\"headURL\")%>"/>

但它既不起作用。

我怎么能这样做?

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用表达式语言来访问该URL。所以你不需要逃避引用。

以下是您可以执行此操作的示例:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <c:set value="/WEB-INF/jspf/head.jspf" var="headURL" scope="application" />
    <jsp:include page="${headURL}"></jsp:include>
</body>
</html>

将包含位于/Project/WebContent/WEB-INF/jspf/head.jspf的文件。

编辑:
此行仅用于测试。我设置了一个上下文属性headURL

<c:set value="/WEB-INF/jspf/head.jspf" var="headURL" scope="application" />

您只需要:

<jsp:include page="${headURL}"></jsp:include>

相对于WebContent的路径。

答案 1 :(得分:1)

这样做:

a {
    -webkit-transition: width 2s; /* Safari */
    transition: width 2s;
}

首先,Servlet容器将在页面范围中查找headURL,然后在“请求范围”,“会话范围”和“应用程序范围(您的情况)”中查找

在调用JSP之前,必须将headURL设置在Application范围的某个位置。

但我认为必须 /WEB-INF/jspf/head.jspf (需要删除应用名称)