JSP標籤也稱之爲Jsp Action(JSP動做)元素,它用於在Jsp頁面中提供業務邏輯功能,避免在JSP頁面中直接編寫java代碼,形成jsp頁面難以維護。java
jsp的經常使用標籤有如下三個:web
<jsp:include>標籤express
<jsp:forward>標籤服務器
<jsp:param>標籤架構
<jsp:include>標籤用於把另一個資源的輸出內容插入進當前JSP頁面的輸出內容之中,這種在JSP頁面執行時的引入方式稱之爲動態引入。 app
語法:
jsp
<jsp:include page="relativeURL | <%=expression%>" flush="true|false" />
page屬性用於指定被引入資源的相對路徑,它也能夠經過執行一個表達式來得到。url
flush屬性指定在插入其餘資源的輸出內容時,是否先將當前JSP頁面的已輸出的內容刷新到客戶端。spa
<jsp:include>標籤是動態引入, <jsp:include>標籤涉及到的2個JSP頁面會被翻譯成2個servlet,這2個servlet的內容在執行時進行合併。 動態包含就是指先將各個頁面分別處理,處理完以後再將處理後的結果包含進來。.net
而include指令是靜態引入,涉及到的2個JSP頁面會被翻譯成一個servlet,其內容是在源文件級別進行合併。靜態包含是將所有內容包含進來以後,再進行處理。
注:無論是<jsp:include>標籤,仍是include指令,它們都會把兩個JSP頁面內容合併輸出,因此這兩個頁面不要出現重複的HTML全局架構標籤,不然輸出給客戶端的內容將會是一個格式混亂的HTML文檔。
JSP規範建議使用.jspf(JSP fragments)做爲靜態引入文件的擴展名。
把一個JSP文件命名爲jspf擴展名,而後include到另外一個jsp文件中的,發現只有用」@include「指令的時候,jspf文件的內容纔會被解析並執行其中的jsp指令和tag,而使用」jsp:include「和JSTL的」c:import「都沒有用,jspf文件被看成純文本文件處理了。
解決辦法一:修改web.xml文件,添加對擴展名爲*.jspf文件的映射
<servlet-mapping> <servlet-name>jsp</servlet-name> <!-- 讓jsp擴展名一樣成爲JSP Servlet處理的文件。 --> <url-pattern>*.jsp</url-pattern> <!-- 讓jspf擴展名一樣成爲JSP Servlet處理的文件。--> <url-pattern>*.jspf</url-pattern> </servlet-mapping>
<jsp:forward>標籤用於把請求轉發給另一個資源。 (服務器端跳轉)
語法:
<jsp:forward page="relativeURL | <%=expression%>" />
當使用<jsp:include>和<jsp:forward>標籤引入或將請求轉發給其它資源時,可使用<jsp:param>標籤向這個資源傳遞參數。
eg:
<jsp:include page="relativeURL | <%=expression%>"> <jsp:param name="parameterName" value="parameterValue|<%= expression %>" /> </jsp:include>