<%! 變量,方法和類聲明區 (Declarations) %> 在此所聲明的變量,方法和類都會被保留成唯一的一份,直到此JSP程序停止執行為止,都會一直存在;也就是說,所有請求服務都是共用這一份,它是同時被共享的。例如: <%! int i; void method(){} %> <% 程序代碼區 (Scriptlets) %> 可放入任何標準的JAVA程序代碼。 <%= 輸出表達式 (Expressions) %> 必須是字符串或執行的結果可以被轉成字符串類型。例如: <%= "任何字符" %> <%-- 注解區 (Comments) --%> 注解的內容是不會被執行的。而除了這種方式之外,你也可以用下面兩種方式來注解: <% // 注解 %> <% /* 注解 */ %> page編譯指令 Page編譯指令是用來設定JSP程序個別的屬性和它與JSP Container要如何溝通,也就是告訴JSP Engine該如何執行這個JSP程序,以服務來自客戶端的請求。 語法 <%@ page Attribute_List %> Attribute_List :: { language = "scriptingLanguage" } { extends = "className" } { import = "importList" } { session = "true|false" } { buffer = "none|sizekb" } { autoFlush = "true|false" } { isTreadSafe = "true|false" } { info = "infoText" } { errorPage = "errorPageURL" } { isErrorPage = "true|false" } { contentType = "contentTypelnfo" } language="scriptingLanguage" 設定所用的描述語言,默認值是"java",也是目前唯一有效的設定值。 extends="className" 設定所產生出來的class所要繼承的java類別,這個屬性一般都不需要去設定它,即使要設定,也必須非常小心,否則可能會影響JSP Engine的正常執行。默認值是HttpJspBase,它本身是實作HttpJspPage界面的類,可以參考javax.servlet.jsp.*所提供的API。 import="importList" 設定這個JSP程序所要用到的JAVA API或是自行定義的類。默認值是java.language.*,javax.servlet.*,javax.servlet.http.*,javax.servlet.jsp.* 和javax.servlet.jsp.tagext.*類。import是唯一可以重復設定的屬性。 session="true|false 定義這個JSP程序是否要用到session。默認值是"true",session的功能是用來保留當多個JSP程序互動時所要同時參考到的對象;session對象的類類型是HttpSession。如果沒有改變默認值的話,就可以直接在JSP程序內使用它,用它所提供的方法putValue()與getValueI()方法來存取所保留對象。 buffer="nonelsizekb 定義這個JSP程序所需要的緩沖區大小,單位是kb。默認值大小根據jsp1.1的規格說明是不小于8kb。 autoFlush="true|false" 定義這個JSP程序所用的buffer滿時,是否自動將所產生內容輸出到客戶端,默認值是"true"。如果改變它的值為"false",則當buffer內容超出其所設定的值大小時,會產生overflow的exception。要特別注意的是當buffer設為"none",autoFlush不能不設成"false",否則會產生JSP程序轉換時期的錯誤。 isThreadSafe=""true|false" 定義JSP Engine 執行JSP程序的方式,默認值是"true",這是告訴JSP Engine以多線程的方式同時服務多個來自客戶端的請求,也就是說,這些請求會被JSP Engine以交互輪流的方式來執行完成。 如果isThreadSafe設成"false",則JSP Engine會為所產生出來的JAVA類實作一個SingleThreadModel界面,只要類實作了這個界面,就會以單線程的方式來服務多個來自客戶端的請求,意即在服務完一個客戶端的請求后才去服務另一個。 info="infoText 你可以用這個屬性來描述有關JSP程序的說明文字,以Tomcat3.0的默認值是"Jasper JSP 1.1 Engine“,你可以用getServletInfo()來取得info的字符串。 errorPage="errorPageURL" 這屬性是用來設定當JSP程序在處理客戶端請求時,如果發生例外所要傳送的網頁。可以在JSP程序中可能發生例外的地方丟出一個繼承自Throwable的例外對象。如果發生例外,JSP就會執行request.setAttribute,將你所丟出的例外對象傳送到錯誤信息網頁,然后傳回你所指定的錯誤信息網頁內容。如果沒有設定的話,就以默認網頁來傳回錯誤信息。 isErrorPage="true|false" 這屬性是用來設定這個JSP程序是否作為傳回錯誤信息的網頁,默認值是"false"。 contentType="contentTypeInfo" 這屬性是用來設定傳回網頁的文件格式與編碼方式,默認值是"text/html;charset=8859_1"。 include編譯指令 include編譯指令是用來將所指定的JSP程序或網頁內容嵌入JSP程序內。 語法 <%@ include file="fileURLSpec" %> fileURLSpec必須是本地端的文件路徑加上文件名稱。 taglib編譯指令 taglib編譯指令是用來擴展JSP程序的動作指令。 語法 <%@ tablib url="tagLibrary" prefix="prefix" %> 說明 url 屬性用來執行標簽定義庫的存放地址。 prefix 屬性用來定義標簽的前置字符串,以與默認的標簽做分別。 jsp:useBean 語法 1. <jsp:useBean id="name" scope="page|request|session|application" typeSpec /> 和 2. <jsp:useBean id="name" scope="page|request|session|application" typeSpec > body </jsp:useBean> 這個動作指令可以包含或不包含body,不包含的形式如上面的第一項,直接以"/>"結束整個指令。包含body的形式如上面的第二項,body的內容可以是合法的jsp程序代碼或<jsp:setProperty.../>標簽,也可以是一般的html碼,最后則以</jsp:useBean>結束整個指令。要注意的是body只有在Bean被建立的時候才會被執行。 jsp:setProperty動作指令 語法 <jsp:setProperty name="BeanName" PropertyExpr />
PropertyExpr ::= property="*" | property="PropertyName" | property="PropertyName" value=PropertyValue" | property="PropertyName" name=Propertyname" | 說明 name 屬性用來指定Bean的名稱,這個Bean必須已經存在。 PropertyExpr 可以是上述四個組合中的一個。 <jsp:setProperty>用來搭配<jsp:useBean>一起使用,指定Bean的屬性值。 jsp:getProperty動作指令 語法 1. <jsp:getProperty name="BeanName" Property="PropertyName" /> <jsp:getProperty>用來搭配<jsp:Bean>一起使用,指定Bean的屬性值。 說明 name 屬性用來指定Bean的名稱,這個Bean必須已經存在。 Property 屬性用來指定要讀取的屬性名稱,PropertyName必須是Bean的屬性值。 jsp:include動作指令 語法 <jsp:include page="URLSpec" flush="true" /> 和 <jsp:include page="URLSpec" flush="true" > { <jsp:pram name="ParameterName" value="ParameterValue" /> }* </jsp:include> <jsp:include>可以動態地將一個Html或JSP程序文件嵌入于JSP程序中。 說明 page 屬性用來指定要嵌入的Html或JSP程序文件。 flush 是指是否要將結果立即打印出來,它的值必須設定為true,因為false在JSP1.1中是無效的設定值。 jsp:forward動作指令 語法 <jsp:forward page="URLSpec" /> 和 <jsp:forward page="URLSpec" flush="true" > { <jsp:param name="ParameterName" value="ParameterValue" /> }* </jsp:forward> 說明 <jsp:forward>可以將一個JSP的內容送到page所指定JSP程序或是servlet類中做處理然后直接將結果傳回客戶端。 jsp:param動作指令 語法 <jsp:param name="parameterName" value="parameterValue"/ > 說明 jsp:param 用來搭配jsp:forward,jsp:include和jsp:plugin一起使用,可用來傳遞參數。 jsp:plugin動作指令 語法 <jsp:plugin type="bean|applet" code="JavaBean Name|Applet class Name" codebase="ClassPath" {align="alignment"} {archive="archiveList"} {height="height"} {width="width"} {hspace="hspace"} {vspace="vspace"} {jreversion="jreversion"} {naem="componentName"} {nspluginurl="url"} {iepluginurl="url"} { <jsp:params> {<jsp:param name="parameterName" value="parameterValue" />}+ </jsp:params> } { <jsp:fallback> arbitrary_text </jsp:fallback> } </jsp:plugin> 說明 jsp:plugin 可動態下載服務器端的Java Bean或Applet到客戶端的瀏覽器上執行,也就是直接在瀏覽器上執行JAVA的程序,和Html嵌入Applet的方式相似。
|