我有一个复杂的网站设计(从网络上下载了一个设计+ CSS),并且我想巧妙地使用includes,以便可以将设计与内容分开。
include
但是,这样做有些复杂。内容位于,等<div>内部<div>。我如何使用包括在内,以便基本上可以将站点的每个可重复方面(标题,导航)保存在其自己的文件中,而对于每个实际页面,都没有在jsp中设计?
<div>
也就是说,在某个页面中,我只想拥有
//possible includes <h1>Hello World!</h1> //possible includes
您可能应该看看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标签将在给定的URL处获取页面。使用此建议的原因是,当您拥有更复杂的显示时,最好使用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