【文章內(nèi)容簡介】
數(shù)的數(shù)據(jù)庫連接模塊處都提供了統(tǒng)一的接口以便訪問和操作。也就是說, JDBC 通過統(tǒng)一的程序訪問模塊用一個連接即可以完成訪問 MySQL 數(shù)據(jù)庫,也可以訪問 ORACLE 數(shù)據(jù)庫,只需要修改不同數(shù)據(jù)庫類型的設置即可。這樣方便了連接不同數(shù)據(jù)庫的煩惱。 JDBC 是一個數(shù)據(jù)庫與程序的接口程序,它提供了如下四種類型的驅(qū)動程序: JDBC— ODBC 橋,通過原有的 ODBC 連接數(shù)據(jù)庫以后, JDBC 再從 ODBC 處提供對數(shù)據(jù)庫的訪問; 平頂山工業(yè)職業(yè)技術(shù)學院畢業(yè)設計說明書 第 5 頁 本地 API 準 Java 驅(qū)動程序,該類驅(qū)動程序是使用 Java 語言直接使用本地 IP 與數(shù)據(jù)源系統(tǒng)進行通信,從數(shù)據(jù)源系統(tǒng)中調(diào)用執(zhí)行數(shù)據(jù)庫 API 函數(shù); 網(wǎng)絡協(xié)議準 Java 驅(qū)動程序,該類型驅(qū)動程序?qū)? Java 數(shù)據(jù)庫連接調(diào)用轉(zhuǎn)換成 DBMS 的獨立網(wǎng)絡協(xié)議,然后再由服務器轉(zhuǎn)換為 DBMS 協(xié)議; 本地協(xié)議準 Java 驅(qū)動程序,該類型驅(qū)動程序是一個本地的協(xié)議,是采用 Java 語言開發(fā)的協(xié)議,允許 Java 客戶程序直接調(diào)用數(shù)據(jù)庫服務器進行操作。 SSH 技術(shù) SSH 技術(shù)的概述 “ SSH 組合框架”是 Struts + Spring + Hibernate 的縮寫,“ SSH 組合框架”體現(xiàn)的是“強強聯(lián)手、各司其職、協(xié)調(diào)互補”的團隊協(xié)作精神,為大型 Java Web 應用程序的開發(fā)提供了強有力的解決方案。 Struts 最原始的 Java Web 程序全部使用 JSP 實現(xiàn), JSP 頁面既包含 HTML 標簽,又包含 Java 業(yè)務邏輯代碼,使得整個 JSP 頁面臃腫而難于維護。 SUN 公司為規(guī)范 Java Web 應用的開發(fā),相繼推出 Model 1 和 Model 2 模式。在 Model 1 模式中引入 JavaBean 技術(shù),使用 JavaBean 封裝業(yè)務邏輯代碼,使業(yè)務 邏輯代碼與 JSP頁面進行有效的分離,對于流程控制 JavaBean 卻無能為力,直到 Model 2 模式引入 Servlet 技術(shù)才真正實現(xiàn)視圖層、模型層和控制層的徹底分離,從此, Java Web 應用開發(fā)進入了一個規(guī)范化的時代。 Struts 2 作為 Model 2 模式的經(jīng)典實現(xiàn),具有組件的模塊化、靈活性和重用性的優(yōu)點,同時簡化了基于 MVC 的 Java Web 應用程序的開發(fā)。采用 Struts 2 通過核心控制器 FilterDispatcher 與攔截器Interceptor 更好地遵循 MV C 模式來實現(xiàn)了后臺 控制維護、前臺表現(xiàn)和業(yè)務邏輯處理的 Model 2 架構(gòu)。 Spring 由于應用服務器廠商對各種技術(shù)的支持并沒有真正統(tǒng)一,導致 J2EE 的應用沒有真正實現(xiàn)平臺無關(guān)性部署及開發(fā)的效率底下。 Spring 作為開源的中間件,獨立于各種應用服務器,甚至無須應用服務器的支持,也能提供應用服務器的功能,如聲明式事務等。 Spring 致力于 Java EE 應用的各層的解決方案,而不是僅僅專注于某一層的方案??梢哉f Spring 是公司應用開發(fā)的“一站式”選擇,并貫穿表現(xiàn)層、業(yè)務層及持久層。然而, Spring 并不想取 代已有的框架,而與它們無縫地整合。 Spring 平頂山工業(yè)職業(yè)技術(shù)學院畢業(yè)設計說明書 第 6 頁 使用基本的 JavaBean 來完成以前只可能由 EJB 完成的事情,其核心技術(shù)是控制反轉(zhuǎn) IOC 與 AOP 代理機制。然而, Spring 的用途不僅限于服務器端的開發(fā),從簡單性、可測試性和松耦合的角度而言,任何 Java 應用都可以從 Spring 中受益。 Hibernate 在當今多層體系結(jié)構(gòu)的軟件開發(fā)中,使用 JDBC 很難將持久層進行分離,負責業(yè)務邏輯代碼編寫的程序員必須密切關(guān)注數(shù)據(jù)庫各表的結(jié)構(gòu)關(guān)系,以確保其 SQL 語句工作的正常。如果引入 Hibernate 這樣的持久層中間件的話,業(yè)務邏輯層的開發(fā)人員整天面對的就是一個又一個的對象而不必關(guān)心數(shù)據(jù)表,既有利于團隊分工協(xié)作,又提高了軟件產(chǎn)品的可移植性。 Hibernate 可以應用在任何使用 JDBC 的場合,既可以在 Java Application 中使用,也可以在 Servlet/JSP 的 Web 應用中使用。 整合 Struts 2 標簽庫處理視圖層, Struts 2 的核心控制器與業(yè)務控制充當控制層, Hibernate 與各業(yè)務邏輯組件處理業(yè)務層事務,最后由 Spring 統(tǒng)管 Bean 資源,對整個應用的 JavaBean 實例資源進行統(tǒng)一管理與調(diào)度。這樣使三個開源框架有機地整合起來并更好地發(fā)揮它們的優(yōu)勢,實現(xiàn)了系統(tǒng)多層開發(fā)的低耦合,提高了 J2 EE 應用開發(fā)的效率。 模型 視圖 控制器 (modelviewcontroller, MVC) 是 XeroxPARC 于 20 世紀 80 年代為編程語言 Smalltalk80 發(fā)明的一種軟件設計模式,廣泛應用于交互式應用程序,如客戶機 /服務器、分布和 Inter 架構(gòu)等體系結(jié)構(gòu)。模型表示數(shù)據(jù)或信息,以及數(shù)據(jù)存取的業(yè)務邏輯;視圖用于顯示模型的內(nèi)容;控制器負責定義 應用程序的行為。 MVC 將表示邏輯、業(yè)務邏輯和數(shù)據(jù)分開,以便最小化對象之間的耦合度,它基于以下 3 方面的考慮: (1)劃分責任可以減少代碼重復度; (2)模型及視圖變化不會太多影響控制; (3)應用程序維護簡單。 MVC 設計模式圖如圖21 所示: ( 控 制 器 )接 受 用 戶 請 求調(diào) 用 模 型 響 應 用 戶 請 求選 擇 視 圖 顯 示 響 應 結(jié) 果 ( 視 圖 )顯 示 模 型 狀 態(tài)接 受 數(shù) 據(jù) 更 新 請 求發(fā) 送 用 戶 輸 入 數(shù) 據(jù) 傳 輸 給控 制 器允 許 控 制 器 選 擇 視 圖 ( 模 型 )封 裝 應 用 程 序 狀 態(tài)響 應 狀 態(tài) 查 詢處 理 業(yè) 務 流 程通 知 視 圖 業(yè) 務 狀 態(tài) 更 新通 知 數(shù) 據(jù) 更 新狀 態(tài) 查 詢選 擇 視 圖業(yè) 務 處 理用 戶 請 求事 件方 法 調(diào) 用 圖 21 MVC 設計模式圖 平頂山工業(yè)職業(yè)技術(shù)學院畢業(yè)設計說明書 第 7 頁 SSH 體系結(jié)構(gòu) 一個典型的 Web 應用系統(tǒng),按職責一般分為三層,即表示層,業(yè)務邏輯層和數(shù)據(jù)持久層,每一層次都有其獨特的職責,不能把各自的功能與其他層次相混合. 采用 Struts、 Spring 和 Hibernate 框架技術(shù)可以分別實現(xiàn)這三層的整合處理。即利用 Struts 框架作為系統(tǒng)整體基礎(chǔ)架構(gòu),負責 MVC 的分離,在 Struts 架構(gòu)的 Model 部分,利用 Spring 支持業(yè)務邏輯,用 Hibernate 支持數(shù)據(jù)持久層,具體整合架構(gòu)如圖 22 所示: 瀏覽器S t r u t s A c t i o nJ S P , X M L 等表 示 層S t r u t s M V CA c t i o n S e r v l e t業(yè) 務 邏 輯 層S p r i n g 事 務 處 理H i b e r n a t eS e s s i o n 管 理業(yè) 務 服 務 類數(shù)據(jù)庫S e r v i c s D A O其 他 查 詢 語言 支 持 和 其他 H i b e r n a t e服 務數(shù) 據(jù) 持 久 層H i b e r n a t e數(shù) 據(jù) 源 / 連 接 池域 模 型 業(yè) 務 對 象 ( V a l u e O b j e c t , V a l u e O b j e c t P e r s i s t e n c e O b j e c t )圖 22 SSH 框架整合架構(gòu)示意圖 其中, Struts 用于表示層,直接面向用戶,響應用戶的請求,為顯示提供一個模型和一個控制器,并委派調(diào)用業(yè)務邏輯和其 他上層處理等功能 。 利用 Spring 在事務管理和依賴注入方面的獨特能力,實現(xiàn)處理應用程序的業(yè)務邏輯和業(yè)務校驗,以及提供與其他層進行相互作用的接口等 。 Hibernate 是 ORM 的實現(xiàn),利用它建立 Java 對象模型的持久化對象,進而以面向?qū)ο蟮姆绞絹矸奖愕夭僮麝P(guān)系數(shù)據(jù)庫。這樣 Struts、 Spring 和 Hibernate 就能夠很好地封裝各個層次的程序,如在處理前臺表示層時就不會把事務邏輯和持久化邏輯摻雜進來,從而最大限度地實現(xiàn)各層的高內(nèi)聚低耦合目標。 SSH 整合的業(yè)務配置流程介紹 SSH 現(xiàn) 在普遍應用于各個領(lǐng)域,其整合的基本業(yè)務配置流程如下 。 在表示層中 ,通過 Web頁面實現(xiàn)用戶和系統(tǒng)之間的信息交互 ,Web頁面負責傳送用戶的請求以及接收系統(tǒng)的響應信息。 Struts 根據(jù) 配置文件將 ActionServlet 接收到的請求 (Request)分發(fā)給相應的 Action 來處理。在業(yè)務層中 ,管理服務組件的 Spring IoC 容器負責向 Action 提供其指定的業(yè)務模型組件平頂山工業(yè)職業(yè)技術(shù)學院畢業(yè)設計說明書 第 8 頁 和該組件的協(xié)作 DAO 類共同完成業(yè)務邏輯 ,并提供事務處理、數(shù)據(jù)緩沖等功能以保證數(shù)據(jù)的完整性 ,并提升系統(tǒng)性能。而在 持久層中 ,則利用 Hibernate 的對象映射機制同數(shù)據(jù)庫交互 ,處理 DAO 實現(xiàn)類的數(shù)據(jù)處理功能 ,并返回相應的處理結(jié)果。具體業(yè)務配置流程處理如圖 23 所示: 圖 23 SSH 框架業(yè)務配置流程處理示意圖 采用 SSH 開發(fā)模型,不僅實現(xiàn)了視圖、控制器與模型的徹底分離,而且還實現(xiàn)了業(yè)務邏輯層與持久層的分離。這樣無論前端如何變化,模型層都不需要做很大的改動,這樣可以大大提高了系統(tǒng)的可復用性,而且由于不同層之間耦合度小,有利于團隊成員協(xié)同開發(fā),大大提高了開發(fā)效率。 Ajax 技術(shù)概述 Ajax(Asynchronous JavaScript and XML)是指基于 XML 的異步 JavaScript技術(shù),是一種用于創(chuàng)建更好更快以及交互性更強的 Web 應用程序的技術(shù)。傳統(tǒng)的網(wǎng)頁如果需要更新內(nèi)容,必需重載整個網(wǎng)頁面,而 AJAX 通過在后臺與服務器進行少量數(shù)據(jù)交換,可以使網(wǎng)頁實現(xiàn)異步更新。這意味著可以在不重新加載整個網(wǎng)頁的情況下,對網(wǎng)頁的某部分進行更新。在頁面內(nèi)與服務器通信,給用戶更好的體驗;同時,使用異步方式與服務器通信,不需要打斷用戶的操作,具有更加迅速的響應能力;它也可以把以前一些服務器負擔的工作轉(zhuǎn)嫁到客戶端,利用客戶端閑置的能力來處理,減輕服務器和帶寬的負擔,節(jié)約空間和寬帶租用成本。圖 1是傳統(tǒng)的 Web 應用模型和加入 Ajax 后的 Web 應用模型的對比。 通過這兩個圖的比較,我們可以更清楚的了解到加入 Ajax 技術(shù)后,給傳統(tǒng)的Web 應用程序開發(fā)所帶來的變化。 平頂山工業(yè)職業(yè)技術(shù)學院畢業(yè)設計說明書 第 9 頁 開發(fā)環(huán)境 JDK 軟件 我們要開發(fā) J2EE 的系統(tǒng),卻需要安裝的是 J2SE。 J2SE 的 JDK 是開發(fā)任何 Java系統(tǒng)必須安裝的工具包,而 J2EE 是指 EJB、 JSF 等這些工具包,在不需要開發(fā)這些功能時是不需要安裝的。 我們選用 的版本進行開發(fā)。 數(shù)據(jù)庫軟件 MySQL MySQL 是最受歡迎的開源 SQL 數(shù)據(jù)庫管理系統(tǒng),它由 MySQL AB 開發(fā)、發(fā)布和支持。 MySQL 服務器支持關(guān)鍵任務、重負載生產(chǎn)系統(tǒng)的使用,也可以將它嵌入到一個大配置 (massdeployed)的軟件中去。它因為以下優(yōu)點而廣受歡迎。 MySQL 是一個開源的關(guān)系數(shù)據(jù)庫管理系統(tǒng) MySQL 服務器是一個快捷的、可靠的和易于使用的數(shù)據(jù)庫服務器 MySQL 服務器工作在客戶/服務器或嵌入系統(tǒng)中 有大量的 MySQL 軟件可以使用 在此系統(tǒng)中我們選用 MySQL 進行開發(fā)。 Web 服務器 Tomcat Tomcat 是 ApacheJarkarta 的一個子項目,是一個免費的、開放源碼的、支持 JSP 和 Servlet 技術(shù)的容器,它同時又是一個 Web 服務器軟件。 Tomcat 很受廣大程序員的喜歡,因為它運行時占用的系統(tǒng)資源小,擴展性好,支持負載平衡與郵件服務等開發(fā)應用系統(tǒng)常用的功能。 Tomcat 是一個小型的輕量級應用服務器,在中小型系統(tǒng)和并發(fā)訪問用戶不是很多的場合下被普遍使用,是開發(fā)和調(diào)試 JSP 程序的首選。 在本系統(tǒng)中我們選用穩(wěn)定版本 Tomcat 進行開發(fā)。 集成開發(fā)工具 MyEclipse MyEclipse 是目前最流行的 Java 集成開發(fā)工具。 MyEclipse 公司級工作平臺是對 Eclipse IDE 的擴展 ,其主要的屬性有快速的性能、重構(gòu)性能、快速修復錯誤、調(diào)整/組織導入包、彈出窗口進行代碼自動裝配。它能夠很好地與 MySQL、Tomcat 進行集成。 本系統(tǒng)中我們選用 作為系統(tǒng)的開發(fā)工具。 平頂山工業(yè)職業(yè)技術(shù)學院畢業(yè)設計說明書 第 10 頁 第 3 章 考勤管理 系統(tǒng) 的 可行性 研究 可行性研究的前提 系統(tǒng)功能要求: 本系統(tǒng)根據(jù)公司的需求,并按照權(quán)限劃分,管理員角色需要的基本功能包括了