JSP基礎(5)-JSP標準動做


1、JSP標準動做基本介紹:html


在jsp頁面被翻譯成Servlet源代碼的過程當中,當容器遇到標準動做元素時,就調用與之相對應的Servlet類方法來代替它,全部標準動做元素的前面都有一個JSP前綴做爲標記,通常形式如:<jsp:標記名… 屬性…/>。有些標準動做中間還包含一個體,即一個標準動做元素中又包含了其餘標準動做元素或者其餘內容,包括體的標準動做的使用格式以下:java


<jsp:標記名…屬性…>web


<jsp:標記名…屬性以及參數…/>小程序


</jsp:標記名>瀏覽器


根據各個標準動做的功能,能夠將這些標準動做分紅如下6組:session


1.  jsp中使用到JavaBean的標準動做:<jsp:useBean> 定義使用一個JaveBean實例,ID屬性定義了實例名稱;<jsp:getProperty>從一個JavaBean中獲取一個屬性值,並將其添加到響應中;<jsp:setProperty>設置一個JavaBean中的屬性值; app


2.  在jsp中包含其餘jsp文件或者web資源的標準動做:<jsp:include>在請求處理階段包含來自一個Servlet或者jsp文件的響應,注意與include指令的不一樣; jsp


3.  將到達的請求轉發給另一個jsp頁面或者web資源以便進一步的操做的標準動做:<jsp:forward>將某個請求的處理轉發到另外一個Servlet或者jsp頁面; ide


4.  在其餘標準動做的中間指定參數的標準動做:<jsp:param>對使用<jsp:include>或者<jsp:forward>傳遞到另一個Servlet或者jsp頁面的請求添加一個傳遞參數值; 函數


5.  在客戶端的頁面嵌入java對象(例如applet,是運行在客戶端的小java程序)的標準動做:<jsp:plugin>根據瀏覽器類型爲java插件生成Object或者Embed標記;<jsp:params>;<jsp:fallback>;


6.  僅僅用於標記文件的標準動做:


<jsp:attribute>;<jsp:body>;<jsp:invoke>;<jsp:dobody>;<jsp:element>;<jsp:text>;<jsp:output>


2、<jsp:useBean>標準動做:


使用<jsp:useBean>標準動做可引用一個將在jsp頁面中使用的javaBean類,javaBean的使用實現了邏輯處理和頁面顯示在必定程度上的分離,從而能夠增長代碼的可重用性,若是將邏輯處理寫在一個javaBean類中,在其餘全部jsp頁面程序中便可使用<jsp:useBean>標準動做來引用該javaBean類,使用形式以下:


<jsp:useBean id=」name」 class=」package.class」 scope=」….」 type=」…」/>


   <jsp:useBean>標準動做還能夠包含一個體,如:<jsp:setProperty>動做,在第一次建立這個實例的時候,就會使用<jsp:setProperty>動做來進行參數的賦值操做,也就是說,若是該頁面中已經存在了JavaBean類的實例,則不會再執行<jsp:setProperty>動做所進行的參數賦值。另外,,<jsp:useBean>標準動做也並不意味着每次都要建立一個實例,若是頁面中已經存在該JavaBean的實例,則只直接使用這個實例,使用形式以下:


<jsp:useBean id=」name」 class=」package.class」 scope=」….」 type=」…」/>


<jsp:標記名… 屬性以及參數…/>


……


</jsp:useBean>


代碼說明: 使用class屬性來指定須要實例化的JavaBean類,而後使用id來標識該實例,type屬性用來指定該實例化的JavaBean類將要實現的一個接口或者一個超類;scope屬性能夠用來指定該JavaBean實例可以關聯到多個頁面。


<jsp:useBean>標準動做元素中使用的屬性以下:


·         id:給一個類實例取名並做爲整個jsp頁面的惟一標記,若是須要建立一個新的JaveBean實例,這也是引用這個新JavaBean實例的名稱


·         class:這是jsp頁面引用javaBean組件的完整Java類名(必定要包括包名).若是容器沒有找到指定名的類實例,則會使用這個class屬性指定的完整類名來建立一個新的JavaBean實例進行引用


