JSP動作指令

來源:互聯網
上載者:User

動作指令與編譯指令不間,編譯指令是通知 Servlet 引擎的處理訊息,而動作指令只是運行時的指令碼動作。編譯指令在將JSP 編譯成 Servlet 時起作用:處理指示通常可替換成 Java指令碼,是 JSP指令碼的標準化寫法。

 

JSP7個動作指令如下 :

 

jsp:forward: 執行頁面轉向,將請求的處理轉寄到下一個頁面。

jsp:param: 用於傳遞參數,必須與其他支援參數曲標籤一起使用。

jsp:include: 用於動態引入一個 JSP 頁面。

jsp:plugin: 用於下載 JavaBean 或 Applet 到用戶端執行。

jsp:useBean: 使用 JavaBean。

jsp:setProperty: 修改 JavaBean 執行個體的屬性值。

jsp:getProperty: 擷取 JavaBean 執行個體的屬性值。

 

1、forward指令  

 

forward指令用於將頁面響應轉寄給另外的頁面。既可以轉寄給靜態HTML頁面,也可以轉寄到動態JSP頁面,或者轉寄到容器中的Servlet。  

 

JSP的forward指令的格式如下。  

對於JSP 1.0,使用如下文法:  

<jsp:forward page="{relativeURL|<%=expression%>}"/>   

對於JSP 1.1以上,可使用如下文法:  

<jsp:forward page="{relativeURL|<%=expression%>}">  

{<jsp:param.../>}   

</jsp:forward>  

 

第二種文法用於在轉寄時增加額外的請求參數。增加的請求參數的值可以通過HttpServletRequest類的getParameter()方法擷取。   

下面樣本頁面使用了forward動作指令來轉寄使用者請求。  

<jsp:forward page="forward-result.jsp">  

<jsp:param name="age" value="29"/>  

</jsp:forward>  

 

將用戶端請求轉寄到forward-result.jsp頁面,轉寄請求時增加了一個請求參數:參數名為age,參數值為29。  

在forward-result.jsp頁面中,使用request內建對象(request內建對象是HttpServletRequest的執行個體)來擷取增加的請求參數值。  

<!-- 使用request內建對象擷取age參數的值 -->  

<%=request.getParameter("age")%>  

 

執行forward指令轉寄請求時,用戶端的請求參數不會丟失。

執行forward指令轉寄請求時,使用者請求的地址沒有發生變化,但頁面內容完全變為被forward目標頁的內容。

  

2、include指令  

 

include指令是一個動態include指令,也用於匯入某個頁面,它不會匯入被include頁面的編譯指令,僅僅將被匯入頁面的body內容插入本頁面。  

 

下面是include動作指令的文法格式:  

<jsp:include page="{relativeURL│<%=expression%>}" flush="true"/>   

或者  

<jsp:include page="{relativeURL│<%=expression%>}" flush="true">   

<jsp:param name="parameterName" value="patameterValue"/>   

</jsp:include>  

 

flush屬性用於指定輸出緩衝是否轉移到被匯入檔案中。如果指定為true,則包含在被匯入檔案中;如果指定為false,則包含在原檔案中。對於JSP 1.1舊版本,只能設定為false。  

對於第二種文法格式,則可在被匯入頁面中加入額外的請求參數。  

下面頁面使用了動態匯入文法來匯入指定JSP頁面。  

 

<!-- 使用動態include指令匯入頁面 -->  

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

 

上面頁面中粗體字代碼使用了動態匯入文法來匯入了scriptlet.jsp。表面上看,該頁面的執行效果與使用靜態include匯入的頁面並沒有什麼不同。但查看jsp-include.jsp頁面產生Servlet的原始碼,可以看到如下片段:  

//使用頁面輸出資料流,產生HTML標籤內容  

out.write("<!DOCTYPE HTML PUBLIC /"-//W3C//DTD HTML 4.0 Transitional//EN/ ">/r/n");  

out.write("<HTML>/r/n");  

out.write("<HEAD>/r/n");  

out.write("<TITLE>jsp-include測試</TITLE>/r/n");  

out.write("</HEAD>/r/n");  

out.write("<BODY>/r/n");  

//動態匯入,直接引入scriptlet.jsp頁面  

org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response,   

"scriptlet.jsp", out);  

out.write("/r/n");  

out.write("</BODY>/r/n");  

out.write("</HTML>/r/n");  

