DevelopingwithNCCUWebApplicationFramework-AdministrativeAffairsManagementSystem,NCCU,TaiwanChun-FengLiaoApr15,2003NCCUComputerCenter國立政治大學電子計算機中心政大校務行政系統的新面貌使用最新的J2EE前端技術(JSP1.2/Servlet2.3)。使用BEAWeblogic7.0做為應用程式伺服器。使用Informix做為後端資料庫。國立政治大學電子計算機中心校務行政系統入口可以用學生、職員或老師身份登入,系統會自行判斷,再自動導依各種身份的登入程序加以處理。國立政治大學電子計算機中心單一登入與系統選單開發人員不用需要煩惱代理人功能,這一塊完全由Framework處理。國立政治大學電子計算機中心ApplicationBridgeApplicationBridge就是SSO系統和你新開發的WebAp之間的橋樑,不需任何程式碼。而且對於舊的WebAp也不需任何更動。國立政治大學電子計算機中心ServerControls使用ServerControls配合JSTL和MVCHelper,你可以輕鬆達成畫面上沒有Java程式碼的目標,而且用更直覺的方式控制畫面的顯示。國立政治大學電子計算機中心ErrorHandling只要先寫好error.xml設定錯誤的標題、說明及處理方式,Framework的元件會自動幫你產生錯誤網頁,完全不需寫任何程式或JSP。國立政治大學電子計算機中心Agenda簡介利用ServerControls開發外觀一致的WebAp快速開發MVC網頁存取控制登入處理錯誤處理SingleSign-on.資料處理國立政治大學電子計算機中心FrameworkOverviewUserInterface–產生一致的網頁風格。MVCHelper–讓開發人員很容易就能利用MVC模式來寫web應用程式。Security–登入及防止user直接存取。ErrorHandling–產生一致的錯誤網頁。DataAccess–IfxDB、DbName的註冊及取得機制。Singlesign-on–定義SSO機制以及如何和其它的應用程式接軌。ClassLibrary–其它公用程式。國立政治大學電子計算機中心Lab0環境設定國立政治大學電子計算機中心如何提供一致的畫面希望整個校務系統能有一致的風格。為了避免畫面錯亂,不用Frame處理。如果Layout要更換,不希望動到所有的程式。國立政治大學電子計算機中心解決方法:ServerControl模仿ASP.NET的做法,將我們需要的功能包成ServerControls。完全相容於JSTL1.0的ExpressionLanguage。i.e可以在我們的tag中執行EL。國立政治大學電子計算機中心ServerControl範例nccu:htmlnccu:headerpageTitle=“網頁標題”contentType=text/htmlencoding=big5%--html標頭區,有其它標頭設定或javascript可放在這--%/nccu:headernccu:bodyapname=“行政系統”userName=“${sessionScope.chname}“message=“${sessionScope.apname}”%--在這裏開始寫JSP--%/nccu:body/nccu:html國立政治大學電子計算機中心ServerControl國立政治大學電子計算機中心Lab1UIDemo國立政治大學電子計算機中心MVCHelper:協助開發者快速開發MVCWeb應用程式Struts很難學,而且在JavaServerFaces出來後可能會被取代。不要讓開發人員為了寫MVC反而無法專注於寫真正要處理的邏輯國立政治大學電子計算機中心國立政治大學電子計算機中心MVCHelper:幫開發者處理細節改良自OreillyJavaServerPages建議之MVC實作方式。使用者寫作Action物件時只要繼承AbstractAction類別,並實作perform()方法,寫法都和servelt一模一樣。使用者寫作Controller物件,只要繼承ControllerServlet類別,實作doRegister()方法來註冊寫好的Action物件即可。國立政治大學電子計算機中心如何快速切換資料庫而不用改source?direct.testdb,連接至測試資料庫,直接連接。direct.dbs,連接至正式資料庫,直接連接。direct.db4,連接至四號資料庫,直接連接。wl5.pool.dbs,連接至正式資料庫,使用weblogic5pool連接。wl5.pool.db4,連接至四號資料庫,使用weblogic5pool連接。wl5.pool.v880,連接至v880資料庫,使用weblogic5pool連接。wl7.jndi.dbs,連接至正式資料庫,使用weblogic7t3連接。wl7.jndi.v880,連接至v880資料庫,使用weblogic7t3連接。國立政治大學電子計算機中心將資料庫連接字串放到web.xmlController啟動時,會自動讀取並將參數傳給Action類別,以供使用。web-appcontext-paramparam-nameDB_NAME/param-nameparam-valuedirect.dbs/param-value/context-param…………(其它設定)……………….國立政治大學電子計算機中心MVCHelper你要寫的部份ex:ConcreteControllerConcreteAction國立政治大學電子計算機中心統一處理登入機制每一支Web應用程式都有自己的登入處理程式(passChk.jsp),很難維護。必須能和SingleSign-on的ApplicationBridge整合。必須考慮代理人的機制。國立政治大學電子計算機中心不用寫passChk.jsp了我們將所有web應用程式共同的登入邏輯抽出來,發展一個web上處理登入需求的抽象類別。將會變動的問題的地方留給開發人員處理,其它在抽象類別就幫你做掉了。你要處理的問題:「登入成功了要做什麼?」(設資料到session、進到主目錄)。「代理權限不符怎麼辦?」「登入失敗了要做什麼?」的處理(例如可能是轉到登入失敗的頁面)。國立政治大學電子計算機中心LoginHandler你要寫的部份ex:ConcreteTeaLoginAction國立政治大學電子計算機中心DEMOSimpleMVCindex.jsp:讓使用者輸入帳號、密碼,然後貼到LoginHandler這個servlet。若成功,就秀出成功畫面,反之秀失敗畫面。國立政治大學電子計算機中心問題:如何防止使用者直接下Get傳統防止使用者跳過認証頁直接指到某頁的方法都是在JSP最前面檢查session中是否有認証資料。每一頁都要加,代表規則一改,每一頁都要改。開發時先不要加,比較容易debug。國立政治大學電子計算機中心使用Filter使用Filter來做AccessControl十分方便,因為我們可以藉由改變web.xml的設定,隨時將filter裝上或卸下。可以告訴container,那些要求會被FilterServlet攔截。攔截後加以驗証,如果不合法,就導到登入頁要求登入。國立政治大學電子計算機中心告訴應用程式管制所有.sso及.jspfilterfilter-namessofilter/filter-namefilter-classtw.edu.nccu.sso.SSOFilter/filter-class/filterfilter-mappingfilter-namessofilter/filter-nameurl-pattern*.sso/url-pattern/filter-mappingfilter-mappingfilter-namessofilter/filter-nameurl-pattern*.jsp/url-pattern/filter-mapping國立政治大學電子計算機中心AccessControlFilter你要寫的部份ex:AccessFilter國立政治大學電子計算機中心Lab2AccessFilter國立政治大學電子計算機中心錯誤處理使用者看得懂嗎?國立政治大學電子計算機中心如何提供一致且有意義的錯誤處理畫面錯誤畫面要一致。程式發生錯誤時,要能給使用者有意義的訊息。提供適當的指示,幫助使用者排除或尋求支援。讓程式開發者寫作error.xml來定義錯誤,彈性地設定錯誤處理機制。國立政治大學電子計算機中心定義錯誤畫面結構主題說明(詳細說明目前錯誤的可能原因)解決方法以超連結方式,提供使用者彈性的方法解決目前的問題國立政治大學電子計算機中心錯誤處理畫面國立政治大學電子計算機中心程式開發人員以xml定義錯誤畫面ErrorItemid404/idtitle找不到您要的檔案/titledetail……………/detailrecipesrecipeItemsolution回前一頁/solutionurljavascript:history.back()/urlrecipeItemrecipeItemsolution登出/solutionurlErrorHandling國立政治大學電子計算機中心如提供彈性的單一登入機制必須要能跨WebApplication及不同的實體Server。(session無法跨webap)要能夠和即有的WebApplication相容。也不能影響到現存的WebApplication。兼顧代理人的功能。Transparenttodevelopers.國立政治大學電子計算機中心SSO解決方案利用ApplicationBridge和LoginHandler配可,可以相容於之前的webapplication。(原來的程式不用修改可以直接接上SSO)代理人功能由DeputyHandler處理。本身就是basedon這個Framework開發的webapplication。你的AP開發完後,在SSO的主選單中利用ApplicationBridge加入你AP的url即可。國立政治大學電子計算機中心ApplicationBridge國立政治大學電子計算機中心資料處理如何把資料庫的資料利用JSTL秀在html的table上?國立政治大學電子計算機中心(MainMenuActionRollBookMain.jsp)國立政治大學電子計算機中心Q&A