·         type:此屬性告訴容器這裏的JavaBean實例須要實現一個Java接口,或者JavaBean實例須要擴展一個超類,再翻譯階段會使用到這個屬性,type屬性不是必須添加,可是必須添加class和type屬性中多個一個


·         scope:指定這個JavaBean再哪一種上下文內可用,該屬性能夠取下面的4個值之一:page,request,session,application;page表示該JavaBean只有在當前頁面內可用(保存在當前頁面的PageContext內);request表示該JavaBean在當前的客戶請求內有效(保存在ServletRequest對象內);session表示該JavaBean對當前httpSession內的全部頁面都有效。


3、<jsp:setProperty>標準動做


使用<jsp:setProperty>動做能夠修改JavaBean實例種的屬性變量,其中能夠有兩種使用形式:


1.  <jsp:setProperty>標準動做嵌入在<jsp:useBean>標準動做的體內,但這時只能在JavaBean被建立的實例中執行,使用形式以下:


1.  <jsp:useBean id=」myName」 …>


2.  <jsp:setProperty name=」myName」 property=」someProperty」…/>


3.  </jsp:useBean>


2.  在<jsp:useBean>動做的後面使用<jsp:setProperty>標準動做元素,使用形式以下:


1.  <jsp:useBean id=」myName」 …/>


2.  <jsp:setProperty name=」myName」 property=」someProperty」…/>


代碼說明: 無論指定的JavaBean是新建立的仍是直接使用的實例,在<jsp:useBean>動做以後使用的<jsp:setProperty >標準動做都會被執行。其中<jsp:setProperty >共有4個屬性能夠選擇設置:


1.  name:這個屬性是必須設置的,由於經過這個屬性才能知道針對哪一個JavaBean實例的屬性進行設置;


2.  property:也是必須設置的,它告訴容器須要對JavaBean實例中的哪些屬性進行設置,這裏有個特殊的用法,就是把property屬性設置爲」*」,該設置表示全部名字與JavaBean屬性名字匹配的請求參數都被傳遞給相應屬性的set方法;


3.  value:這個屬性是可選的,指定JavaBean屬性的值;


4.  param:這個屬性和value屬性不能同時使用,兩者之間只能使用一個,當兩個屬性都沒有在<jsp:setProperty >動做中指定時,指定的屬性變量將使用JavaBean中的默認值(例如構造函數中的默認值),若是使用param屬性,容器就會把property指定的屬性變量設置爲param指定的請求參數的值。


4、<jsp:getProperty>標準動做


該標準動做與前一個<jsp:setProperty >標準動做相對應,用來提取指定的JavaBean屬性值,而後轉換成字符串輸出,該動做有兩個必需要設置的屬性:


1.  name:表示JavaBean在jsp中的標記;


2.  property:表示提取JavaBean中哪一個屬性的值。


使用例子:


1.  … …


2.  <html>


3.  <body>


4.  <!—定義一個類實例,以testBean做爲標記,並給message屬性賦值」hello」 -- >


5.  <jsp:useBean id=」testBean」 class=」com.helloworld.SimpleBean」>


6.  <jsp:setProperty name=」testBean」 property=」message」 value=」Hello」/>


7.  </jsp:useBean>


8.  <H1>經過<jsp:getProperty>動做獲得message屬性值:</H1>


9.  <I><jsp:getProperty name=」testBean」 property=」message」/></I>


10.<! – 從新給message賦值 -- >


11.<jsp:setProperty name=」testBean」 property=」message」 value=」hello World」/>


12.<! – 利用EL表達式獲取message的值 -- >


13.${testBean.message}


14.</body>


15.</html>


1.  -----------------JavaBean--------


2.  Package com.helloworld:


3.  Public class SimpleBean{


4.  Private String message=」」:


5.  Public String getMessage(){


6.  Return this message:


7.  }


8.  Public void setMessage(String message){


9.  This.message=message:


10.}


11.}


5、引用外部文件的標準動做<jsp:include>


該標準動做與前面介紹的include指令方法很是相似,也是將特定的外在文件插入到當前頁面中,其使用語法以下:


