Presentation is loading. Please wait.

Presentation is loading. Please wait.

第3章 Java語法的JSP程式 3-1 Java語言的基礎 3-2 JSP程式的基本架構 3-3 Java的變數與資料型態

Similar presentations


Presentation on theme: "第3章 Java語法的JSP程式 3-1 Java語言的基礎 3-2 JSP程式的基本架構 3-3 Java的變數與資料型態"— Presentation transcript:

1 第3章 Java語法的JSP程式 3-1 Java語言的基礎 3-2 JSP程式的基本架構 3-3 Java的變數與資料型態

2 3-1 Java語言的基礎-說明 Java語言是一種高階和物件導向程式語言,類似C++語言的編譯式語言,不過並不完全相同,因為它是結合編譯和直譯優點的程式語言。 現在讓我們來看看Java程式語言的「平台」(Platform),平台是一種結合硬體和軟體的執行環境,簡單的說,電腦程式是在平台上執行,因為Java屬於一種與硬體無關和跨平台的程式語言,所以Java平台是一種軟體平台,主要是由JVM和Java API兩個元件所組成。

3 3-1 Java語言的基礎-JVM(說明) Java編譯程式可以將Java原始程式碼編譯成「位元組碼」(Bytecode),這種程式碼是一種虛擬的機器語言,這台電腦稱為「JVM」(Java Virtual Machine),換句話說,在作業系統需要安裝JVM的直譯程式,才能夠直譯和執行位元組碼。 Java原始程式碼(副檔名.java)在編譯成位元組碼(副檔名.class)後,就可以在Windows、UNIX或Machintosh的Mac OS作業系統上執行,只需作業系統安裝JVM直譯程式,同一個位元組碼檔案,就可以跨平台在不同作業系統上正確的執行。

4 3-1 Java語言的基礎-JVM(圖例)

5 3-1 Java語言的基礎-Java API Java API是軟體元件的集合,也就是在C/C++語言所謂的函式庫,提供集合物件、GUI元件、檔案處理、資料庫存取和網路等相關的類別和介面,稱為「套件」(Packages)。 API是一種軟體的工具箱,Java標準API是一個名為java的大型套件,擁有多個子套件lang、awt和io等,每個子套件擁有許多類別,如下圖所示:

6 3-2 JSP程式的基本架構 3-2-1 第一個JSP程式 3-2-2 儲存和上傳JSP程式 3-2-3 執行JSP程式
3-2-5 Java語言的命名與註解

7 3-2-1 第一個JSP程式-說明 在JSP程式為了分辨HTML標籤與JSP程式,所以使用特定符號的標籤來區分哪部分是HTML標籤,哪些部分是JSP程式碼,這些JSP程式碼稱為JSP的「腳本元素」(Scripting Element),如下所示: <%………%> 位在上述標籤符號之間的是JSP程式碼,HTML文件如果擁有上述符號的程式碼且副檔名為.jsp,伺服端支援JSP容器的Web伺服器就會將這部分程式碼轉換成Servlet程式,在編譯和執行後,產生HTML文件送到客戶端瀏覽程式顯示。

8 3-2-1 第一個JSP程式-範例 01: <!-- JSP程式:Ch3_2_1.jsp -->
02: page contentType="text/html; charset=Big5"%> 03: <html> 04: <head> 05: <title>Ch3_2_1.jsp</title> 06: </head> 07: <body> 08: <%! int from, to; // 變數宣告 %> 09: <% // 指定變數值 10: from = 4; 11: to = 6; 12: // 設定字型尺寸由小變大 13: for ( int i = from; i <= to; i++ ) { %> 14: <font size=<%= i %>> 15: <p>第一個JSP程式</p> 16: <% } %> 17: </body> 18: </html>

9 3-2-1 第一個JSP程式-範例說明 JSP程式範例是使用Java語言作為腳本語言,在程式開始的第2列是JSP指引元素的page指令,如下所示: 01: page contentType="text/html; charset=Big5"%> page指令指定contentType屬性的網頁文件類型為HTML文件,編碼為繁體中文Big5,關於JSP指引元素的說明請參閱第4章。 在<body>標籤區塊的HTML標籤擁有多個JSP程式碼區塊,這些JSP腳本元素(Scripting Element)分為3種。

