1 / 52

JSP 簡報

JSP 簡報. 張景堯、廖峻鋒 應用系統組. Agenda. JSP™ 環境安裝及 Tomcat 介紹 Web Application 介紹 JSP 規格架構與 MVC 樣式 JSP 設計簡介 JSP 及 JavaBeans 之整合與應用 JSP 與 JDBC 定義 JSP 標籤. 安裝 Tomcat. 檢查您的系統硬體和軟體規格是否符合 Tomcat 的規定 Tomcat 可以安裝在 windows, solaris 和 linux 作業系統 . 必須安裝 Java2 SDK 以上的版本 . 可以從下面所列網站下載 Tomcat:

zorion
Download Presentation

JSP 簡報

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. JSP簡報 張景堯、廖峻鋒 應用系統組

  2. Agenda • JSP™環境安裝及Tomcat介紹 • Web Application介紹 • JSP規格架構與MVC樣式 • JSP設計簡介 • JSP及JavaBeans之整合與應用 • JSP與JDBC • 定義JSP標籤

  3. 安裝Tomcat • 檢查您的系統硬體和軟體規格是否符合Tomcat的規定 • Tomcat 可以安裝在windows, solaris 和linux 作業系統. • 必須安裝Java2 SDK 以上的版本. • 可以從下面所列網站下載Tomcat: • http://jakarta.apache.org

  4. Tomcat伺服器4.0.1 • 符合servlet2.3和JSP1.2開發規格 • 可以使用於獨立伺服器執行Servlet和JSP • 也可以整合Apache WebServer • 利用mod_webapp(效能較好) • 利用Apache內附的mod_proxy • 佈署描述子定義較嚴謹(web.xml比3.2版嚴格) • web.xml沒寫好可能造成原來程式無法執行。 • Tomcat 跟Apache一樣是免費的

  5. 環境設定 • 必須以Web Application型式佈署。 • 將Web Application放在webapps 目錄: • Tomcat4.0.1: HTML 和JSP 放置於TOMCAT_HOME/webapps/ • 執行JSP –Tomcat: • http//localhost:8080/yourApName/yourPage

  6. Demo • 架設Tomcat4.0.1伺服器。 • 安裝Web Application。

  7. Web Application是什麼 • 一群servlets、html pages、classes和其它相關資源的集合。 • 這些資源在Web Server上提供了完整而特定的服務。 • 好的Web Application應該不經改寫就能在各種Container上執行。

  8. 為Web Application命名 • 設計Web Application時,首先要先幫這個application取個名字,如testAp。 • 到時候使用者利用http://HostName:port/testAp/來執行這個web application。

  9. 註冊Web Application • 要在container上執行web application,首先要註冊。 • 因為你要告訴server「當URI包含了/test時,去執行位於c:\tomcat\webapps\test\的這一個web application。 」

  10. 註冊Web Application(續) • 在Tomcat4中,只要你把你的web application放在c:\tomcat\webapps\下,重開時它會自動把這個目錄的所有web application註冊。 • 如果不想重開,也可利用/manager系列URL指令來做登記動作。

  11. Web Application的組成份子 • Servlets及JSPs • 公用程式類別檔(classes或jar) • 靜態檔案(html、圖檔或音樂) • Applets • web.xml(佈署描述檔)

  12. 典型的Web Application結構 • / • 放一般可視文件或JSP • /WEB-INF/classes/ • 放classes檔如Servlet或JavaBean • /WEB-INF/lib/ • 放jar,也就是壓成一個.jar後,的Servlet或Classes。 • /WEB-INF/web.xml • WebApplication設定檔。

  13. 典型的Web Application結構-2 • 除了/WEB-INF 對於使用者是不可見之外,其它的和一般的Web 文件放置結都一樣。 • WEB-INF 中有一個必備的佈署描述檔web.xml,描述整個應用程式的架構及設定。 • lib 中應放置.jar 檔案,而classes 中放置未壓成jar 的servlet 或我們自己寫的一些utilities。

  14. web.xml • 在實作Servlet2.3及JSP1.2的Web Container中web.xml的重要性大增,如果web.xml沒設好,可能造成原有的web Ap完全不能運作。

  15. JSP架構

  16. JSP 應用程式設計

  17. MVC 樣式(Pattern)

  18. MVC 樣式(Pattern) • 應用程式層(Model) • 將運算方法和資料封裝並與展示層分離 • 例如:資料庫查詢,處理訂單 • 資料展示層(View) • 收集使用者輸入資料 • 顯示應用程式處理完成之資料 • 顯示標籤: HTML ,XML or Java Applet • 商業邏輯控制層(Control) • 應用程式流程處理 • 決定由展示層傳來之使用者需求並回應

  19. JSP 是什麼? • 具備回傳動態文件內容給瀏覽器功能 • 包含HTML,XHTML, XML, 程式碼, 和自訂JSP 標籤(HTML and XML tags) 功能並允許存取Java元件如: JavaBeans

  20. JSP程式設計 • JSP程式包含: • 固定之文字內容 • 動態資料標籤: • Directive • Scripting element • Standard action • Custom tag

  21. JSP 程式設計方法 • JSP 1.2 的規格提供應用程式設計模型 • 提供session的管理 • 透過HTTP協定的request和response與瀏覽器互動交談 • 使用Java 當作它的程式語言 • 使用JavaBeans當作它的元件模型

  22. JSP 好處 • 顯示內容和程式商業邏輯可透過自己定義標籤將其與畫面分離 • 簡化開發JSP • JavaBeans 和自訂JSP 標籤 • 透過使用軟體元件讓您設計的程式可以重複使用 • 當JSP中程式有變動會自動重新編譯 • 編輯修改容易 • 與作業系統平台無關

  23. JSP程式如何運作 • “JSP page” • 混合文字, Script 和directives • 文字可以是text/ html, text/ xml 或text/ plain • “JSP 引擎” • 編譯 JSP page 成servlet • 執行servlet 內的service() 方法 • 傳送文字內容回給呼叫者 • JSP Page • 編譯一次 • 執行很多次

  24. JSP設計方法

  25. Demo • 一個簡單的JSP Page HelloWorld.jsp

  26. ‘out’變數 • 屬於javax.servlet.jsp.JspWriter • 被利用來傳送文字資料給客戶端 • JspWriter 資料會被緩衝,放在伺服器內 • 因為我們可能傳送或轉送request • 轉送(redirect)會因為資料已經傳到客戶端而失效

  27. 輸出製作 • JSP page內任何文字會自動寫入到瀏覽器 out. write("< book name= 'JSP' />"); • Scriptlet可以直接使用‘out’ 變數 <% out. write(“ Homer Rules”); %> • 可以使用下列表示法輸出文字資料 <value> value is <%= b. getValue() %></ value> • 產生 out. print("< value> value is "+b. getValue() +"</ value>")

  28. Scriptlets • <% /* code goes here*/ %> • 產生servlet 時會被拷貝到_jspService的方法中 • 範例 <% int j; %> <% for (j=0; j<3; j++) {%> <value> <% out. print(""+ j); %> </value> <% } %> • 輸出結果 • <value> 0</ value> • <value> 1</ value> • <value> 2</ value>

  29. 'include' Directive • 使用在要包含其他資源時 <%@ include file=“somefile. txt” %> <%@ include file=“ somefile. jsp” %> • 編譯階段就會包含進入程式中 • 在編譯階段資料實體就會包含進入程式中 • 也可以在‘run- time’做如使用RequestDispatcher 將資料轉給其他程式使用

  30. JSP Page 中的Actions • “JSP engine”所要完成的工作 • 系統標準Action及自己定義Action • 系統標準Action必須由所有“JSP engine” 實作 • 自行定義Action 必須定義tag libraries • 有名稱及屬性 <jsp: useBean id=“ someName” class=“ someclass” /> <jsp: setProperty name=“ someName” property=“*” />

  31. 什麼是JavaBeans? • 以Java ™技術為基礎的元件 • 具備可攜性與作業平台無關可重複使用之特性 • 必須有一個不提供參數之public constructor • 屬性一般都不是public,必須透過下列public method存取資料 • getXXX() • isXXX()-當讀取boolean值時 • setXXX()

  32. JSP與JavaBeans

  33. 使用JavaBeans元件-系統標準Action 做法 • 使用jsp:useBean • <jsp:useBean id="clock" class=“calendar.JspCalendar” /> • <%calendar.JspCalendar clock= new calendar.JspCalendar();%> • 讀取Bean的屬性 • <jsp:getProperty name=“customer” property=“name” /> • <%=customer.getName() %> • 設定Bean的屬性 • <jsp:setProperty name=“customer” property=“name” param=“name” /> • <%=customer.setName("username") %>

  34. Bean的屬性 • Bean的命名規則依照一般通用法則 • 屬性名稱必須以小寫開頭 String startDate • 屬性設定及取得方法取名時開頭必須大寫 String getStartDate() void setStartDate( String)

  35. 在JSP內使用“Java 物件” • 使用 script <% java.util.Date dte =new java.util.Date(); %> • 使用 actions <jsp: useBean id="dte" class="java.util.Date" /> • useBean 可以指定物件生命週期 • <jsp: useBean id="dte" class="java.util.Date" scope="session" /> • 範圍scope可為下列其中之一 • page, request, session, application

  36. jsp: usebean語法 • 如果bean的物件被產生的話[body] 會被執行 <jsp: useBean id=“Name” class=“classname” scope=“page|request|session|application”> [body] </ jsp: useBean> // or – if bean has no body <jsp: useBean id=“Name” class=“classname” scope=“page|request|session|application” /> • 範例 <jsp: useBean id=“Diary” class=“com.develop.jsp.DiaryTable” scope=“page” />

  37. Bean的執行 • <jsp: useBean id="xxx" class="yyy" scope="zzz"/> • “JSP 引擎” 會根據屬性值找到bean的位置並執行 • 定義變數名稱: ‘id’ • 如果在系統內已存在物件 • 直接讀取Session或Request範圍內之物件 • 如果沒有找到物件 • 製造產生物件 • 將變數和物件關聯 • 將物件儲存於適當的變數範圍 • useBean內程式會被執行

  38. Page範圍內的Beans • bean的生命週期範圍scope=“page” • 當每一次存取page,bean物件就會被製作產生 • Bean可以在先前產生 • 會儲存於pageContext 中 • 範例: <jsp: useBean id=“logonBean” class=“ewebjava.LogonBean” scope=“page”> … </ jsp: useBean>

  39. Request範圍內的Beans • bean的生命週期範圍scope=“request” • 當request被觸發時,bean物件就會被製作產生 • Bean 會被儲存於request中(ServletRequest. setAttribute) • 當JSP page 中已有Bean存在而被重新導向(forward)新JSPpage時此時Bean可以被再利用 • 範例: <jsp: useBean id=“logonBean” class=“ewebjava.LogonBean” scope=“request”> … </ jsp: useBean>

  40. Session範圍內的Beans • bean的生命週期範圍scope=“session” • 當每一次session開始後,bean物件就會被製作產生 • 儲存於session物件 • 範例: <jsp: useBean id=“logonBean” class=“ewebjava.LogonBean” scope=“session”> … </ jsp: useBean>

  41. Application範圍內的Beans • bean的生命週期範圍scope=“application” • 當Web伺服器載入Bean時物件就會被製作產生 • Bean 可以在先前產生 • Bean儲存於application物件 • 範例: <jsp: useBean id=“logonBean” class=“ewebjava.LogonBean” scope=“application”> … </ jsp: useBean>

  42. Demo • 使用JavaBean儲存表單資料。

  43. JSP+Bean(JDBC)

  44. JDBC-指定JDBC Driver • 指定JDBC Driver • 程式碼:Class.forName(“DRIVER_NAME”).newInstance(); • DRIVER_NAME代表你資料庫的JDBC類別全名。如:” com.informix.jdbc.IfxDriver” • 為了使程式有彈性DRIVER_NAME可寫在屬性檔中。 • newInstance()最好都加,因為有的JVM實作強迫要有這一行。

  45. JDBC-建立Connection • 建立Connection • 程式碼:Connection conn=DriveManager.getConnection(“URL”) ; • URL在Informix上使用的話是” jdbc:informix-sqli://(IP): (PORT)/(DBNAME):INFORMIXSERVER=(SERVERNAME);user=(USERNAME);password=(PASSWORD)”

  46. JDBC-建立Statement • 建立Statement • 程式碼:Statement stmt= Connection.createStatement(int resultSetType,int resultSetConcurrency) ; • resultSetType • TYPE_FORWARD_ONLY告訴系統讀取資料列時只向前捲動。 • TYPE_SCROLL_SENSITIVE修改後馬上反映在ResultSet中。 • TYPE_SCROLL_INSENSITIVE修改後不反映在ResultSet中,除非重開statement。 • resultSetConcurrency • CONCUR_READ_ONLY告訴系統將不修改ResutlSet • CONCUR_UPDATABLE告訴系統將會修改ResutlSet • Default • 如果不加任何參數,預設是TYPE_FORWARD_ONLY及CONCUR_READ_ONLY。

  47. JDBC-下SQL • 下SQL • 程式碼:stmt.executeQuery(SQL);或stmt.executeUpdate(SQL) ; • SQL:代表你要下的SQL • 如果只是查詢,則使用executeQuery就好了,傳回ResultSet。 • 如果是Update,則使用executeUpdate,傳回受影響的行數。

  48. JDBC-處理ResutlSet • 處理ResutlSet • afterLast();beforeFirst();first();last();absolute(n);relative(n);isLast();isFirst();getRow();next();previous(); • 增加效能 • 事先告知系統要fetch的方向ResultSet.setFetchDirection(FETCH_FORWARD或FETCH_REVERSE);。 • 事先告知系統要先抓n筆。ResultSet.setFetchSize(n);。 • 要得到行數可以先last()再getRow();

  49. JDBC-關閉資料庫 • 關閉資料庫 • Conn.close(); • 一般加在finally中。 • 範例 if(conn!=null) { try{conn.close();} catch(SQLException e) {e.printStackTrace();} }

  50. Tag函式庫簡介 • JSP 提供一組事先定義好的標籤 • <jsp: useBean …/> • 看起來像XML標籤 • 自訂標籤會對應一支Java程式 • 可以定義出新標籤 • 可以由JSP page編輯人員所使用 • 當標籤被使用時“Java 程式碼”會被執行 • 能夠將Java程式碼跟JSP內容分離使用 • 將畫面資料及程式邏輯分離

More Related