<jsp:include page=」…url…」 flush=」true|false」/>


該標準動做還能夠包含一個體,具體形式以下:


<jsp:include page=」…url…」 flush=」true|false」/>


<jsp:param …/>


</jsp:include>


經過在<jsp:include>動做體中使用<jsp:param>動做,能夠用來指定jsp頁面中可用的其餘請求參數,以後能夠在當前的jsp文件以及引用的外在文件中使用這些請求參數。


在這着重說明就是<include>指令與<jsp:include>動做存在的差別。Include指令是在jsp翻譯時進行文件的合併,而後對合並的總體文件進行編譯;而<jsp:include>標準動做則首先進行自身的翻譯和編譯,而後在用戶請求階段進行二進制文件的合併。


6、進行請求轉移的標準動做<jsp:forward>




<jsp:forward>標準動做把請求轉移到另一個頁面,這個標準動做只有一個屬性page,page屬性包含一個相對url地址,如:




<jsp:forward page=」/utils/errorReporter.jsp」/>


<jsp:forward page=」<%=someJavaExpression %>」 />




第一行的page值是直接給出的,第二行的<jsp:forward>標準動做中的page值是在請求時動態計算的。


7、


參數設置的標準動做<jsp:param>




該<jsp:param>標準動做通常與<jsp:include>以及<jsp:forward>等配套使用,用來進行參數的傳遞,其通常形式以下:


<jsp:param name=」…名稱…」 value=」…值…」/>


每一個<jsp:param>標準動做都會建立一個即有名又有值的參數,這樣能夠經過<jsp:include>標準動做所包含的外在文件以及經過<jsp:forward>轉移到另外頁面,均可以使用這些參數,如:


1.  <html>


2.  <body>


3.  <jsp:include page=」date.jsp」>


4.  <jsp:param name=」serverName」 value=」zzb」/>


5.  </jsp:include>


6.  </body>


7.  </html>


則說明在請求時所包含的date.jsp文件可使用經過<jsp:param>標準動做定義的serverName參數。


8、處理插件的標準動做


·         <jsp:plugin>:用於指定在客戶端運行的插件


使用<jsp:plugin>標準動做能夠在頁面程序中插入一個java插件,通常爲java applet小程序(也能夠是任何javaBean類),它隨着頁面程序一塊兒傳輸到客戶端,而且在客戶端運息, <jsp:plugin>標準動做的通常使用形式以下:


<jsp:plugin type=」…applet 或者 JavaBean…」 code=」…」 codebase=」…」 archive=」…」 …>


</jsp:plugin>


在該動做中能夠設置多個屬性,其中大部分是<object>或者<EMBED>標記的HTML屬性,如:name,code,codebase,archive,align,width,height,jreversion,title等.其中type屬性用來指定該插件是applet小程序仍是JavaBean類。


·         <jsp:params>:用於向引用的插件傳遞參數值,通常包含在<jsp:plugin>動做體內


<jsp:params>標準動做的體由多個<jsp:param>動做組成,而且該標準動做只能使用在<jsp:plugin>標記的體中,通常使用形式以下:


1.  <jsp:plugin type=」…applet|JavaBean…」 code=」…」 …>


2.  <jsp:params>


3.  <jsp:param …/>


4.  <jsp:param …/>


5.  …


6.  </jsp:params>


7.  </jsp:plugin>


說明:<jsp:params>動做體中包括多個<jsp:param>動做來給插件類中的屬性變量賦值,每個<jsp:param>給運行在客戶端的插件傳遞一個參數


·         <jsp:fallback>標準動做


該標籤是與<jsp:plugin>標準動做配合使用的,它告訴客戶端瀏覽器當客戶端不支持該插件運行時將要顯示的HTML頁面或者jsp代碼,如下是該標準動做的通常使用形式:


<jsp:fallback>


…客戶端瀏覽器不支持插件運行時顯示html或者jsp代碼…


</jsp:fallback>


說明:體中嵌入的代碼只有在客戶端不支持該插件運行時才被執行。

相關文章
相關標籤/搜索