10 3-2-1 第一個JSP程式-Declarations元素
Declarations宣告元素是腳本語言的變數、物件變數宣告或方法,Declarations元素是位在下列符號之間的程式碼,如下所示: <%! %> 宣告元素並不會產生任何輸出,如果腳本語言是Java語言,Declarations元素宣告的變數或方法會翻譯(Translate)成Servlet類別的實例變數或方法宣告。例如:在第8列宣告整數int變數from和to的程式碼就是Declarations元素,如下所示: 08: <%! int from, to; // 變數宣告 %>

11 3-2-1 第一個JSP程式- Scriptlets元素
Scriptlets元素:指定敘述和for迴圈 Scriptlets元素可以在JSP程式插入任何合法腳本語言的程式碼片斷,這是位在下列符號之間的Java程式碼,如下所示: <% %> 符號可以插入以Java語言作為腳本語言的指定敘述、條件和迴圈等程式碼,在轉換成Servlet程式後,這些程式碼是位在Servlet類別的_jspService()方法。 例如:使用Scriptlet元素指定變數值和for迴圈。迴圈結束前後都有HTML標籤,所以程式碼也需使用"<%"和"%>"符號標示出來。

12 3-2-1 第一個JSP程式- Expressions元素
Expressions元素:內含於HTML標籤的運算式 Expression元素是一個插入腳本語言的運算式,在執行時會自動轉換成字串資料態,這是位在下列符號之間的Java程式碼,如下所示: <%= %> Expression元素的運算式並不需要Java語言的結束符號";"。例如:指定<font>標籤的字型尺寸就是Expression元素,如下所示: 14: <font size=<%= i %>>

13 3-2-2 儲存和上傳JSP程式-儲存 JSP程式的副檔名為【.jsp】,所以在使用記事本或Gel儲存時,記得儲存成.jsp檔案,例如:在【記事本】執行「檔案/儲存檔案」指令儲存檔案,可以看到「另存新檔」對話方塊。 在【存檔類型】選【所有檔案】,【檔名】欄輸入檔案全名Ch3_2_1.jsp,包含副檔名【.jsp】,然後按【儲存】鈕即可儲存JSP程式。

14 3-2-2 儲存和上傳JSP程式-公佈 在建立好JSP檔案後,我們需要將檔案公佈到Web伺服器的指定目錄,以本書在第1章建立的開發環境為例,如下所示: Resin的Web伺服器:複製或上傳到「C:\resin-3.0.9\webapps\ROOT\Ch??」資料夾,"??"是章節編號01、02、….16等,請自行建立Ch??子資料夾。 IIS的Web伺服器:複製或上傳到「C:\inetpub\wwwroot\Ch??」資料夾,"??"是章節編號01、02、….16等,請自行建立Ch??子資料夾。

15 3-2-3 執行JSP程式-網址 在將JSP程式公佈或上傳到Web伺服器後,我們就可以啟動Internet Explorer瀏覽程式,在【網址】欄輸入URL網址,如下所示: Resin的Web伺服器:URL網址的埠號為8080,如下所示: IIS的Web伺服器:URL網址的埠號是預設80,所以不需要指定,如下所示:

16 3-2-3 執行JSP程式-圖例

17 3-2-3 執行JSP程式-原始程式碼

18 3-2-4 JSP程式的執行過程-說明 JSP程式碼是內嵌於HTML檔案中,當瀏覽程式向Web伺服器請求JSP程式時,伺服端支援JSP容器(JSP Container)的Web伺服器會先將JSP程式碼翻譯成Servlet,然後編譯和執行Servlet輸出HTML標籤,最後產生一份不含JSP程式碼的HTML文件,等到傳送到客戶端後,在瀏覽程式顯示的就是這份純HTML標籤的網頁內容。 在第1次請求JSP程式時,支援JSP的Web伺服器會將JSP程式碼翻譯成Servlet程式碼,然後使用JDK編譯和執行Servlet,以便回應HTTP請求。當第2次之後請求同一頁JSP程式,就是直接執行已經編譯成Servlet程式的Class類別檔。

19 3-2-4 JSP程式的執行過程-圖例

20 3-2-4 JSP程式的執行過程-檔案位置 以IIS與Resin伺服器為例,轉換成的Servlet程式碼是儲存在「C:\Inetpub\wwwroot\WEB-INF\work\_jsp\_ch03」資料夾。 _ch3_02_01__jsp.java是JSP程式Ch3_2_1.jsp轉換的Servlet程式碼檔案。 _ch3_02_01__jsp.class是編譯後的Class類別檔,換句話說,我們真正執行的是_ch3_02_01__jsp.class類別檔案。

21 3-2-5 Java語言的命名與註解-命名 在程式中需要替變數、類別和函數等很多元素命名,程式設計者在替這些元素命名時,需要遵循程式語言的語法,Java的命名語法,如下所示: 名稱是一個合法的「識別字」(Identifier),識別字是使用英文字母開頭,不限長度的Unicode統一字碼字元的字串,包含字母、數字和底線”_”。 名稱區分英文字母的大小寫,例如:apple、Apple和APPLE屬於不同變數。 名稱不能使用Java語法的「關鍵字」(Keyword)、保留字的布林值true或false和null 。 名稱在「範圍」(Scope)中必需是唯一的,例如:在程式中可以使用相同的變數名稱,不過各變數名稱需要在不同的範圍。

22 3-2-5 Java語言的命名與註解-關鍵字

23 3-2-5 Java語言的命名與註解-Java註解
JSP程式的Scriptlets元素是Java語言的程式碼片斷,所以使用Java語言的註解,這是以"//"符號開始的列,或放在程式列後的文字內容,如下所示: <% // 顯示訊息 out.print("目前的日期/時間: "); // 顯示訊息 %> 如果註解文字不只一列,可以使用"/*"和"*/"符號標示註解文字,如下所示: /* JSP程式:Ch3_2_5.jsp */

24 3-2-5 Java語言的命名與註解-HTML註解
<!-- JSP程式:Ch3_2_5.jsp --> 上述註解是位在JSP元素之外的HTML標籤,所以在HTML標記語言的註解也可以使用Expression元素,如下所示: <!—目前時間:<%= new java.util.Date() %> -->

25 3-2-5 Java語言的命名與註解-JSP註解

26 3-2-5 Java語言的命名與註解-JSP的基本輸出
JSP的基本輸出是使用out隱含物件輸出網頁內容,事實上,這就是Java語言的System.out。 out物件的print()和println()方法可以輸出字串到瀏覽程式,其差異在於是否在最後加上換行符號'\n',不過,JSP程式並沒有差異,因為網頁是使用<br>標籤換行,如下所示: out.print("目前的日期/時間: "); out.println("目前的日期/時間: ");

27 3-3 Java的變數與資料型態 3-3-1 變數的資料型態 3-3-2 變數、常數宣告與指定敘述 3-3-3 Escape逸出字元

28 3-3-1 變數的資料型態-說明 Java的資料型態分為「基本」(Primitive)和「參考」(Reference)兩種資料型態,如下所示: 基本資料型態:Java變數擁有byte、short、int、long、float、double、char和boolean一共8種資料型態。 參考資料型態:Java的類別就是一種參考資料型態,其建立的物件變數值是記憶體位置,參考到物件儲存的位置。例如:String、StringBuffer、Character和Number類別建立的物件就屬於參考資料型態。

29 3-3-1 變數的資料型態-整數資料型態 「整數資料型態」(Integral Types)是指變數的資料為整數沒有小數點,依照整數資料長度的不同(即變數佔用的記憶體位元數),分為4種整數資料型態,如下表所示:

30 3-3-1 變數的資料型態-浮點數資料型態 「浮點數資料型態」(Floating Point Types)是指整數加上小數,例如: 、 等,依照長度的不同(即變數佔用的記憶體位元數),分為2種浮點數的資料型態,如下表所示:

31 3-3-1 變數的資料型態-布林資料型態 「布林資料型態」(Boolean Type)只能有2個值true和false,這不是變數名稱,而是Java的保留字,主要是使用在條件和迴圈控制的條件判斷。

32 3-3-1 變數的資料型態-字元資料型態 「字元資料型態」(Char Type)是「無符號」(Unsigned)的16位元整數所表示的Unicode字元,Unicode字元是使用2個位元組表示字元,可以用來取代ASCII字元使用一個位元組的表示方式。

33 3-3-2 變數、常數宣告與指定敘述-說明 Java語言是「強調型態」(Strongly Typed)程式語言,在變數儲存的值需要指定資料型態。 簡單的說,資料型態的目的是告訴編譯程式宣告的變數準備儲存什麼樣的資料,而且不論如何存取變數值,都不能更改變數的資料型態。

34 3-3-2 變數、常數宣告與指定敘述-變數的宣告
Java整數變數宣告的範例,如下所示: int score; 上述程式碼宣告1個整數變數,資料型態為整數int,名稱為score,如果需要同時宣告多個變數,請使用","號分隔,如下所示: int i, j, k; 變數宣告單純只是表示保留記憶體空間,至於儲存的資料是什麼?可以在宣告時指定初始值,或是使用指定敘述在程式碼設定變數值。在Java宣告變數且指定變數初值,如下所示: int score = 85; int i = 20;

35 3-3-2 變數、常數宣告與指定敘述-常數的宣告
「常數」(Named Constants)是指一個變數在設定初始值後,就不會變更其值,簡單的說,就是在程式中使用一個名稱代表一個固定值。 Java的常數宣告和指定初值的變數宣告相同,只需在前面使用final關鍵字,如下所示: final double PI = ; 上述程式碼宣告圓周率的常數PI。請注意!在宣告常數時一定要指定常數值。

36 3-3-2 變數、常數宣告與指定敘述-指定敘述 「指定敘述」(Assignment Statement)是在程式中存取指定變數的值,如果在宣告變數時沒有指定變數的初值,就可以使用指定敘述即"="等號指定變數值或更改變數值。一個指定敘述的範例,如下所示: balance = 6000; 上述程式碼指定變數balance的內容,運算式是數值6000,詳細的運算式說明,請參閱第3-4節。

37 3-3-3 Escape逸出字元-說明1 Java提供Escape逸出字元,這是使用"\"符號開頭的字串,可以顯示一些無法使用鍵盤輸入的特殊字元,如下表所示:

38 3-3-3 Escape逸出字元-說明2 對於JSP標籤來說,如果在JSP程式需要顯示"<%"和"%>"標籤,我們需要使用替代字串或Escape逸出字元,如下表所示:

39 3-4 Java的運算子 3-4-1 運算子的優先順序 3-4-2 算術運算子 3-4-3 關係與條件運算子 3-4-4 位元運算子
3-4-5 指定運算子

40 3-4 Java的運算子 Java指定敘述的左邊是「運算式」(Expressions),這是由「運算子」(Operator)和「運算元」(Operand)所組成,Java擁有完整的算術、指定、位元和邏輯運算子,一些運算式的範例,如下所示: A + B – 1 A >= B A > B && A > 1 上述運算式變數A、B和數值1都屬於運算元,"+"、"-"、">="、">"和"&&"為運算子,Java運算子是使用1到3個字元所組成的符號。

41 3-4-1 運算子的優先順序

42 3-4-2 算術運算子 Java的「算術運算子」(Arithmetic Operators)是常用的數學運算子,大部分運算元都是數值,加法運算子還可以連結2個字串,在下表為各種運算子的範例,變數a的值為10,如下表所示:

43 3-4-3 關係與條件運算子-關係 「關係運算子」(Relational Operators)是使用迴圈和條件敘述的判斷條件,可以比較2個運算元間的關係,例如:"=="為true表示運算元相等,關係運算子的範例,如下表所示:

44 3-4-3 關係與條件運算子-條件 關係運算式如果比較複雜,不只一個關係運算式。Java提供6種「條件運算子」(Conditional Operators)可以連結多個關係運算式建立更複雜的關係運算式,如下表所示:

45 3-4-4 位元運算子 Java的「位元運算子」(Shift and Bitwise Operators)能夠進行二進位值的位元運算,提供向左移或右移幾個位元或NOT、AND、XOR和OR的位元運算,如下表所示:

46 3-4-5 指定運算子

47 3-5 Java的流程控制 3-5-1 是否選和二選一 3-5-2 多選一的條件敘述 3-5-3 ?:條件敘述運算子
3-5-4 for迴圈敘述 3-5-5 while與do/while迴圈敘述 3-5-6 break與continue指令敘述

48 3-5 Java的流程控制 Java的流程控制可以配合條件判斷來執行不同區塊的程式碼,或是重複執行指定區塊的程式碼,流程控制指令可以分為兩類,如下所示: 條件控制:條件控制是一個選擇題,可能是單一選擇或多選一,依照條件運算子的結果,決定執行哪一個區塊的程式碼。 迴圈控制:迴圈控制可以重複執行區塊的程式碼,其中擁有結束條件,結束迴圈的執行。