out.write("/r/n");  

上面程式碼片段中粗體字代碼顯示了動態匯入的關鍵:動態匯入只是使用一個include方法來插入目標頁面的內容,而不是將目標頁面完全融入本頁面中。

  

歸納起來,靜態匯入和動態匯入有如下兩點區別:  

 

   靜態匯入是將被匯入頁面的代碼完全融入,兩個頁面融合成一個整體Servlet;而動態匯入則在Servlet中使用include方法來引入被匯入頁面的內容。

  

   靜態匯入時被匯入頁面的編譯指令會起作用;而動態匯入時被匯入頁面的編譯指令則失去作用,只是插入被匯入頁面的body內容。  

除此之外,執行include動態指令時,還可增加額外的請求參數。  

 

在上面的JSP頁面中的粗體字代碼同樣使用jsp:include指令匯入頁面,而且在jsp:include指令中還使用param指令傳入參數,該參數可以在forward-result.jsp頁面中使用request對象擷取。 

 

3、UseBean指令

 

<jsp:useBean>標籤表示用來在JSP頁面中建立一個BEAN執行個體並指定它的名字以及作用範圍。

 

文法:

<jsp:useBean id="name" scope="page | request | session | application" typeSpec />

其中typeSpec有以下幾種可能的情況:

class="className" | class="className" type="typeName" | beanName="beanName" type="typeName" | type="typeName" |

 

註:

你必須使用class或type,而不能同時使用class和beanName。beanName表示Bean的名字,其形式為“a.b.c”。

 

 

4、GetProperty指令

 

<jsp:getProperty>標籤表示擷取BEAN的屬性的值並將之轉化為一個字串,然後將其插入到輸出的頁面中。

 

文法:

<jsp:getProperty name="name" property="propertyName" />

 

註:

1、在使用<jsp:getProperty>之前,必須用<jsp:useBean>來建立它。

2、不能使用<jsp:getProperty>來檢索一個已經被索引了的屬性。

3、能夠和JavaBeans組件一起使用<jsp:getProperty>,但是不能與Enterprise Java Bean一起使用。

 

5、SetProperty指令

 

<jsp:setProperty>標籤表示用來設定Bean中的屬性值。

 

文法:

<jsp:setProperty name="beanName" prop_expr />

其中prop_expr有以下幾種可能的情形:

property="*" | property="propertyName" | property="propertyName" param="parameterName" | property="propertyName" value="propertyValue"

 

6、Plugin指令

 

<jsp:plugin>標籤表示執行一個applet或Bean,有可能的話還要下載一個Java外掛程式用於執行它。

 

文法:

<jsp:plugin

      type="bean | applet"

      code="classFileName"

      codebase="classFileDirectoryName"

      [ name="instanceName" ]

      [ archive="URIToArchive, ..." ]

      [ align="bottom | top | middle | left | right" ]

      [ height="displayPixels" ]

      [ width="displayPixels" ]

      [ hspace="leftRightPixels" ]

      [ vspace="topBottomPixels" ]

      [ jreversion="JREVersionNumber | 1.1" ]

      [ nspluginurl="URLToPlugin" ]

      [ iepluginurl="URLToPlugin" ] >

      [ <jsp:params>

         [ <jsp:param name="parameterName" value="{parameterValue | <%= expression %>}" /> ]+

      </jsp:params> ]

      [ <jsp:fallback> text message for user </jsp:fallback> ]

</jsp:plugin>

 

註:

<jsp:plugin>元素用於在瀏覽器中播放或顯示一個對象(典型的就是applet和Bean),而這種顯示需要在瀏覽器的java外掛程式。

當Jsp檔案被編譯,送往瀏覽器時,<jsp:plugin>元素將會根據瀏覽器的版本替換成<object>或者<embed>元素。注意,<object>用於HTML 4.0 ,<embed>用於HTML 3.2。

一般來說,<jsp:plugin>元素會指定對象是Applet還是Bean,同樣也會指定class的名字,還有位置,另外還會指定將從哪裡下載這個Java外掛程式。

 

 

 

7、param指令

 

param指令用於設定參數值,這個指令本身不能單獨使用,單獨的param沒有實際意義,param指令可與一下三個指令結合使用:

 

jsp:include

jsp:forward

jsp:plugin

 

param指令的文法格式如下:

<jsp:param  name="paramName" value="paramValue">

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.