Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Jsp

1,468 views

Published on

Published in: Education, Technology
  • Be the first to comment

  • Be the first to like this

Jsp

  1. 1. JSP 簡報 張景堯、廖峻鋒 應用系統組
  2. 2. Agenda <ul><li>JSP™ 環境安裝及 Tomcat 介紹 </li></ul><ul><li>Web Application 介紹 </li></ul><ul><li>JSP 規格架構與 MVC 樣式 </li></ul><ul><li>JSP 設計簡介 </li></ul><ul><li>JSP 及 JavaBeans 之整合與應用 </li></ul><ul><li>JSP 與 JDBC </li></ul><ul><li>定義 JSP 標籤 </li></ul>
  3. 3. 安裝 Tomcat <ul><li>檢查您的系統硬體和軟體規格是否符合 Tomcat 的規定 </li></ul><ul><ul><li>Tomcat 可以安裝在 windows, solaris 和 linux 作業系統 . </li></ul></ul><ul><ul><li>必須安裝 Java2 SDK 以上的版本 . </li></ul></ul><ul><li>可以從下面所列網站下載 Tomcat: </li></ul><ul><ul><li>http://jakarta.apache.org </li></ul></ul>
  4. 4. Tomcat 伺服器 4.0.1 <ul><li>符合 servlet2.3 和 JSP1.2 開發規格 </li></ul><ul><li>可以使用於獨立伺服器執行 Servlet 和 JSP </li></ul><ul><li>也可以整合 Apache WebServer </li></ul><ul><ul><li>利用 mod_webapp( 效能較好 ) </li></ul></ul><ul><ul><li>利用 Apache 內附的 mod_proxy </li></ul></ul><ul><li>佈署描述子定義較嚴謹 (web.xml 比 3.2 版嚴格 ) </li></ul><ul><ul><li>web.xml 沒寫好可能造成原來程式無法執行。 </li></ul></ul><ul><li>Tomcat 跟 Apache 一樣是免費的 </li></ul>
  5. 5. 環境設定 <ul><li>必須以 Web Application 型式佈署。 </li></ul><ul><li>將 Web Application 放在 webapps 目錄 : </li></ul><ul><ul><li>Tomcat4.0.1: HTML 和 JSP 放置於 TOMCAT_HOME/webapps/ </li></ul></ul><ul><li>執行 JSP –Tomcat: </li></ul><ul><ul><li>http//localhost:8080/yourApName/yourPage </li></ul></ul>
  6. 6. Demo <ul><li>架設 Tomcat4.0.1 伺服器。 </li></ul><ul><li>安裝 Web Application 。 </li></ul>
  7. 7. Web Application 是什麼 <ul><li>一群 servlets 、 html pages 、 classes 和其它相關資源的集合。 </li></ul><ul><li>這些資源在 Web Server 上提供了完整而特定的服務。 </li></ul><ul><li>好的 Web Application 應該不經改寫就能在各種 Container 上執行。 </li></ul>
  8. 8. 為 Web Application 命名 <ul><li>設計 Web Application 時,首先要先幫這個 application 取個名字,如 testAp 。 </li></ul><ul><li>到時候使用者利用 http://HostName:port/testAp/ 來執行這個 web application 。 </li></ul>
  9. 9. 註冊 Web Application <ul><li>要在 container 上執行 web application ,首先要註冊。 </li></ul><ul><ul><li>因為你要告訴 server 「當 URI 包含了 /test 時,去執行位於 c:tomcatwebappstest 的這一個 web application 。 」 </li></ul></ul>
  10. 10. 註冊 Web Application( 續 ) <ul><li>在 Tomcat4 中,只要你把你的 web application 放在 c:tomcatwebapps 下,重開時它會 自動把這個目錄的所有 web application 註冊 。 </li></ul><ul><li>如果不想重開,也可利用 /manager 系列 URL 指令來做登記動作。 </li></ul>
  11. 11. Web Application 的組成份子 <ul><li>Servlets 及 JSPs </li></ul><ul><li>公用程式類別檔 (classes 或 jar) </li></ul><ul><li>靜態檔案 (html 、圖檔或音樂 ) </li></ul><ul><li>Applets </li></ul><ul><li>web.xml( 佈署描述檔 ) </li></ul>
  12. 12. 典型的 Web Application 結構 <ul><li>/ </li></ul><ul><ul><li>放一般可視文件或 JSP </li></ul></ul><ul><li>/WEB-INF/classes/ </li></ul><ul><ul><li>放 classes 檔如 Servlet 或 JavaBean </li></ul></ul><ul><li>/WEB-INF/lib/ </li></ul><ul><ul><li>放 jar ,也就是壓成一個 .jar 後,的 Servlet 或 Classes 。 </li></ul></ul><ul><li>/WEB-INF/web.xml </li></ul><ul><ul><li>WebApplication 設定檔。 </li></ul></ul>
  13. 13. 典型的 Web Application 結構 -2 <ul><li>除了 /WEB-INF 對於使用者是不可見之外,其它的和一般的 Web 文件放置結都一樣。 </li></ul><ul><li>WEB-INF 中有一個必備的佈署描述檔 web.xml ,描述整個應用程式的架構及設定。 </li></ul><ul><li>lib 中應放置 .jar 檔案,而 classes 中放置未壓成 jar 的 servlet 或我們自己寫的一些 utilities 。 </li></ul>
  14. 14. web.xml <ul><li>在實作 Servlet2.3 及 JSP1.2 的 Web Container 中 web.xml 的重要性大增,如果 web.xml 沒設好,可能造成原有的 web Ap 完全不能運作。 </li></ul>
  15. 15. JSP 架構
  16. 16. JSP 應用程式設計
  17. 17. MVC 樣式 (Pattern)
  18. 18. MVC 樣式 (Pattern) <ul><li>應用程式層 (Model) </li></ul><ul><ul><li>將運算方法和資料封裝並與展示層分離 </li></ul></ul><ul><ul><li>例如 : 資料庫查詢 , 處理訂單 </li></ul></ul><ul><li>資料展示層 (View) </li></ul><ul><ul><li>收集使用者輸入資料 </li></ul></ul><ul><ul><li>顯示應用程式處理完成之資料 </li></ul></ul><ul><ul><li>顯示標籤 : HTML ,XML or Java Applet </li></ul></ul><ul><li>商業邏輯控制層 (Control) </li></ul><ul><ul><li>應用程式流程處理 </li></ul></ul><ul><ul><li>決定由展示層傳來之使用者需求並回應 </li></ul></ul>
  19. 19. JSP 是什麼 ? <ul><li>具備回傳動態文件內容給瀏覽器功能 </li></ul><ul><li>包含 HTML,XHTML, XML, 程式碼 , 和自訂 JSP 標籤 (HTML and XML tags) 功能並允許存取 Java 元件如 : JavaBeans </li></ul>
  20. 20. JSP 程式設計 <ul><li>JSP 程式包含 : </li></ul><ul><ul><li>固定之文字內容 </li></ul></ul><ul><ul><li>動態資料標籤 : </li></ul></ul><ul><ul><ul><li>Directive </li></ul></ul></ul><ul><ul><ul><li>Scripting element </li></ul></ul></ul><ul><ul><ul><li>Standard action </li></ul></ul></ul><ul><ul><ul><li>Custom tag </li></ul></ul></ul>
  21. 21. JSP 程式設計方法 <ul><li>JSP 1.2 的規格提供應用程式設計模型 </li></ul><ul><ul><li>提供 session 的管理 </li></ul></ul><ul><ul><li>透過 HTTP 協定的 request 和 response 與瀏覽器互動交談 </li></ul></ul><ul><ul><li>使用 Java 當作它的程式語言 </li></ul></ul><ul><li>使用 JavaBeans 當作它的元件模型 </li></ul>
  22. 22. JSP 好處 <ul><li>顯示內容和程式商業邏輯可透過自己定義標籤將其與畫面分離 </li></ul><ul><li>簡化開發 JSP </li></ul><ul><ul><li>JavaBeans 和自訂 JSP 標籤 </li></ul></ul><ul><li>透過使用軟體元件讓您設計的程式可以重複使用 </li></ul><ul><li>當 JSP 中程式有變動會自動重新編譯 </li></ul><ul><li>編輯修改容易 </li></ul><ul><li>與作業系統平台無關 </li></ul>
  23. 23. JSP 程式如何運作 <ul><li>“ JSP page” </li></ul><ul><ul><li>混合文字 , Script 和 directives </li></ul></ul><ul><ul><li>文字可以是 text/ html, text/ xml 或 text/ plain </li></ul></ul><ul><li>“ JSP 引擎” </li></ul><ul><ul><li>編譯 JSP page 成 servlet </li></ul></ul><ul><ul><li>執行 servlet 內的 service() 方法 </li></ul></ul><ul><ul><li>傳送文字內容回給呼叫者 </li></ul></ul><ul><li>JSP Page </li></ul><ul><ul><li>編譯一次 </li></ul></ul><ul><ul><li>執行很多次 </li></ul></ul>
  24. 24. JSP 設計方法
  25. 25. Demo <ul><li>一個簡單的 JSP Page HelloWorld.jsp </li></ul>
  26. 26. ‘ out’ 變數 <ul><li>屬於 javax . servlet . jsp . JspWriter </li></ul><ul><ul><li>被利用來傳送文字資料給客戶端 </li></ul></ul><ul><li>JspWriter 資料會被緩衝 , 放在伺服器內 </li></ul><ul><ul><li>因為我們可能傳送或轉送 request </li></ul></ul><ul><ul><li>轉送 (redirect) 會因為資料已經傳到客戶端而失效 </li></ul></ul>
  27. 27. 輸出製作 <ul><li>JSP page 內任何文字會自動寫入到瀏覽器 </li></ul><ul><ul><li>out. write(&quot;< book name= 'JSP' />&quot;); </li></ul></ul><ul><li>Scriptlet 可以直接使用 ‘ out’ 變數 </li></ul><ul><ul><li><% out. write(“ Homer Rules”); %> </li></ul></ul><ul><li>可以使用下列表示法輸出文字資料 </li></ul><ul><ul><li><value> value is <%= b. getValue() %></ value> </li></ul></ul><ul><ul><li>產生 </li></ul></ul><ul><ul><li>out. print(&quot;< value> value is &quot;+b. getValue() +&quot;</ value>&quot;) </li></ul></ul>
  28. 28. Scriptlets <ul><li><% /* code goes here*/ %> </li></ul><ul><ul><li>產生 servlet 時會被拷貝到 _ jspService 的方法中 </li></ul></ul><ul><ul><li>範例 </li></ul></ul><ul><ul><ul><li><% int j; %> </li></ul></ul></ul><ul><ul><ul><li><% for (j=0; j<3; j++) {%> </li></ul></ul></ul><ul><ul><ul><li><value> </li></ul></ul></ul><ul><ul><ul><li><% out. print(&quot;&quot;+ j); %> </li></ul></ul></ul><ul><ul><ul><li></value> </li></ul></ul></ul><ul><ul><ul><li><% } %> </li></ul></ul></ul><ul><ul><li>輸出結果 </li></ul></ul><ul><ul><ul><li><value> 0</ value> </li></ul></ul></ul><ul><ul><ul><li><value> 1</ value> </li></ul></ul></ul><ul><ul><ul><li><value> 2</ value> </li></ul></ul></ul>
  29. 29. 'include' Directive <ul><li>使用在要包含其他資源時 </li></ul><ul><ul><li><%@ include file=“somefile. txt” %> </li></ul></ul><ul><ul><li><%@ include file=“ somefile. jsp” %> </li></ul></ul><ul><li>編譯階段就會包含進入程式中 </li></ul><ul><ul><li>在編譯階段資料實體就會包含進入程式中 </li></ul></ul><ul><ul><li>也可以在‘ run- time’ 做如使用 RequestDispatcher 將資料轉給其他程式使用 </li></ul></ul>
  30. 30. JSP Page 中的 Actions <ul><li>“ JSP engine” 所要完成的工作 </li></ul><ul><li>系統標準 Action 及自己定義 Action </li></ul><ul><ul><li>系統標準 Action 必須由所有“ JSP engine” 實作 </li></ul></ul><ul><ul><li>自行定義 Action 必須定義 tag libraries </li></ul></ul><ul><li>有名稱及屬性 </li></ul><ul><ul><li><jsp: useBean id=“ someName” class=“ someclass” /> </li></ul></ul><ul><ul><li><jsp: setProperty name=“ someName” property=“*” /> </li></ul></ul>
  31. 31. 什麼是 JavaBeans? <ul><li>以 Java ™ 技術為基礎的元件 </li></ul><ul><li>具備可攜性與作業平台無關可重複使用之特性 </li></ul><ul><li>必須有一個不提供參數之 public constructor </li></ul><ul><li>屬性一般都不是 public, 必須透過下列 public method 存取資料 </li></ul><ul><ul><li>getXXX() </li></ul></ul><ul><ul><li>isXXX()- 當讀取 boolean 值時 </li></ul></ul><ul><ul><li>setXXX() </li></ul></ul>
  32. 32. JSP 與 JavaBeans
  33. 33. 使用 JavaBeans 元件 - 系統標準 Action 做法 <ul><li>使用 jsp:useBean </li></ul><ul><ul><li><jsp:useBean id =&quot;clock&quot; class =“calendar.JspCalendar” /> </li></ul></ul><ul><ul><li><%calendar.JspCalendar clock= new calendar.JspCalendar();%> </li></ul></ul><ul><li>讀取 Bean 的屬性 </li></ul><ul><ul><li><jsp:getProperty name =“customer” property =“name” /> </li></ul></ul><ul><ul><li><%=customer.ge tName() %> </li></ul></ul><ul><li>設定 Bean 的屬性 </li></ul><ul><ul><li><jsp:setProperty name =“customer” property =“name” param =“name” /> </li></ul></ul><ul><ul><li><%=customer.se tName(&quot;username&quot;) %> </li></ul></ul>
  34. 34. Bean 的屬性 <ul><li>Bean 的命名規則依照一般通用法則 </li></ul><ul><ul><li>屬性名稱必須以小寫開頭 </li></ul></ul><ul><ul><ul><li>String startDate </li></ul></ul></ul><ul><ul><li>屬性設定及取得方法取名時開頭必須大寫 </li></ul></ul><ul><ul><ul><li>String getStartDate() </li></ul></ul></ul><ul><ul><ul><li>void setStartDate( String) </li></ul></ul></ul>
  35. 35. 在 JSP 內使用“ Java 物件” <ul><li>使用 script </li></ul><ul><ul><li><% java.util.Date dte =new java.util.Date(); %> </li></ul></ul><ul><li>使用 actions </li></ul><ul><ul><li><jsp: useBean id=&quot;dte&quot; class=&quot;java.util.Date&quot; /> </li></ul></ul><ul><li>useBean 可以指定物件生命週期 </li></ul><ul><ul><li><jsp: useBean id=&quot;dte&quot; class=&quot;java.util.Date&quot; scope=&quot;session&quot; /> </li></ul></ul><ul><ul><li>範圍 scope 可為下列其中之一 </li></ul></ul><ul><ul><ul><li>page, request, session, application </li></ul></ul></ul>
  36. 36. jsp: usebean 語法 <ul><li>如果 bean 的物件被產生的話 [body] 會被執行 </li></ul><ul><ul><li><jsp: useBean id=“Name” class=“classname” scope=“page|request|session|application”> </li></ul></ul><ul><ul><li>[body] </li></ul></ul><ul><ul><li></ jsp: useBean> </li></ul></ul><ul><ul><li>// or – if bean has no body </li></ul></ul><ul><ul><li><jsp: useBean id=“Name” class=“classname” scope=“page|request|session|application” /> </li></ul></ul><ul><ul><li>範例 </li></ul></ul><ul><ul><ul><li><jsp: useBean id=“Diary” class=“com.develop.jsp.DiaryTable” scope=“page” /> </li></ul></ul></ul>
  37. 37. Bean 的執行 <ul><li><jsp: useBean id=&quot;xxx&quot; class=&quot;yyy&quot; scope=&quot;zzz&quot;/> </li></ul><ul><li>“ JSP 引擎” 會根據屬性值找到 bean 的位置並執行 </li></ul><ul><li>定義變數名稱 : ‘id’ </li></ul><ul><li>如果在系統內已存在物件 </li></ul><ul><ul><li>直接讀取 Session 或 Request 範圍內之物件 </li></ul></ul><ul><li>如果沒有找到物件 </li></ul><ul><ul><li>製造產生物件 </li></ul></ul><ul><ul><li>將變數和物件關聯 </li></ul></ul><ul><ul><li>將物件儲存於適當的變數範圍 </li></ul></ul><ul><ul><li>useBean 內程式會被執行 </li></ul></ul>
  38. 38. Page 範圍內的 Beans <ul><li>bean 的生命週期範圍 scope=“page” </li></ul><ul><ul><li>當每一次存取 page,bean 物件就會被製作產生 </li></ul></ul><ul><ul><li>Bean 可以在先前產生 </li></ul></ul><ul><ul><li>會儲存於 pageContext 中 </li></ul></ul><ul><ul><li>範例: </li></ul></ul><ul><ul><ul><li><jsp: useBean id=“logonBean” class=“ewebjava.LogonBean” scope=“page”> </li></ul></ul></ul><ul><ul><ul><li>… </li></ul></ul></ul><ul><ul><ul><li></ jsp: useBean> </li></ul></ul></ul>
  39. 39. Request 範圍內的 Beans <ul><li>bean 的生命週期範圍 scope=“request” </li></ul><ul><ul><li>當 request 被觸發時 ,bean 物件就會被製作產生 </li></ul></ul><ul><ul><li>Bean 會被儲存於 request 中 (ServletRequest. setAttribute) </li></ul></ul><ul><ul><li>當 JSP page 中已有 Bean 存在而被重新導向 (forward) 新 JSPpage 時此時 Bean 可以被再利用 </li></ul></ul><ul><ul><li>範例: </li></ul></ul><ul><ul><ul><li><jsp: useBean id=“logonBean” class=“ewebjava.LogonBean” scope=“request”> </li></ul></ul></ul><ul><ul><ul><li>… </li></ul></ul></ul><ul><ul><ul><li></ jsp: useBean> </li></ul></ul></ul>
  40. 40. Session 範圍內的 Beans <ul><li>bean 的生命週期範圍 scope=“session” </li></ul><ul><ul><li>當每一次 session 開始後 ,bean 物件就會被製作產生 </li></ul></ul><ul><ul><li>儲存於 session 物件 </li></ul></ul><ul><ul><li>範例: </li></ul></ul><ul><ul><ul><li><jsp: useBean id=“logonBean” class=“ewebjava.LogonBean” scope=“session”> </li></ul></ul></ul><ul><ul><ul><li>… </li></ul></ul></ul><ul><ul><ul><li></ jsp: useBean> </li></ul></ul></ul>
  41. 41. Application 範圍內的 Beans <ul><li>bean 的生命週期範圍 scope=“application” </li></ul><ul><ul><li>當 Web 伺服器載入 Bean 時物件就會被製作產生 </li></ul></ul><ul><ul><li>Bean 可以在先前產生 </li></ul></ul><ul><ul><li>Bean 儲存於 application 物件 </li></ul></ul><ul><ul><li>範例: </li></ul></ul><ul><ul><ul><li><jsp: useBean id=“logonBean” class=“ewebjava.LogonBean” scope=“application”> </li></ul></ul></ul><ul><ul><ul><li>… </li></ul></ul></ul><ul><ul><ul><li></ jsp: useBean> </li></ul></ul></ul>
  42. 42. Demo <ul><li>使用 JavaBean 儲存表單資料。 </li></ul>
  43. 43. JSP+Bean(JDBC)
  44. 44. JDBC- 指定 JDBC Driver <ul><li>指定 JDBC Driver </li></ul><ul><ul><li>程式碼 :Class.forName(“DRIVER_NAME”).newInstance(); </li></ul></ul><ul><ul><li>DRIVER_NAME 代表你資料庫的 JDBC 類別全名。如 :” com.informix.jdbc.IfxDriver” </li></ul></ul><ul><ul><li>為了使程式有彈性 DRIVER_NAME 可寫在屬性檔中。 </li></ul></ul><ul><ul><li>newInstance() 最好都加,因為有的 JVM 實作強迫要有這一行。 </li></ul></ul>
  45. 45. JDBC- 建立 Connection <ul><li>建立 Connection </li></ul><ul><ul><li>程式碼 :Connection conn=DriveManager.getConnection(“URL”) ; </li></ul></ul><ul><ul><li>URL 在 Informix 上使用的話是” jdbc:informix-sqli://(IP): (PORT)/(DBNAME):INFORMIXSERVER=(SERVERNAME);user=(USERNAME);password=(PASSWORD)” </li></ul></ul>
  46. 46. JDBC- 建立 Statement <ul><li>建立 Statement </li></ul><ul><ul><li>程式碼 :Statement stmt= Connection.createStatement(int resultSetType,int resultSetConcurrency) ; </li></ul></ul><ul><ul><li>resultSetType </li></ul></ul><ul><ul><ul><li>TYPE_FORWARD_ONLY 告訴系統讀取資料列時只向前捲動。 </li></ul></ul></ul><ul><ul><ul><li>TYPE_SCROLL_SENSITIVE 修改後馬上反映在 ResultSet 中。 </li></ul></ul></ul><ul><ul><ul><li>TYPE_SCROLL_INSENSITIVE 修改後不反映在 ResultSet 中,除非重開 statement 。 </li></ul></ul></ul><ul><ul><li>resultSetConcurrency </li></ul></ul><ul><ul><ul><li>CONCUR_READ_ONLY 告訴系統將不修改 ResutlSet </li></ul></ul></ul><ul><ul><ul><li>CONCUR_UPDATABLE 告訴系統將會修改 ResutlSet </li></ul></ul></ul><ul><ul><ul><li>Default </li></ul></ul></ul><ul><ul><li>如果不加任何參數,預設是 TYPE_FORWARD_ONLY 及 CONCUR_READ_ONLY 。 </li></ul></ul>
  47. 47. JDBC- 下 SQL <ul><li>下 SQL </li></ul><ul><ul><li>程式碼 :stmt.executeQuery(SQL); 或 stmt.executeUpdate(SQL) ; </li></ul></ul><ul><ul><li>SQL: 代表你要下的 SQL </li></ul></ul><ul><ul><li>如果只是查詢,則使用 executeQuery 就好了,傳回 ResultSet 。 </li></ul></ul><ul><ul><li>如果是 Update ,則使用 executeUpdate ,傳回受影響的行數。 </li></ul></ul>
  48. 48. JDBC- 處理 ResutlSet <ul><li>處理 ResutlSet </li></ul><ul><li>afterLast();beforeFirst();first();last();absolute(n);relative(n);isLast();isFirst();getRow();next();previous(); </li></ul><ul><li>增加效能 </li></ul><ul><ul><li>事先告知系統要 fetch 的方向 ResultSet.setFetchDirection(FETCH_FORWARD 或 FETCH_REVERSE); 。 </li></ul></ul><ul><ul><li>事先告知系統要先抓 n 筆。 ResultSet.setFetchSize(n); 。 </li></ul></ul><ul><li>要得到行數可以先 last() 再 getRow(); </li></ul>
  49. 49. JDBC- 關閉資料庫 <ul><li>關閉資料庫 </li></ul><ul><ul><li>Conn.close(); </li></ul></ul><ul><ul><li>一般加在 finally 中。 </li></ul></ul><ul><ul><li>範例 </li></ul></ul><ul><ul><ul><li>if(conn!=null) </li></ul></ul></ul><ul><ul><ul><li>{ </li></ul></ul></ul><ul><ul><ul><ul><li>try{conn.close();} </li></ul></ul></ul></ul><ul><ul><ul><ul><li>catch(SQLException e) </li></ul></ul></ul></ul><ul><ul><ul><ul><li>{e.printStackTrace();} </li></ul></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul>
  50. 50. Tag 函式庫 簡介 <ul><li>JSP 提供一組事先定義好的標籤 </li></ul><ul><ul><li><jsp: useBean …/> </li></ul></ul><ul><li>看起來像 XML 標籤 </li></ul><ul><li>自訂標籤會對應一支 Java 程式 </li></ul><ul><li>可以定義出新標籤 </li></ul><ul><ul><li>可以由 JSP page 編輯人員所使用 </li></ul></ul><ul><ul><li>當標籤被使用時“ Java 程式碼”會被執行 </li></ul></ul><ul><li>能夠將 Java 程式碼跟 JSP 內容分離使用 </li></ul><ul><ul><li>將畫面資料及程式邏輯分離 </li></ul></ul>
  51. 51. Tag 函式庫可以做… <ul><li>處理 SQL 指令 </li></ul><ul><li>分析 XML 語法及輸出 HTML </li></ul><ul><li>每次 request 都會被呼叫來初始化 script 變數 </li></ul><ul><li>將 ResultSet 中資料反覆找出輸出成 HTML 的表格 </li></ul>
  52. 52. 總結 <ul><li>透過 Web Application 觀念部署你的應用軟體 </li></ul><ul><li>JSP ™ 技術能夠讓非程式設計人員開發動態網頁內容 </li></ul><ul><li>JSP ™ 技術允許程式設計人員及網頁設計人員分工合作製作 Web 應用程式 </li></ul><ul><li>JSP ™ 使用 Java ™ 程式語言當作它的 scriptlet </li></ul><ul><li>JSP ™ 技術鼓勵您整合使用 JavaBeans™ 元件技術 </li></ul><ul><li>自定標籤函式 (tag libraries) 允許您使用自己定義標籤撰寫屬於你的標籤 Java 程式以取代複雜的程式邏輯 </li></ul>

×