2012-11-15 111 views
2

我是jsp的新手,因此開始使用靜態重複代碼在每個頁面上編寫我的項目。例如,在每頁的頭部我檢查是否有當前用戶登錄,如果有,那麼我在正文部分使用他們的名字,如果不是我重定向到登錄頁面。JSP包括:使用jsp的重複代碼模板包含在每個頁面

所以我的網頁上,我想以下幾點:

<%@ page language="java" 
     import="com.ptm.UserBean" 
%> 
<!DOCTYPE html> 
<html lang="en"> 
<head> 
<title> this is my title </title> 
<jsp:include page="head-section.jsp" > 
</head> 
<body > 
<jsp:include page="header.jsp" > 
</body> 
</html> 
在頭section.jsp

我有一些HTML其中進口jQuery和我的CSS表,然後JSP代碼塊上的UserBean進口relys在上面的索引頁上,然後一些javascript

header.jsp include使用在head-section.jsp代碼塊中設置的jsp變量。

所以我的問題是,這些單獨的jsp的,我包括不自己的工作,但是當包括應該與頁面一起工作,這削減了我有重複代碼的數量。這是做這件事的最好方法嗎?我聽說過標籤文件,但我不知道如何實現。

在此先感謝您的幫助!

回答

1

您可以使用include指令:

<jsp:include page="..." /> 

對於靜態資源,你應該使用:

<%@ include file="filename" %> 
2

標記文件肯定是一個不錯的選擇,and they're quite easy to use。好的是你可以發送參數來提高可重用性。

這裏的基本步驟(從教程):假設您存儲標籤/ WEB-INF /標籤(如.TAG文件),你需要在你的JSP下面一行

<%@ taglib tagdir="/WEB-INF/tags" prefix="h" %> 

在TAGFILE(姑且稱之爲response.tag)可能看起來像

<%@ attribute name="name" required="true" %> 
<h2>Hello, ${name}!</h2> 

這意味着它需要一個名爲名稱的一個參數。在這之後,你怎麼稱呼它爲

<h:response name="world"/> 

這將擴大到

<h2>Hello, world!</h2> 

輸出。

+0

我相信這是要走的路,但是現在即將使用靜態包含的速度,稍後我將通過您提供的教程感謝 – FredoAF

+0

另請參閱Will Hartung對http://的廣泛和優秀的答案stackoverflow.com/questions/1296235/jsp-tricks-to-make-templating-easier關於如何快速上手標籤的信息 – fvu

+0

是的,我看到這個答案,在第一次閱讀時對我感到困惑,但我確信我只需要坐下來解決問題,爲答案傢伙歡呼! – FredoAF