JSP動作指令


動作指令與編譯指令不間,編譯指令是通知 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">


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM