第五章 JSP程式設計基礎
第五章 JSP程式設計基礎 5-1 JSP初體驗 5-2 變數 5-3 基本資料型態 5-4 運算子的使用 5-5 流程控制敘述 5-6 導引指令介紹 5-7 動作元素的介紹
5-1 JSP初體驗 JSP是以Java的程式語法為主,內嵌在HTML網頁裡,可以製作出互動式網頁的功能。
5-1-1 Hello JSP! 範例-執行結果
執行過程-說明 圖一 圖三 圖二
5-1-2 JSP網頁程式碼的細節 註解:<%…%> 區塊的程式碼裏面,以符號 “//” 作標示,表示這一行程式為說明註解。 資料輸出:註解之後,連續三行程式碼引用out物件進行指定字串輸出,『out』是JSP中的預設物件,主要用來輸出資料到客戶端網頁上。
5-2 變數 變數與資料型態是學習程式語言的基礎,JSP使用Java所定義的變數與資料型態進行網頁的建構,變數用以儲存各種型態的資料。
5-2-1 變數 Java定義各種型態的資料,例如整數、字串等等,變數可以儲存任何Java所允許的型態資料,而變數使用之前必需指定其名稱並且同時將其宣告為所要儲存的資料型態。
5-2-2 無法更改的變數-常數 當應用程式中需要使用的數值是固定的時候,我們可以選擇將變數宣告為不允許重新定義其內容,稱之為常數。
5-2-3 變數的命名規則 變數的命名有其一定的規則,隨意為變數命名是不被允許的,下列針對幾項規則進行說明: 1.必需為合法字元: Java程式將字母相同、大小寫相異的 兩個變數視為相異,同時名稱不可以包含不合法的字元, 例如空白與前置為數字的變數名稱。 2.避免使用關鍵字:關鍵字是由Java內建,具有特定意義、 專門使用於應用程式的特定字串。 3.使用具意義的變數名稱 : 變數的命名基本上只要符合上 述的規則就可以,而為了提高程式的可讀性,通常會使用 一個代表變數意義的名稱為變數作命名。
5-2-4 變數的運算 變數在程式中可以被常作一般的數值使用,例如儲存整數值的變數可以直接用以四則運算。 變數實際於應用程式中使用的例子:
5-3 基本資料型態 程式語言可用以處理各種型態的資料,Java同時定義各種特定的資料型態供應用程式使用。
5-3-1 JSP的基本資料型態 類型 資料型態 名稱 儲存空間 有效範圍 字元 char 16 bit '\u0000'~'\uffff' 布林 boolean 布林值 1 bit true或false 浮點數 float 32 bit 1.40239846E-45 ~3.40282347E+38 double 倍精確浮點數 64 bit 4.94065645841246544E-324 ~1.79769313486231570E+308 整數 byte 位元整數 8 bit -128 ~ 127 short 短整數 -32768 ~ 32767 int -2147483648 ~ 2147483647 long 長整數 -922337203685475808 ~ 922337203685475808
5-3-2 整數 整數代表一種不帶小數點的數值,Java所定義的整數資料型態總共有四個,byte、short、int以及long。 當我們瀏覽這個網頁的時候,產生錯誤內容如下:
5-3-3 浮點數 浮點數是另一種儲存數字資料的基本型態,是依其數值範圍的大小分為兩種,分別是float以及double,儲存包含小數點的非整數數值。 浮點數可以儲存的數值範圍比整數大,同時,一個宣告為浮點數的變數同樣可以被用以儲存整數資料。
5-3-4 布林 布林是一種非常簡單的資料型態,代表一種不是true就是false的單一位元值,一個宣告為boolean的變數只能儲存true或是false。
5-3-5 字元 char是一種儲存Unico字元的資料型態,一個char型態的變數代表雙元組的單一字元。
5-3-6 陣列資料 『陣列Array』為一種複合型資料類型,用來存放一群型態相同的資料元素, 如下圖代表一個可以儲存6個元素的陣物件: 元素1 [0] 元素2 [1] 元素3 [2] 元素4[3] 元素5 [4] 元素6[5] 最簡單的多維陣列為二維陣陣列,由多個一維陣列所組成,其結構如同一個行列數目不等的棋盤,如下圖所示: 元素11 [0] [0] 元素12 [0] [1] 元素11 [0] [2] 元素21 [1] [0] 元素22 [1] [1] 元素12 [1] [2] 元素31 [2] [0] 元素32 [2] [1] 元素13 [2] [3]
5-3-7 資料型態轉換 程式執行過程中,有時會遇到需要將資料轉換為特定型態的情況發生,資料型態轉換,只需在欲轉換的變數前指定欲轉換成的資料型態即可。 例如『(double)a』會將變數a轉換為double資料型態,我們來看一個實際的程式碼片段: <% int a=3,b; //宣告二個整數變數 float c=78f; //宣告一個浮點變數 b=(int)c+a; //將c轉換為整數型態,若不轉換則會出現錯誤 out.println("b="+b); //輸出b=81 %>
5-4 運算子的使用 運算子為程式中用來進行程式運算的符號,例如 『+』、『-』、『*』、『/』等數學四則運算子,在JSP中除了基本的四則運算外,還有用來構成條件判斷式的比較及邏緝運算子。
5-4-1 算數運算子 算術運算子另外還有一組由基本運算子與指派運算子合併的運算子,下表列出了這些運算子所代表的意義及用法: 一般算數運算子用來進行數學運算,為四則運算與模數運算子,列舉如下表: 運算子 運算子名稱 範例 + 加法 A+B=14 - 減法 A-B=8 * 乘法 A*B / 除法 A/B % 取餘數 A%B 運算子 使用語法 說明 += A+=5 A+=5 等於 A=A+5 -= A-=5 A-=5等於 A=A-5 *= A*=5 A*=5等於 A=A*5 /= A/=5 A/=5等於 A=A/5 %= A%=5 A%5等於 A=A%5 ++ A++、++A A++ 等於 A=A+1 -- A--、--A A-- 等於 A=A-1
前置運算 & 後置運算 前置運算:運算子首先針對其連接的運算元進行運算,然後回傳運算的結果。 後置運算:運算元的值首先會回傳給指定變數,然後運算子再針對其其進行運算。 範例-執行結果
5-4-2 比較運算子 比較運算子是用來比較二個數值之間的大小關係,常運用在判斷式中用以決定程式的執行流程。 運算子 說明 使用語法 範例(A=3,B=23) = = 等於 A= = B 傳回布林值false != 不等於 A!=B 傳回布林值true > 大於 A>B >= 大於等於 A>=B < 小於 A<B <= 小於等於 A<=B
5-4-3 邏輯布林運算子 布林運算子用來串接多個條件運算式,且回傳一個代表運算結果的布林值,true或是false,進行各種型式的程式判斷,列舉如下表: 運算子 意義 |、|| OR邏輯判斷 &、&& AND ! NOT
| 以及 || | 以及 ||均是OR運算子,其左右串接兩個運算元,當其中有一個運算元的值是true的時候,則回傳一個true 的布林值。 範例-執行結果
& 與 && & 與 &&均是AND運算子,針對兩個運算元進行AND的邏輯運算,只有當其連接的兩運算元均是true的時候,則回傳一個true的布林值,否則一律回傳false。 範例-執行結果:
!運算子 !是一種邏輯反向運算子,其針對一個布林運算元作運算,將其值反轉之後作輸出。 用法如下: !true => false !true => false !false => true
5-4-4運算子的優先順序 表格中,由高至低依次為各運算子的優先順序: 運算子 說明 ++、-- 遞增、遞減運算 *、/、% 乘、除、取餘數 <、<=、>、>= 小於、小於等於、大於、大於等於 ==、!= 等於、不等於 & 邏緝運算"AND" | 邏緝運算"OR" && || +=、-=、*=、/=、%= 算術指派運算子
5-5 流程控制敘述 程式常透過各種結合運算子的敘述句,根據不同運算結果,進行特定的流程控制,例如用以進行決策的if敘述句、重覆執行相同程式區塊的迴圈敘述句等等。
5-5-1 if判斷式的使用 if 關鍵字用於程式流程的執行判斷,由其形成的敘述句有三種架構if、if-else、if-else if-else三種。
if判斷式 if判斷式可以在程式流程裏插入一段程式區塊,然後根據if 敘述句的運算 結果判斷是否執行此段程式片段。 if 敘述句的示意圖
範例-執行結果
if-else判斷式 if...else提供另外一種非A即B的判斷模式,當if敘述句條件不成立的時候,則程式碼進行另外一段區塊
範例-執行結果
if-else if-else 判斷式 當程式中時需要逐步過濾多層條件,再決定要執行那一部份的程式碼,這時可使用 if-else if-else 判斷式 if-else if-else 敘述句的示意圖
5-5-2 switch判斷式 switch根據運算式所產生的不同結果,執行特定的程式碼,可以有效的提供多重條件運算的需求。 範例-執行結果
5-5-3 for迴圈 當應用程式需要重覆執行某個區塊程式碼的時候,可以利用迴圈敘述進行實際的運算 流程圖說明for 迴圈的運作
範例-執行結果
5-5-4 while迴圈 while是另一種迴圈敘述,同樣提供重覆執行程式碼區塊的功能,與for不同的是,while只根據設定的條件式判斷結果,決定是否繼續進行迴圈。 while因其條件式的判斷先後而分為while迴圈及do-while迴圈二種。
while迴圈 while會先判斷條件式是否成立,才決定是否執行該迴圈。 while迴圈的執行示意圖
do...while迴圈 while迴圈另外一種型式為do-while敘述句,使用底下的語法,於每一次迴圈執行完畢之後,再進行條件式的判斷。
範例-執行結果
5-5-5 break及continue指令 (1) break指令是用來強迫結束迴圈或離開判斷式,在switch敘述中,利用它結束一個case區塊的執行,break經常被使用於迴圈中,進行迴圈的強迫中斷作業。 範例-執行結果
5-5-5 break及continue指令 (2) continue的作用剛好與break相反,它會忽略其後的程式碼,而直接執行下一次的迴圈。 範例-執行結果
5-6 導引指令介紹 進入JSP網頁的專屬語法探討,其中主要包含兩個部份,導引指令元素以及動作元素。
5-6-1 導引指令元素概述 導引指令主要使用於進行網頁相關特性的設定,JSP提供的導引指令有三種,分別是page、include以及taglib等,分述如下表: 指令 意義 page 使用於設定JSP的網頁特性。 include 使用於將外部檔案載入目前的JSP網頁。 taglib 使用於自訂JSP標籤。
5-6-2 page導引指令 『page』導引指令可設定JSP網頁相當多樣的特性,包含編碼方式、引用類別、緩衝區、使用的Script語言...等等,都是利用page導引指令下的各種屬性來設定,基本使用語法如下: <%@page 屬性1=“設定值” 屬性2="設定值" …… %>
language屬性 & import屬性 & session屬性 language屬性用來設定撰寫JSP網頁使用的程式語法。 import屬性可載入一些非預設的Java套件或類別,如此才能由該類別生成物件與使用其中的方法。 session屬性用來設定JSP網頁是否使用內建的session物件與功能,預設值為『true』。
buffer屬性 & autoFlush屬性 & info屬性 buffer屬性是設定JSP網頁所使用的緩衝區大小,緩衝區是用來暫存一些要傳送給客戶端的資料,此屬性的預設值為『8kb』。 autoFlush屬性是設定布林值『true』或『false』,表示是否在緩衝區中的儲存空間已滿時,自動將資料輸出至客戶端,預設值為『true』。 info屬性是設定代表JSP網頁的資訊,設定內容可在程式中使用『getServletInfo()』方法來取得 。
extends屬性 & contentType屬性 & isThreadSafe屬性 extends屬性是設定JSP程式解譯成Servlet後所繼承的父類別。 info屬性是設定代表JSP網頁的資訊,這個屬性的設定內容可在程式中使用『getServletInfo()』方法來取得 。 isThreadSafe屬性是設定伺服端處理上線使用者請求的方式。
多執行緒與單一執行緒 (1) 每一個上線使用者對於網頁伺服器提出的請求,對於伺服器而言會將它視為一個『執行緒』。若所有上線使用者的請求都是由這一份Servlet來回應,稱之為『多執行緒』,如下圖所示:
多執行緒與單一執行緒 (2) 多執行緒的處理模式,由於是所有使用者共用一份Servlet,所以程式中的變數資料皆為共用。
ErrorPage 屬性&IsErrorPage 屬性 isErrorPage屬性是設定網頁是否可顯示其它網頁所產生的例外訊息,預設值為『false』。
5-6-3 include導引指令 include導引指令用來將HTML、文字檔或者JSP程式載入目前JSP網頁,導引指令的使用語法如下,使用incluede關鍵字,file屬性則是所要載入的檔案路徑。 <%@include file= "載入檔案所在的相對路徑"%>
5-6-4 taglib導引指令 taglib導引指令可以用來引用一個自訂的標籤庫,在JSP中只要使用taglib指令引用標籤庫,便可使用其中自訂的元素,taglib導引指令的使用語法為: <%@taglib uri="名稱空稱" prefix="字首"%>
5-7 動作元素的介紹 JSP的規格標準中有幾個預設的『動作元素』標籤,都有各自特定的功能下表列出了這些JSP預設的動作元素 。 分類 功能說明 JavaBean <jsp:useBean> 使用JavaBean <jsp:setProperty> 設定JavaBean的屬性值 <jsp:getProperty> 取得JavaBean的屬性值 一般動作元素 <jsp:include> 載入HTML或JSP檔案 <jsp:forward> 網頁重新導向 <jsp:plugin> 載入Java Applet或JavaBean <jsp:param> 設定傳送參數
5-7-1 <jsp:param>動作元素 <jsp:param>元素主要用來傳遞參數給JSP程式,而由程式取得參數值,在程式中便是一個變數值。此動作元素的使用語法為: <jsp:param name="參數名稱" value="參數值"/>
5-7-2 <jsp:include>動作元素 <jsp:include>動作元素可以如同導引指令『include』一樣於目前的網頁中載入JSP程式或者HTML檔案,使用語法為: <jsp:include page = "載入檔案所在的相對路徑" flush = "true"> <jsp:param name = "參數1" value = "參數值"/> <jsp:param name = "參數2" value = "參數值"/> </jsp:include>
5-7-3 <jsp:forward>動作元素 <jsp:forward> 動作元素提供網址重新導向新的功能,這個元素的使用語法和<jsp:include>相當類似,如下所示: <jsp:forward page = "導向網頁所在的相對路徑"> <jsp:param name = "參數1" value = "參數值"/> <jsp:param name = "參數2" value = "參數值"/> </jsp:forward> 範例-執行結果
5-7-4 <jsp:plugin>動作元素 <jsp:plugin>動作元素的功能在於提供從JSP網頁中,載入Java Applet或JavaBean程式元件,這個元素有許多屬性設定: type : 載入Java程式的類型。 code:載入Java程式編譯後的類別名稱。 codebase:編譯後Java程式類別所在的目錄。 name:用來對載入的Java Applet或JavaBean程式,設定識別的名稱。 align:設定載入的程式在視窗中顯示的對齊方式。 Height:載入的程式在視窗中顯示的高度。 width:載入的程式在視窗中顯示的寬度。 hspace:載入程式的顯示區與網頁其它內容的水平間隔。 vspace:載入程式的顯示區與網頁其它內容的垂直間隔。
<jsp:params>動作元素 若要傳遞參數給載入的程式,則必須在<jsp:params>與</jsp:params> 起始與結束標籤中(此標籤有加s)使用<jsp:param>動作元素來設定。 範例-執行結果