JSP頁面由以下元素構成:l 靜態內容。這些靜態內容是JSP頁面中的靜態文本,它基本上是HTML文本,與Java和JSP文法無關。l 指令。JSP指令一般以”<%@ 屬性=值 %>”。l 運算式。JSP運算式以”<%=運算式%>”結束。l Scriptlet。Scriptlet是嵌在頁面裡的一段Java代碼,以”<% Java代碼 %>”。l 聲明。JSP聲明用於定義JSP頁面中的變數和方法。它以”<%! 變數和方法%>”。l 動作。JSP動作允許在頁面間轉移控制權。文法為”<jsp:動作名 屬性=值 />”或者為”<jsp:動作名 屬性=值>Body </jsp:動作名>”。l 注釋。注釋有兩種:”<!—這種注釋用戶端可以看到-->”,”<%--這種注釋用戶端不能查看到--%>”。JSP指令碼和指令的使用
l JSP指令碼元素包括聲明、Scriptlet和運算式。
l JSP運算式用於計算運算式的值,並以<%=代碼%>形式編寫。JSP聲明用於聲明變數和方法,並以<%!代碼%>形式編寫。JSPScriptlet用於將複雜的Java代碼插入JSP頁面,並以<%代碼%>形式編寫。
l 指令共有3種類型:page指令、include指令和taglib指令。所有指令均包括在<%@指令%>標籤中。
l page指令用於設定JSP頁面的屬性,include指令用於將檔案嵌入JSP頁面,taglib指令允許使用者使用自訂標籤。
在JSP中的動作指令包括:Include、 Forward、 UseBean、 GetProperty、 SetProperty、 Plugin。
一、Include指令
<jsp:include>標籤表示包含一個靜態或者動態檔案。
文法:
<jsp:include page="path" flush="true" />
or
<jsp:include page="path" flush="true">
<jsp:param name="paramName" value="paramValue" />
</jsp:include>
註:
1、page="path" 為相對路徑,或者代表相對路徑的運算式。
2、flush="true" 必須使用flush為true,它預設值是false。
3、<jsp:param>子句能讓你傳遞一個或多個參數給動態檔案,也可在一個頁面中使用多個<jsp:param>來傳遞多個參數給動態檔案。
二、Forward指令
<jsp:forward>標籤表示重新導向一個靜態html/jsp的檔案,或者是一個程式段。
文法:
<jsp:forward page="path"} />
or
<jsp:forward page="path"} >
<jsp:param name="paramName" value="paramValue" />……
</jsp:forward>
註:
1、page="path" 為一個運算式,或者一個字串。
2、<jsp:param> name 指定參數名,value指定參數值。參數被發送到一個動態檔案,參數可以是一個或多個值,而這個檔案卻必須是動態檔案。要傳遞多個參數,則可以在一個JSP檔案中使用多個<jsp:param>將多個參數發送到一個動態檔案中。
三、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”。
四、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一起使用。
五、SetProperty指令
<jsp:setProperty>標籤表示用來設定Bean中的屬性值。
文法:
<jsp:setProperty name="beanName" prop_expr />
其中prop_expr有以下幾種可能的情形:
property="*" | property="propertyName" | property="propertyName" param="parameterName" | property="propertyName" value="propertyValue"
註:
使用 jsp:setProperty 來為一個Bean的屬性賦值;可以使用兩種方式來實現。
1、在jsp:useBean後使用jsp:setProperty:
<jsp:useBean id="myUser" … />
…
<jsp:setProperty name="user" property="user" … />
在這種方式中,jsp:setProperty將被執行。
2、jsp:setProperty出現在jsp:useBean標籤內:
<jsp:useBean id="myUser" … >
…
<jsp:setProperty name="user" property="user" … />
</jsp:useBean>
在這種方式中,jsp:setProperty只會在新的對象被執行個體化時才將被執行。
* 在<jsp:setProperty>中的name值應當和<jsp:useBean>中的id值相同。
六、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外掛程式。
JavaBean簡介
JavaBean應當具有如下要求:
l JavaBean是一個Java公有類。
l 有預設構造方法。
l 屬性首字母小寫。
l 有get、set方法。
JSP動作有:動作1
<jsp:useBean id=”BeanName class=”BeanClass” scope=”page/session/application/request”/>
其中:
Id專用於建立Bean的引用名。
Class指定Bean的類,全名為:“包.類”。
Scope指定Bean的範圍,預設情況下,scope被設定為page.