49 3-5-1 是否選和二選一-if是否選條件敘述 if條件敘述是一種是否執行的單選題,決定是否執行程式區塊內的程式碼,如果關係和條件運算結果為true,就執行括號間的程式區塊,例如:判斷成績是否及格的if條件敘述,如下所示: if ( score >= 60 ) { out.print("JSP網頁製作"); out.print("徹底研究-及格!<br>"); }

50 3-5-1 是否選和二選一-if/else二選一條件敘述
如果條件是擁有排它性的兩個執行區塊,需要二選一,只需加上else指令,if的關係/條件運算式為true時執行到else前的程式碼,false執行else之後的程式碼,例如:判斷學生成績及格或不及格的if/else條件敘述,如下所示: if ( score >= 60 ) { out.print("網頁製作"); out.print("成績及格<br>"); } else { out.print("成績不及格<br>");

51 3-5-2 多選一的條件敘述-if/else多選一條件敘述
在Java程式可以重複使用if/else條件建立多選一的條件敘述,例如:使用年齡判斷搭乘公車的乘客票價是學生、普通或敬老票,如下所示: if ( age <= 18 ) out.print("學生票:12元<br>"); else if ( age >= 65 ) out.print("敬老票:8元<br>"); out.print("普通票:15元<br>");

52 3-5-2 多選一的條件敘述-switch多選一條件敘述
Java的switch多條件敘述是依照符合的條件執行不同程式區塊的程式碼,例如:學生成績是使用GPA的A、B、C、D來打成績,我們可以使用switch條件敘述來顯示轉換的成績範圍,如下所示: switch (grade) { case 'A': out.print("學生成績超過80分<br>"); break; case 'B': out.print("學生成績為70~79分<br>"); ………. default: out.println("學生成績低於60分<br>"); }

53 3-5-3 ?:條件敘述運算子 Java的條件敘述運算子"?:"可以使用在指定敘述以條件來指定變數值,例如:12小時與24小時制的時間轉換條件敘述運算子,如下所示: hour = (hour >= 12) ? hour-12 : hour; 上述指定敘述的"="號右邊是條件敘述運算子,如同一個if/else條件,使用"?"符號代替if,":"符號代替else,如果條件為true,hour變數值為hour-12,false就是hour。

54 3-5-4 for迴圈敘述 Java的for迴圈稱為「計數迴圈」(Counting Loop),這是一種簡化的while迴圈,可以重複執行固定次數的程式區塊。 for迴圈預設擁有一個計數器,計數器每次增加或減少一個值,直到for迴圈的結束條件成立為止,例如:計算1加到10的總和,每次增加1,如下所示: for ( i = 1; i <= 10; i++ ) { out.print("數值: " + i + “<br>”); total += i; }

55 3-5-5 while與do/while迴圈敘述-while迴圈敘述
while迴圈敘述不同於for迴圈需要自己處理計數器的增減,while迴圈是在進入程式區塊的開頭檢查結束條件,如果條件為true才允許進入迴圈執行,例如:使用while和do/while迴圈建立巢狀迴圈來計算1加到n的總和,如下所示: while (counter <= 10 ) { total = 0; out.print("計算 1 加到 " + counter + " = "); // 計算總和的第二層do/while迴圈 counter1 = 0; do { total += counter1; counter1 += 1; } while ( counter1 <= counter ); out.print(total + "<br>"); // 顯示總和 counter += 1; }

56 3-5-5 while與do/while迴圈敘述-do/while迴圈敘述
do/while和while迴圈敘述的差異是在迴圈的結尾檢查結束條件,換句話說,do/while迴圈的程式區塊至少會執行一次,例如:在前述巢狀迴圈的第二層迴圈就是一個do/while迴圈,如下所示: counter1 = 0; do { total += counter1; counter1 += 1; } while ( counter1 <= counter );

57 3-5-6 break與continue指令敘述-break指令
break指令可以在某些條件成立時,強迫終止迴圈執行,如同switch條件敘述使用break指令敘述跳出程式區塊一般。 例如:在do/while無窮迴圈配合break指令計算5! 階層函數值,也就是計算1*2*3*4*5的值,如下所示: do { out.print("數值: " + i + "<br>"); result *= i; i++; if ( i > 5 ) break; } while ( true );

58 3-5-6 break與continue指令敘述-continue指令
在Java迴圈敘述的執行過程中,continue指令敘述可以馬上繼續執行下一次迴圈,不過它並不會執行程式區塊位在continue指令敘述後的程式碼,如果使用在for迴圈,一樣會自動更新計數器變數。 例如:活用迴圈和continue指令敘述計算1~10的偶數和,如下所示: for ( i = 1; i <= 10; i++ ) { if ( (i % 2) != 0 ) continue; out.print("數值: " + i + "<br>"); total += i; }

59 3-6 Java的陣列與字串 3-6-1 Java的陣列 3-6-2 字串處理

60 3-6-1 Java的陣列 -一維陣列(宣告) 整數的一維陣列宣告,如下所示:
int[] tips = {150, 300, 500}; 上述程式碼宣告int基本資料型態的陣列tips,int[]是一個類別,宣告陣列變數tips,然後使用大括號指定陣列元素值,所以並不用指定陣列尺寸,以此例一共有3個陣列元素。 在前面的程式碼是在宣告陣列變數時,就同時指定陣列內容,現在換一種方式,使用new運算子建立Array物件,例如:建立double資料型態的陣列儲存成績資料,如下所示: double[] scores = new double[6];

61 3-6-1 Java的陣列 -一維陣列(存取) 接著可以從索引值0開始,指定各陣列元素的內容,如下所示:
scores[0] = 66.5; scores[1] = 78.9; …… scores[5] = 64.5; 上述程式碼指定各陣列元素的值,我們也可以使用同樣方法取得陣列元素值,如下所示: sum += scores[i]; 上述程式碼取得陣列索引i的值,如果需要走訪整個陣列內容,只需使用一個for迴圈,就可以顯示陣列的每一個元素,如下所示: for ( i=0; i < scores.length; i++) { …… }

62 3-6-1 Java的陣列 -多維陣列(宣告) 在Java語言的Array物件可以包含其它Array物件,這就是Java語言的二維陣列或多維陣列,如下所示: int[][] grades = { { 54, 68 }, { 67, 78 }, { 89, 93 } }; 上述二維陣列是使用初始方式建立陣列元素值,如果沒有使用初始方式,可以使用for迴圈來建立二維陣列,如下所示: String[][] users = new String[3][]; for ( i=0; i < users.length; i++) users[i] = new String[2];

63 3-6-1 Java的陣列 -多維陣列(存取) 指定二維陣列的元素值的程式碼,如下所示:
users[0][0] = "Joe"; users[0][1] = "1234"; users[1][0] = "Jane"; users[1][1] = "5678"; users[2][0] = "Tony"; users[2][1] = "9012"; 上述程式碼設定二維陣列的元素值。同樣的方式,只需增加迴圈數,就可以將Array物件從二維擴充成多維陣列。

64 3-6-2 字串處理-建立字串 Java字串就是String物件,在Java程式使用String類別建立的字串物件屬於唯讀字串,Java可以直接使用字串文字值(一組字元集合使用「"」雙引號括起)來建立字串物件,如下所示: String str = "JSP網頁製作徹底研究"; Java提供數種String物件的建構子,可以使用new運算子建立String物件,如下所示: str1 = new String(); // 空字串 str2 = new String("Java 2程式設計範例教本2e"); str3 = new String(str2); // 使用字串物件 str4 = new String(charArr); // 使用字元陣列 str5 = new String(charArr, 0, 4); str6 = new String(byteArr); // 使用byte陣列

65 3-6-2 字串處理-字串長度與大小寫轉換 String物件提供方法取得字串長度和進行英文字串的大小寫轉換,相關String物件的方法,如下表所示:

66 3-6-2 字串處理-子字串搜尋 String物件相關子字串搜尋方法,如下表所示:

67 3-6-2 字串處理-子字串和字元處理 String物件提供方法取代和取出字串中所需的字元和子字串,相關方法如下表所示:

68 3-6-2 字串處理-字串的比較 String物件的字串可以一個字元一個字元比較字元的內碼值,直到分出大小為止。其相關方法如下表所示:


Download ppt "第3章 Java語法的JSP程式 3-1 Java語言的基礎 3-2 JSP程式的基本架構 3-3 Java的變數與資料型態"

Similar presentations


Ads by Google