我有一個複雜的網站設計(從網上下載設計+ CSS),我想巧妙地使用include
s,以便我可以將設計與內容分開。Jsp頁面層次
但是,這有些複雜。內容位於<div>
內等內 如何使用includes使基本上,我可以在其自己的文件中的每個可重複的網站(標題,導航)方面,併爲每個實際的頁面,在jsp中沒有任何設計?
,即在某個頁面,我只希望有
//possible includes
<h1>Hello World!</h1>
//possible includes
我有一個複雜的網站設計(從網上下載設計+ CSS),我想巧妙地使用include
s,以便我可以將設計與內容分開。Jsp頁面層次
但是,這有些複雜。內容位於<div>
內等內 如何使用includes使基本上,我可以在其自己的文件中的每個可重複的網站(標題,導航)方面,併爲每個實際的頁面,在jsp中沒有任何設計?
,即在某個頁面,我只希望有
//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>
的包括標籤將在給定的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
你可以展示一個如何使用這個'layout.jsp'的例子嗎? –
@Airir Rachum我在答案中增加了一些。希望這可以幫助。 –
所以所有頁面都來自servlet? –
我打算推薦[sitemesh](http://www.opensymphony.com/sitemesh/),它幾乎完全符合您的需求。但是看起來sitemesh背後的團隊有點崩潰,或者什麼。 – aroth
有沒有機會使用JSP的繼任者Facelets?你可以在[這個答案]的第二部分看到你想要的任何例子(http://stackoverflow.com/questions/4792862/how-to-include-another-xhtml-in-xhtml-using-jsf-2 -O-小面/ 4793959#4793959)。你只需要打開自己的JSF作爲MVC框架。 – BalusC
@BalusC這是一個大學項目,所以......不。 –