動作指令與編譯指令不同,編譯指令時通知servlet引擎的處理訊息,而動作指令只是運行時的動作。編譯指令在將JSP編譯成Servlet時起作用,而處理指示通常可替換成JSP指令碼,它只是JSP指令碼的標準化寫法。
(1)JSP:forward 執行頁面轉向,將請求的處理轉寄到下一個頁面。
(2)JSP:param 用於傳遞參數,必須與其他支援參數的標籤一起使用
(3)JSP:include 用於動態引入一個JSP頁面
(4)JSP:plugin 用於下載JavaBean或者Applet到用戶端執行
(5) JSP:useBean 建立一個Javabean執行個體
(6) JSP:setProperty 設定JavaBean執行個體的屬性值
(7)JSP:getProperty 擷取JavaBean執行個體的屬性值
(一)forward指令
用於將頁面相應轉寄到另外的頁面,既可以轉寄到靜態html頁面,也可以轉寄到動態JSP頁面,或者轉寄到容器中的Servlet。動態指令只需直接<>中使用指令,靜態則是<%%>,動態指令均是成對出現的。
JSP的forward指令格式如下:
對於JSP1.0文法為:<JSP:forward page="{relativeURL|<%=expression%>}"/>
對於JSP1.1以上規範,文法為:<JSP:forward page="{relativeURL|<%=expression%>}">
{<JSP:param·······/>}
</JSP:forward>
這種文法用於在轉寄時增加額外的請求參數。增加的請求參數的值可以通過HttpServletRequest類的getParameter()方法擷取。執行forward指令時,使用者請求的地址依然沒有發生改變,仍然是一次請求,但頁面內容完全變為被forward目標頁的內容。執行forward指令轉寄請求時,用戶端的請求參數不會丟失。
(二)include指令
include指令時一個動態include指令,也用於包含某一個頁面,它不會匯入被include頁面的編譯指令,僅僅被匯入頁面的body內容插入頁面。
<jsp:include page="{relativeURL|<%=expression%>}" flush="true">
<jsp:param name="parameterName" value="parameterValue"/>
<jsp:include/>
flush屬性用於指定輸出緩衝是否轉移到被匯入檔案中,如果指定為true,則包含在被匯入檔案;如果指定為false,則包含在原檔案中。對於JSP1.1舊版本中,只能設定為false。
註:include靜態:編譯指令 -----兩個JSP頁面融合成一個servlet
include動態:動作指令------在servlet中使用include引入被匯入頁面的內容
靜態匯入頁面被匯入頁面的編譯指令必須一致,否則會出錯,動態則只包含body部分。
(三)userBean,setProperty,getProperty指令
這三個指令都是與JavaBean相關的指令,其中userBean指令用於在JSP頁面中初始化一個java執行個體,setProperty指令用於為JavaBean執行個體的屬性設定值;getProperty指令用於輸出JavaBean執行個體的屬性。如果多個JSP頁面中需要重複使用的某段代碼,我們可以把這段代碼定義為java類的方法,然後多個JSP頁面調用該方法即可,這樣可以達到較好的代碼複用。
userBean的文法格式如下
<jsp:userBean id="name" class="classname" scope="page|request|session|application"/>
其中,id屬性是JavaBean的執行個體名,class屬性確定JavaBean的實作類別。scope屬性用於指定JavaBean執行個體的作用範圍。
setProperty的文法格式
<jsp:setProperty name="BeanName" property="propertyName" value="propertyValue"/>
其中,name屬性是要確定JavaBean的執行個體名,property屬性要確定設定屬性的屬性名稱,value屬性時要確定屬性名稱對應的值。
getProperty的文法格式
<jsp:getProperty name="BeanName" name="propertyName"/>
其中,name屬性時要確定JavaBean的執行個體名,name屬性是指定要擷取的屬性名稱對應的值。
註:使用userBean標籤時,除在頁面指令碼中建立了JavaBean執行個體之外,該標籤還會將該JavaBean執行個體放入指定scope中,所以我們還需要在指令碼中將JavaBean放入指定的scope中,所下面的代碼所示:
pageContext.setAttribute("beanName",beanName)
request.setAtttibutr("beanName",beanName)
session.setAttribute("beanName",beanName)
application.setAttribute("beanName",beanName)
(四)plugin指令
plugin指令主要用於下載伺服器端的JavaBean或Applet到到用戶端執行,由於程式在用戶端執行,因此用戶端必須安裝虛擬機器。
(五)param指令
param用於設定參數值,這個指令本身不能單獨使用,因此單獨的param指令沒有實際意義,param指令可以與以下指令結合使用
jsp:include jsp:forward jsp:plugin