500 likes | 652 Views
行政院研究發展考核委員會 政府網站共用元件推廣課程. 政府網站共用元件 客製化功能開發 教育訓練. 凌網科技 廖宜哲 99 年 6 月 09 日. 課程大綱. 安裝開發環境 JDK Tomcat MySQL Eclipse 匯入政府網站共用元件 實作底層技術介紹 基本概念 Hibernate Struts Spring Framework. 課程大綱. 一般上稿功能客制化開發 用途 & 簡介 代碼管理機制 DSD XML 檔案編修 版面設計 - 區塊設定 客制化應用程式 後台客製化程式 前台客製化程式. 安裝開發環境. JDK
E N D
行政院研究發展考核委員會政府網站共用元件推廣課程行政院研究發展考核委員會政府網站共用元件推廣課程 政府網站共用元件 客製化功能開發 教育訓練 凌網科技 廖宜哲 99年6月09日
課程大綱 • 安裝開發環境 • JDK • Tomcat • MySQL • Eclipse • 匯入政府網站共用元件 • 實作底層技術介紹 • 基本概念 • Hibernate • Struts • Spring Framework
課程大綱 • 一般上稿功能客制化開發 • 用途&簡介 • 代碼管理機制 • DSD XML檔案編修 • 版面設計-區塊設定 • 客制化應用程式 • 後台客製化程式 • 前台客製化程式
安裝開發環境 • JDK • jdk-6u20-windows-i586.exe • Tomcat • apache-tomcat-6.0.26 • MySQL • mysql-essential-5.1.46-win32.msi
匯入政府網站共用元件 • 解壓縮eclipse-jee-galileo-win32.zip • 設定Validation • 新增SERVER • New=>Server=>Apache=>Tomcat 6.0 • 設定Server Start Timeout
匯入政府網站共用元件 • 匯入專案 • 解壓縮共用元件原始碼(不要以中文當資料夾名稱) • File=>Import=>General=>Existing Projects into Workspace • 新增專案至Server=>Publish • 建立&匯入DB資料
匯入政府網站共用元件 • 修改設定檔 • 後台source/main/applicationContext.xml • 資料庫連線設定 • 後台javagip/WEB-INF/web.xml • 前台位址 • 前台javagip/WEB-INF/web.xml • 後台位址 • 虛擬目錄:D:\eclipse\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\GipOpenAdmin\gipadmin\site\public
基本概念 • WEB容器 • 給處於其中的程式(JSP,SERVLET)提供一個環境,使JSP,SERVLET直接與容器運行,不必關注其它系統問題。主要有WEBApplicationServer來實現。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。該容器提供的接口嚴格遵守J2EE規範中的WEB APPLICATION標準。我們把遵守以上標準的WEB服務器就叫做J2EE中的WEB容器。
基本概念-Java網頁程式 • Servlet • 動態產生HTML • 直接在Java中撰寫HTML,不易於開發,易於維護 • JSP • 簡易的Servlet撰寫方式 • 在HTML中插入程式碼,易於開發,不易於維護。 • 執行速度較慢,尤其是第一次
基本概念-Java網頁程式 • Servlet • 繼承HttpServlet • doPost&doGet • 需於web.xml中設定mapping <servlet> <servlet-name>TestService</servlet-name> <servlet-class>com.hyweb.gip.service.testap.TestService</servlet-class> </servlet> <servlet-mapping> <servlet-name>TestService</servlet-name> <url-pattern>/gipservice/TestAp/TestService</url-pattern> </servlet-mapping>
基本概念 • Server Reload • 可在SERVER中設定,Tomcat 預設為Auto Reload • JSP 是即時編譯,不需要Reload • Servlet 需要在執行前先編譯,需要Reload • 設定檔的改變一般也需要Reload,看系統讀取設定的方式
基本概念-與Client端溝通物件 • JSP基本物件 • 1.request=>客戶端要求物件 request.getAttribute(arg0) =>取得參數 request.setAttribute(arg0, arg1) =>設定參數 request.getParameter("變數")=>取得客戶端變數資料 request.getRemoteHost()=>取得客戶端主機名稱 • 2.response=>伺服器端回應物件 response.setHeader("Header名稱, Header內容")=>設定標頭內容 response.getWriter().write(“HTML 字串”)=>寫入HTML字串 • 範例說明
基本概念-MVC • MVC架構 • View:HTML或JSP檔,要呈現給user的結果頁 • Model:業務邏輯(Business Rule) • Control:決定程式流程
基本概念-XML • 屬性:<學生 age=“18”>王小華</學生> • 保留符號:<文章內容>AT&T是美國公司</文章內容>AT&T=>AT&T • CDATA 節區: <![ CDATA [ 文字 ]]> <文章內容> <![ CDATA [ AT&T是美國公司]]> </文章內容>
基本概念-XML&JAVA • JDOM:第三方開發的開放原始碼元件 • Document:XML文件本身 • Element:XML文件中的元素 • JDomUtil:政府網站共用元件中的公用程式 • 讀取XML文件 • 輸出XML文件 • XPATH查詢 • XSL轉換XML格式
基本概念-XML&JAVA範例&練習 • 將TestService.jsp改寫成使用JDomUitl來傳回XML • Import 用到的Class <%@ page import="com.hyweb.gip.ormapping.ORMapperUtil,org.jdom.Document,com.hyweb.util.JDomUtil,org.jdom.Element" %> • 程式碼: Document doc = new Document(); Element root = new Element("hpMain"); root.addContent(new Element("name").setText(name)); doc.setRootElement(root); JDomUtil.jdomOutputXml(doc,response.getWriter());
Hibernate • Hibernate 是「物件/關係對應」(Object/Relational Mapping)的解決方案,簡寫為ORM,簡單的說就是將 Java 中的物件與物件關係,映射至關聯式資料庫中的表格與表格之間的關係。Hibernate 提供了這個過程中自動對應轉換的方案,且可以減少系統程式與資料庫的相依性。 • 用途:利用物件方便而有效率的方式進行資料庫的存取 • 使用原理:在Java物件與資料庫表格間,建立一個對映(Mpaaing)
Hibernate • MaggingFile(映射檔):dao/mapping/InfoUser.hbm.xml • MaggingFile需在applicationContext.xml中描述 • Java Object(Java 物件):domain/com.hyweb.gip.hib.InfoUser • Table(資料表):infouser
Hibernate-存取範例 • 取得政府網站共用元件hibernate公用物件 • ORMapperUtil mapper = ORMapperUtil.newInstance(); • 讀取資料 • mapper.loadObject(InfoUser.class, id); • mapper.uniqueResult("from InfoUser where userId = ? ",new Object[]{id}); • 轉型 • InfoUser user= (InfoUser)mapper.loadObject(InfoUser.class, id); • 取得資料 • String userName = user.getUserName(); • String userId = user.getUserId();
Hibernate-存取範例 • 更新資料 • user.setUserName("測試"); • mapper.saveOrUpdateObject(user); • 新增資料 • InfoUser user = new InfoUser(); • 設定必要資料 • mapper.saveOrUpdateObject(user); • 釋放資源 finally{ mapper.release(); }
Hibernate-練習 • 將TestService.jsp改寫成使用Object來讀取
Struts • Struts 是支持Web MVC開發模式的 Framework,目前是 Apache 專案中的一個子專案。 • 設定檔:struts-config.xml • Action物件是Controller角色: • 取得請求中的相關參數 • 驗證資料的邏輯正確性 • 將請求參數複製給商務物件 • 取得執行結果並準備結果 • 轉發給View物件
Struts • View物件:在政府網站共用元件中,view都是使用JSP • 商務物件:自行撰寫包含商務邏輯的Java程式,在政府網站共用元件中通常叫做service • Action Mapping:定義View以及實作的程式 <action input="/gipadmin/index.jsp" name="LoginForm" path="/chkLogin" scope="request" type="com.hyweb.gip.action.main.LoginAction" validate="false"> <forward name="Success" path="/gipadmin/default.jsp" redirect="true"/> <forward name="ModifyPwd" path="/gipadmin/User/userModifyPwd.jsp" redirect="true"/> <forward name="Failure" path="/gipadmin/index.jsp" redirect="false"/> </action>
Struts • Struts標籤範例 • javagip/gipadmin/index.jsp • <%@ taglib prefix="html" uri="/tags/struts-html" %> • <html:form method="post" action="chkLogin" target="_self" focus="id"> • 定義form bean • <form-bean name="LoginForm" type="com.hyweb.gip.form.main.LoginForm"/>
Spring Framework • Spring 的核心是個輕量級容器(Container) • 實現了IoC(Inversion of Control)模式達到程式元件的鬆散耦合(Loose coupling)
Spring Framework • 輕量級(Lightweight) • Spring 的核心在檔案容量上只有不到 1MB 的大小,而使用 Spring 核心所需要的資源也是很小的,而 Spring 是個非侵入性(Nonintrusive)框架,它的目的之一,是讓應用程式不感受到框架的存在,減低應用程式從框架移植時的負擔。 • 容器(Container) • Spring 核心本身是個容器,管理物件的生命週期、物件的組態、相依注入等,並可以控制物件在創建時是以 原型(Prototype) 或 單例(Singleton) 的方式來建立。
Spring Framework • IoC(Inversion of Control) • Spring 的核心概念是IoC,更具體而易懂的名詞是依賴注入(Dependency Injection),使用 Spring,您不必自己在程式碼中維護物件的依賴關係,只需在組態檔中加以設定,Spring 核心容器會自動根據組態將依賴注入指定的物件。
Spring Framework-IoC範例 • 設定檔:source/main/applicationContext.xml • 排程程式:活動報名功能,檢查活動發出通知信 • quartz scheduler
Spring Framework-IoC範例 • <bean id=“simpleTriggerBean” class=“org.springframework.scheduling.quartz.SimpleTriggerBean”> <property name=“jobDetail"> <ref bean=“jobDetailBean"/> </property> <property name="repeatInterval"> <value>1000</value> </property> <property name="startDelay"> <value>1000</value> </property> </bean>
一般上稿功能 • 用途範圍 • 單純的資料顯示功能,資料包含: • 文字 • 影音 • 圖片 • 文件檔 • 外部連結 • 特色 • 符合無障礙網路空間規定 • 自動帶入MetaData
一般上稿功能:通用資料 • 通用資料的功能 • 供資料範本使用,減少客制化AP的工作 • 一般網頁的通用資料 • 內容資料 • 標題 • 內文 • 網址 • 資料迄日 • 內容簡介 • 圖檔
一般上稿功能:通用資料(續) • 控制資訊 • 另開視窗 • 張貼日 • 是否公開 • 公開啟日 • 公開迄日 • 是否顯示在行事曆 • MetaData類資訊 • 資料大類 • 關鍵字詞 • 重要性 • 單位
一般上稿功能:通用資料(續) • 編輯資訊 • 建檔人員 • 建檔日期 • 編修人員 • 編修日期
一般上稿功能:資料範本 • 用途 • 快速的建立 • 資料表 • 對應的JAVA物件 • Hibernate設定檔 • 供主題單元使用 • 描述資料的MetaData • 特色 • 可重複使用 • 運用通用資料減少非必要的工作
代碼定義簡介 • 用途 • 資料定義 • 特色 • 可重複使用的代碼資料表 • 可參考其他的資料表 • 自訂排序或過濾功能
一般上稿功能:主題單元 • 用途 • 供資料節點使用 • 特色 • 同樣的資料範本,可對其欄位定義不同的名稱 • 運用通用資料減少非必要的工作 • 可連結客制化的程式 • 可連結外部資料
一般上稿功能:目錄樹管理 • 用途 • 供資料節點使用 • 特色 • 同樣的資料範本,可對其欄位定義不同的名稱 • 運用通用資料減少非必要的工作 • 可連結客制化的程式 • 可連結外部資料
版面設計 • 簡介 • 提供一個視覺化的操作介面設計入口網站的Layout • 特色 • 區塊資料 • 自動頁籤化資料 • 可連結客制化的程式 • 可連結外部資料
連結外部應用程式範例 <form action="http://www.google.com/cse" id="cse-search-box"> <div> <input type="hidden" name="cx" value="006697087016630970445:cfdhszw1bgs" /> <input type="hidden" name="ie" value="UTF-8" /> <input type="text" name="q" size="31" /> <input type="submit" name="sa" value="搜尋" /> </div> </form> <script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=cse-search-box&lang=zh-Hant"></script>
客制化應用程式範例-意見信箱 • 功能說明 • 前台 • 意見信箱列表 • 意見信箱表單 • 處理進度查詢 • 後台 • 參數管理 • 意見回覆 • 意見審核 • 查詢功能