我有一个复杂的网站设计(从网上下载设计+ css),我想巧妙地使用include
,以便我可以将设计与内容分开。
然而,这有一些复杂性。内容位于<div>
内的<div>
内,等等。
我如何使用包括基本上,我可以在自己的文件中拥有网站的每个可重复的方面(标题,导航),对于每个实际的页面,在jsp中没有任何设计?
即,在某个页面中,我只想拥有
//possible includes
<h1>Hello World!</h1>
//possible includes
答案 0 :(得分:2)
你可能应该看看Apache Tiles因为它为你做了大部分工作。
如果你想自己动手,你可以创建两个文件,比如header.jsp和footer.jsp以及页面的开头和结尾:
header.jsp中
<html>
<head>
</head>
<body>
<div>
//header content
</div>
<div>
//main content
和,footer.jsp
</div>
</body>
</html>
并在您的内容页面中加入。
或者,您可以创建一个layout.jsp页面:
<html>
<head>
</head>
<body>
<div>
//header content
</div>
<div>
<c:out value="${content}"/>
</div>
</body>
</html>
然后所有请求都将填充内容变量,然后加载布局页面。这样您就不必在整个地方重复包含。
实施例: 在servlet中,您可以为变量赋予如下值:
String content = "<h1>Hello World!</h1>";
request.setAttribute("content", content);
//forward to layout.jsp
这样,在layout.jsp页面上将显示内容。你当然可以创建几个这样的变量占位符。
第三种选择: 使用jsp:include标记包含动态内容。例如 layout.jsp页面如下所示:
<html>
<head>
</head>
<body>
<div>
//header content
</div>
<div>
<jsp:include page="${page}"/>
</div>
</body>
</html>
include标记将获取给定网址的页面。使用此建议的原因是当您有更复杂的显示时,最好使用JSP页面来构建显示。然后,servlet只关注业务逻辑。您可以为每个显示创建单独的jsp页面。 servlet将如下所示:
//business logic
//save the data to be displayed in the request
String page = "nextpagetodisplay.jsp";
request.setAttribute("page", page);
//forward to layout.jsp