基于Struts架構的辦公自動化系統畢業論文_第1頁
基于Struts架構的辦公自動化系統畢業論文_第2頁
基于Struts架構的辦公自動化系統畢業論文_第3頁
基于Struts架構的辦公自動化系統畢業論文_第4頁
基于Struts架構的辦公自動化系統畢業論文_第5頁
已閱讀5頁,還剩79頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 基于基于 strutsstruts 架構的架構的 oaoa 系統系統 的研究與開發的研究與開發 2011 年年 11 月月 摘 要 隨著社會經濟的發展,計算機、網絡技術的應用已經滲透到企業的日常工作中。 傳統的辦公室管理方式已經不能滿足企業對信息的快速傳遞與處理的需求,而網絡辦 公自動化的應用解決了這一問題,完善企業內部的管理模式,提高了企業內部的管理 水平,進而全面得提升了企業在市場競爭中的綜合競爭力。辦公自動化系統基于網絡, 提高了企業內部的信息化水平。 本文描述了一個辦公自動化系統的開發過程,依據面向對象設計的開發思想,利 用 mvc 設計模式,選用瀏覽器/服務器(b/s)模式搭建,使

2、用 hibernate 技術操作數 據庫,并用 struts 完成了系統的最終實現。根據辦公自動化的特點,可將系統分為日 常管理、考勤管理、計劃指定、審核管理、員工管理、通訊管理 6 個部分。 關鍵詞:辦公自動化,面向對象,mvc,struts,hibernate,b/s 目 錄 第 1 章 引言 1.1 辦公自動化軟件開發的現狀 當今社會是一個信息飛速發展的社會,因此,針對各行業來說,計算機的應用實 為重要,求質量、求速度,盡可能的脫離手工操作,是現代人追求的目標。分析人士 指出,在一個企業的運作過程中,交流成本成為了總成本的一個重大構成部分,因此, 如何實現快速、有效的交流以降低交流成本成

3、為每個企業所關心的問題。 在現代社會中,任何一個行業,任何一個企業,高效準確的辦公都是至關重要的。 快捷的信息交流,暢通的公文傳遞,迅速的文檔查詢,自動的工作流轉等等都能提高 一個企業的辦公效率,進而提高其市場競爭力。 圖 1.1 傳統辦公模式 傳統的辦公模式主要以紙介質為主,在信息革命的浪潮中,顯然已經遠遠不能滿 足高效率、快節奏的現代工作和生活的需要。internet/intranet 的迅猛發展,為信息的交 流和共享,團隊的協同運作提供了技術的保證,同時也預示著網絡化辦公時代來臨。 圖 1.2 網絡化辦公模式 現有辦公自動化系統中,企業文件流轉功能都是核心功能。可以認為,企業辦公 主 要

4、是一個文件流轉的過程,所有的辦公事務都可以抽象成一個數據庫表單。傳統辦公 自動化系統和大型 mis 系統在處理企業管理流程中大多采用企業業務流程重組 (bkr) ,其核心思想就是要先優化企業業務管理流程,再根據優化后的流程建設企業 信息統。 這樣不僅在系統建設中工作量巨大,同時面臨來自企業內部重重的阻礙。 要想實現辦公自動化,就需要實施計算機管理,所以,開發了這個辦公自動化系 統,此系統是基于網絡的,部署方便,易于維護。 1.2 本文要做的工作 本文的最終目標是要描述建立一個辦公自動化系統的過程。系統選用 struts 框架, 以 mvc 設計模式作為軟件工程方法,并用 java 語言實現。本

5、文主要做的工作是描 述了此辦公自動化系統從分析、設計、到實現的主要工作流程,并在最后闡述系統的 使用方法。 本系統實現的主要功能模塊有:公共模塊設計、登錄模塊設計、主界面設計、日 常管理模塊、考勤管理模塊、計劃指定模塊、審核管理模塊、員工管理模塊、通訊管 理模塊。 第 2 章 運用技術及開發工具介紹 該辦公自動化系統是在 myeclipse 9.0 的環境下開發的,以 ms sql server2005 作 為后臺數據庫,hibernate 作為系統的業務邏輯層,jsp 頁面作為系統的表現層,通過 使用 struts 實現的 mvc 機制,來控制整個辦公自動化的業務數據流程。 本系統是基于 w

6、eb 的,所以 internet 必須成為瀏覽器和服務器之間的通信媒介, uml 架構模型如圖 2.1 所示: 圖 2.1 架構設計圖 本系統的具體架構是 mvc 模式,并用 hibernate 對 jdbc 進行簡單封裝,具體的 物理架構如圖 2.2 所示: browser client action jsp action jsp business object data access object database http jdbc 圖 2.2 物理架構圖 2.1 struts 技術簡介 struts 最早是作為 apache jakarta 項目的組成部分問世運作。項目的創立者希望通

7、過對該項目的研究,改進和提高 java server pages、servlet、標簽庫以及面向對象的技 術水準。 struts 這個名字來源于在建筑和舊式飛機中使用的支持金屬架1。它的目的是為了 減少在運用 mvc 設計模型來開發 web 應用的時間。雖然仍然需要學習和應用該架構, 但它將可以完成其中一些繁重的工作。 struts 跟 tomcat、turbine 等諸多 apache 項目一樣,是開源軟件,這是它的一大 優點,使開發者能更深入的了解其內部實現機制。 除此之外,struts 的優點主要集中體現在兩個方面:taglib 和頁面導航。taglib 是 struts 的標記庫,靈活

8、動用,能大大提高開發效率。另外,就目前國內的 jsp 開發者而 言,除了使用 jsp 自帶的常用標記外,很少開發自己的標記,或許 struts 是一個很好 的起點。 2.2 hibernate 技術的應用 hibernate 是 java 應用和關系數據庫之間的橋梁,通過對 jdbc 的簡單封裝,使 java 程序員可以使用面向對象的思想操作數據表,不用再考慮數據訪問細節,可以專 注于業務邏輯的開發,它對軟件分層做了進一步細化,使數據的持久化與業務邏輯和 數據庫分開,便于軟件的后期維護。在 java 應用中使用 hibernate 包含以下步驟: 1、創建創建 hibernate 的配置文件。

9、的配置文件。 hibernate 配置文件主要用于配置數據庫連接和 hibernate 運行時所需要的各種 屬性,這個配置文件應該位于應用程序或 web 程序的類文件夾 classes 中。 hibernate 能夠訪問多種關系數據庫,如 mysql、oracle、sybase 等。 2、創建持久化類創建持久化類 持久化類符合 java bean 的一般規范,可以作為數據實體的對象化表現形式。 通常都是數據表所對應的域模型中的實體域類。在編寫持久化類時,主要遵循以 下原則: a)為持久化字段聲明訪問器和是否可變的標志。 持久化類的屬性一般都與數據庫中相對應表字段一一對應,并包括與之對應 的 g

10、etxxx() 、setxxx() 、isxxx()方法。如果持久化類的屬性為 boolean 類 型,那么可以使用 get 或 is 作為 get()方法的前綴。 b)實現一個默認的(即無參數的)構造方法。 所有的持久化類都必須有一個默認的構造方法(可以不是 public 的) 。這樣 hibernate 就可以使用 java.lang.reflect.constructor.newinstance()來實例持久化類。 3、創建對象創建對象關系映射文件。關系映射文件。 hibernate 采用 xml 格式的文件來指定對象和關系數據之間的映射。在運行時, hibernate 將根據這個映射文

11、件來生成各種 sql 語句。在 hibernate 中,映射文件通 常用.hbm.xml 作為后綴名,該文件與持久化類存放在同一目錄下。在 user.hbm.xml 文件的開頭聲明了 dtd(document type definition) ,它對 xml 文 件的語法和格式做了定義。hibernate 的 xml 解析器將根據 dtd 來核對 xml 文 件的語法。 4、構建構建 sessionfactory。 hibernate 的 sessionfactory 接口提供 session 類的實例,session 類用于完成對 數據庫的操作。由于 sessionfactory 實例是線程

12、安全的( 而 session 實例不是線程 安全的) ,所以每個操作都可以共用同一個 sessionfactory 來獲取 session。 hibernate 配置文件分為兩種格式:一種是 xml 格式,一種是 java 屬性文件格 式的配置文件。因此構建 sessionfactory 的也有兩種方法,例程 01 是在配置文件 為 hperties 的情況下構建 sessionfactory 的,如果 hibernate 的配置文件 為 xml 格式,只需在配置文件中聲明映射文件,在程序中不必調用 configuration 類的 addclass()方法來加載映射文

13、件,代碼如下: sessionfactory sf=new configuration().configure().buildsessionfactory(); 5、session 的創建與關閉。的創建與關閉。 session 是一個輕量型對象,通常將每個 session 實例和一個數據庫事務綁定, 也就是每執行一個數據庫事務,都應該先創建一個新的 session 實例。 2.3 b/s 模式介紹及應用 2.3.1 什么是 b/s 模式 瀏覽器/服務器(b/s)模式又稱 b/s 結構。它是一種以 web 技術為基礎的新型的 mis 系統平臺模式。把傳統 c/s 模式中的服務器部分分解為一個數據

14、服務器與一個或 多個應用服務器(web 服務器),從而構成一個三層結構的客戶服務器體系2。 第一層客戶機是用戶與整個系統的接口。客戶的應用程序精簡到一個通用的瀏覽 器軟件,如 netscape navigator,微軟公司的 ie 等。瀏覽器將 html 代碼轉化成圖文 并茂的網頁。網頁還具備一定的交互功能,允許用戶在網頁提供的申請表上輸入信息 提交給后臺,并提出處理請求。這個后臺就是第二層的 web 服務器。 第二層 web 服務器將啟動相應的進程來響應這一請求,并動態生成一串 html 代 碼,其中嵌入處理的結果,返回給客戶機的瀏覽器。如果客戶機提交的請求包括數據 的存取,web 服務器還

15、需與數據庫服務器協同完成這一處理工作。 第三層數據庫服務器的任務類似于 c/s 模式,負責協調不同的 web 服務器發出的 sql 請求,管理數據庫。 2.3.2 b/s 模式的優缺點 b/s 模式簡化了客戶端。它無需象 c/s 模式那樣在不同的客戶機上安裝不同的客戶 應用程序,而只需安裝通用的瀏覽器軟件3。這樣不但可以節省客戶機的硬盤空間與內 存,而且使安裝過程更加簡便、網絡結構更加靈活。假設一個企業的決策層要開一個 討論庫存問題的會議,他們只需從會議室的計算機上直接通過瀏覽器查詢數據,然后 顯示給大家看就可以了。甚至與會者還可以把筆記本電腦聯上會議室的網絡插口,自 己來查詢相關的數據。其次

16、,它簡化了系統的開發和維護。系統的開發者無須再為不 同級別的用戶設計開發不同的客戶應用程序了,只需把所有的功能都實現在 web 服務 器上,并就不同的功能為各個組別的用戶設置權限就可以了。各個用戶通過 http 請 求在權限范圍內調用 web 服務器上不同處理程序,從而完成對數據的查詢或修改。現 代企業面臨著日新月異的競爭環境,對企業內部運作機制的更新與調整也變得逐漸頻 繁。相對于 c/s,b/s 的維護具有更大的靈活性。當形勢變化時,它無須再為每一個現 有的客戶應用程序升級,而只需對 web 服務器上的服務處理程序進行修訂。這樣不但 可以提高公司的運作效率,還省去了維護時協調工作的不少麻煩。

17、如果一個公司有上 千臺客戶機,并且分布在不同的地點,那么便于維護將會顯得更加重要。 再次,它使用戶的操作變得更簡單。對于 c/s 模式,客戶應用程序有自己特定的 規格,使用者需要接受專門培訓。而采用 b/s 模式時,客戶端只是一個簡單易用的瀏 覽器軟件。無論是決策層還是操作層的人員都無需培訓,就可以直接使用。b/s 模式的 這種特性,還使 mis 系統維護的限制因素更少。 最后,b/s 特別適用于網上信息發布,使得傳統的 mis 的功能有所擴展。這是 c/s 所無法實現的。而這種新增的網上信息發布功能恰是現代企業所需的。這使得企業的 大部分書面文件可以被電子文件取代,從而提高了企業的工作效率,

18、使企業行政手續 簡化,節省人力物力。 鑒于 b/s 相對于 c/s 的先進性,b/s 逐漸成為一種流行的 mis 系統平臺。各軟件 公司紛紛推出自己的 internet 方案,基于 web 的財務系統、基于 web 的 erp。一些企 業已經領先一步開始使用它,并且收到了一定的成效。 b/s 模式的新穎與流行,和在某些方面相對于 c/s 的巨大改進,使 b/s 成了 mis 系統平臺的首選,但是它也有不成熟的一面,目前基于 b/s 模式的應用軟件也很缺乏, 其最大的缺點是對企業外網環境依賴性太強,由于各種原因引起企業外網中斷都會造 成系統癱瘓。 2.42.4 開發工具的選擇開發工具的選擇 2.

19、4.1 myeclipse 介紹與應用 myeclipse 企業級工作平臺(myeclipse enterprise workbench ,簡稱 myeclipse)是對 eclipseide 的擴展,利用它我們可以在數據庫和 javaee 的開發、發 布以及應用程序服務器的整合方面極大的提高工作效率。它是功能豐富的 javaee 集成 開發環境,包括了完備的編碼、調試、測試和發布功能,完整支持 html,struts,jsp,css,javascript,sql,hibernate。 在結構上,myeclipse 的特征可以被分為 7 類: 1 javaee 模型 2 web 開發工具 3

20、ejb 開發工具 4 應用程序服務器的連接器 5 javaee 項目部署服務 6 數據庫服務 7 myeclipse 整合幫助 對于以上每一種功能上的類別,在 eclipse 中都有相應的功能部件,并通過一系列 的插件來實現它們。myeclipse 結構上的這種模塊化,可以讓我們在不影響其他模塊的 情況下,對任一模塊進行單獨的擴展和升級。簡單而言,myeclipse 是 eclipse 的插件, 也是一款功能強大的 javaee 集成開發環境,支持代碼編寫、配置、測試以及除錯。 2.4.2 tomcat 介紹 jakarta tomcat 服務器是一種 servlet/jsp 容器。servl

21、et 是一種運行在支持 java 語 言的服務器上的組件6。 當客戶請求訪問某個 servlet 時,servlet 容器將創建一個 servletrequrst 對象和 servletresponse 對象。在 servletrequest 對象中封裝了客戶請求信息,然后 servlet 容 器把 servletrequest 對象和 servletresponse 對象傳給客戶所請求的 servlet。servlet 把 響應結果寫到 servletresponse 中,然后由 servlet 容器把響應結果傳給客戶。servlet 容 器響應客戶請求過程如圖 2.3 所示: 圖 2.3

22、servlet 容器響應客戶請求過程圖 第 3 章 需求分析與系統設計 本章描述了此辦公自動化系統的需求分析和系統設計,主要對待開發軟件進行一 般描述和對該軟件各功能模塊需求進行分析和設計。 3.1 問題域的一般描述 系統將用戶分為 2 個權限級別:“系統管理員”可對系統中的所有功能進行操作; “普通用戶”可對系統中的部分功能進行操作; 3.2 待開發軟件的功能模塊需求 3.2.1 系統模塊功能圖 開發本軟件的目的是為公司辦公室提供一個方便快捷的辦公平臺。經調查分析, 本系統應具備的功能模塊有:用戶登錄、會議管理、公告管理、外出登記、請假登記、 上下班登記、企業計劃指定、部門計劃指定、個人計劃

23、、發布申請、審核批示、員工 添加、員工維護、顯示通訊組、增加通訊詳細信息。因此,本軟件的各個功能劃分如 圖 3.1 所示。 辦公自動化管理系統 日常管理考勤管理計劃指定員工管理審核管理通訊管理 會 議 管 理 公 告 管 理 外 出 登 記 請 假 登 記 上 下 班 登 記 企 業 計 劃 部 門 計 劃 個 人 計 劃 發 布 申 請 審 核 批 示 員 工 添 加 員 工 維 護 顯 示 通 訊 組 增 加 通 訊 詳 細 信 息 圖 3.1 系統功能模塊圖 3.2.2 系統模塊功能描述 1、日常管理 日常管理模塊包括公告管理、會議管理 a.普通用戶可以查看公告和會議記錄 b.系統用戶可

24、以對會議、公告進行添加、修改、刪除等操作。 2、考勤管理 考勤管理模塊包括外出登記、請假登記、出差登記、上下班登記。 a.用戶可以進行上下班登記 b.用戶可以進行外出登記、銷假操作 c.用戶可以進行請假登記、銷假操作 d.用戶可以進行出差登記、銷假操作 e.系統用戶可以查看所有登記信息 3、計劃指定 計劃指定模塊包括企業計劃、部門計劃和個人計劃的指定。 a.企業高管可以進行企業計劃的新增、刪除、修改操作 b.部門管理人員可以進行部門計劃的新增、刪除、修改操作 c.每個用戶可以進行個人計劃的新增、刪除、修改操作 d.每個用戶都可以查看企業計劃、部門計劃和個人計劃 4、審核管理 審核管理包括發布申

25、請和審核批示。 a.用戶可以發布、修改、刪除申請信息 b.系統用戶可以對申請信息審核批示 5、員工管理 員工管理模塊可以進行員工的添加和維護。 6、通訊管理 通訊管理模塊主要負責存儲員工的通訊信息。 a.員工的通訊信息可以按通訊組分別進行存儲 b.系統用戶可對通訊信息進行新增、修改和刪除操作 3.2.3 系統其他需求 1、錯誤處理: 系統要有一定的容錯能力,出現錯誤及時提醒。 2、安全: 任何對系統的使用都必須先登錄,用戶登錄時,使用附加碼,避免惡意的網絡攻 擊。登錄 30 分鐘無任何操作會自動退出,以防被不法分子盜用。 3、性能需求: 系統對于用戶做出的任何請求都要在 10 秒之內做出響應,

26、做到盡快響應。 4、適用性: 用 struts 作為框架,用 java 語言實現,服務器可以允許于不同的操作系統之上。 5、可靠性: 系統要能夠持續工作比較長的時間,而且不發生嚴重錯誤。 6、接口需求: 硬件接口:鍵盤,鼠標,顯示器。 軟件接口:基于網絡的辦公平臺。 7、擴展需求: 將來要把公司的子公司聯入系統,可以實現異地辦公。 3.3 系統數據庫設計 3.3.1 數據表概要說明 開發系統之前首先要設計數據庫,系統數據庫的名稱為 db_work,共 14 張表,系 統所需數據庫表如圖 3.1 所示。 表表 3.13.1 數據庫表的設計數據庫表的設計 db_work tb_user用戶信息表

27、tb_meeting會議記錄表 tb_placard公告信息表 tb_waichu外出登記信息表 tb_qingjia請假登記信息表 tb_chuchai出差登記信息表 tb_onduty上下班登記信息表 tb_qiye企業計劃信息表 tb_bm部門計劃信息表 tb_person個人計劃信息表 tb_shenhe審核信息表 tb_tongxun通訊組表 tb_tongxunadd通訊信息詳細表 tb_menu菜單表 3.3.2 數據表的結構 1、tb_user 表用于保存用戶注冊的相關數據信息,結構如表 3.2 所示: 表表 3.2用戶信息表用戶信息表(tb_user) 字段描述類型 idid

28、(主鍵、自動編號)int username用戶名varchar pwd密碼varchar purview用戶權限varchar branch用戶所在部門varchar job用戶工作varchar sex用戶性別varchar email用戶電子郵件varchar tel用戶電話varchar address用戶地址varchar bestman優秀員工int 2、tb_meeting 表用于存儲會議信息,結構如表 3.3 所示: 表表 3.3 會議記錄表(會議記錄表(tb_meeting) 字段描述類型 id主鍵(自動編號)int mtime會議時間varchar zperson主持人var

29、char cperson出席人varchar subject會議主題varchar address會議地點varchar content會議內容varchar 3、tb_placard 表用于存公告信息,結構如表 3.4 所示: 表表 3.4公告記錄表(公告記錄表(tb_placard) 字段描述類型 id主鍵(自動編號)int person公告人varchar subject公告主題varchar ddate公告時間datetime content公告內容varchar 4、tb_waichu 表用于存儲員工的外出信息,結構如表 3.5 所示: 表表 3.5外出記錄表(外出記錄表(tb_wa

30、ichu) 字段描述類型 id主鍵(自動編號)int name1外出人varchar department外出人所在部門varchar content外出原因varchar time1外出時間datetime time2預計回歸時間datetime date是否回歸varchar 5、tb_qingjia 表用于存儲請假登記的信息,結構如表 3.6 所示: 表表 3.6 請假登記信息表(請假登記信息表(tb_qingjia) 字段描述類型 id主鍵(自動編號)int name1請假人varchar department請假人所在部門varchar content請假原因varchar time

31、1請假時間datetime time2預計回歸時間datetime state是否回歸int 6、tb_chuchai 表用于存儲出差登記的信息,結構如表 3.7 所示: 表表 3.7 出差登記信息表(出差登記信息表(tb_chuchai) 字段描述類型 id主鍵(自動編號)int chuarea出差地點varchar time1出差時間datetime time2預計回歸時間datetime name1出差人varchar department出差人所在部門varchar state是否回歸int 7、tb_onduty 表用于存儲上下班的登記信息,結構如表 3.8 所示: 表表 3.8上下

32、班記錄表(上下班記錄表(tb_onduty) 字段描述類型 id主鍵(自動編號)int name1登記人varchar department登記人所在部門varchar enroltype登記類型varchar tdefintime規定時間varchar enrolremark登記備注varchar state登記總結varchar 8、tb_qiye 表用于存儲企業計劃的信息,結構如表 3.9 所示: 表表 3.9 企業計劃信息表(企業計劃信息表(tb_qiye) 字段描述類型 id主鍵(自動編號)int riqi企業計劃時間datetime title企業計劃題目varchar conte

33、nt企業計劃內容varchar name1企業計劃人varchar 9、tb_bm 表用于存儲部門計劃的信息,結構如表 3.10 所示: 表表 3.10 部門計劃信息表(部門計劃信息表(tb_bm) 字段描述類型 id主鍵(自動編號)int name1部門計劃人varchar title部門計劃題目varchar content部門計劃內容varchar time1部門計劃時間datetime 10、tb_person 表用于存儲個人計劃的信息,結構如表 3.11 所示: 表表 3.11 個人計劃信息表(個人計劃信息表(tb_person) 字段描述類型 id主鍵(自動編號)int name1

34、計劃人varchar titlet個人計劃題目varchar content個人計劃內容varchar time1個人計劃時間datetime 11、tb_shenhe 表用于存儲申請審核的信息,結構如表 3.12 所示: 表表 3.12 審核信息表(審核信息表(tb_shenhe) 字段描述類型 id主鍵(自動編號)int title審核主題varchar content審核內容varchar time1審核時間datetime shen審核是否成功int 12、tb_tongxun 表用于存儲通訊組的信息,結構如表 3.13 所示: 表表 3.13 通訊組表(通訊組表(tb_tongxun

35、) 字段描述類型 id主鍵(自動編號)int name1員工姓名varchar 13、tb_tongxunadd 表用于存儲員工的通訊信息,結構如表 3.14 所示: 表表 3.14 通訊詳細信息表(通訊詳細信息表(tb_tongxunadd) 字段描述類型 id主鍵(自動編號)int name11員工姓名varchar birthday員工生日datetime sex員工性別varchar hy婚否varchar dw所屬單位varchar department所屬部門varchar zw職務varchar sf省份varchar cs城市varchar phone辦公電話varchar p

36、hone1移動電話varchar emial電子郵箱varchar postcode郵政編碼varchar qqqq 號碼varchar family家庭電話varchar address家庭住址varchar remark備注varchar name1通訊組int 14、tb_menu 表用于主頁面顯示的主菜單和子菜單,結構如表 3.15 所示: 表表 3.15 菜單表(菜單表(tb_menu) 字段描述類型 id主鍵(自動編號)int modeid按主菜單分類int menuname子菜單項varchar linkurl超鏈接地址varchar 第 4 章 系統詳細設計 本章將對系統進行詳

37、細設計,重點介紹各功能模塊的設計過程。 4.14.1 公共類的編寫公共類的編寫 在開發過程中,常會用到一些公共類,如 hibernate 配置文件、struts 配置文件、 session 的管理類等,編寫公用類的好處是,可以是程序的代碼更加工整,增強代碼的 重用性,還有利于程序的維護。下面逐一介紹各個公共類。 4.1.1 hibernatehibernate 配置文件的編寫配置文件的編寫 hibernate 從其配置文件中讀取和數據庫連接有關的信息,hibernate 的配置文件 有兩種形式:一種是 xml 格式的配置文件,另一種是辦公自動化管理系統采用的 hibernate 默認的 jav

38、a 屬性文件格式,配置文件名稱為 hperties,其基本格 式如下: hibernate.dialect=org.hibernate.dialect.sqlserverdialect hibernate.connection.driver_class=com.microsoft.sqlserver.jdbc.sqlserverdriver hibernate.connection.url=jdbc:sqlserver:/localhost:1433;databasename=db_work hibernate.connection.username=sa hibern

39、ate.connection.password=123 hibernate.show_sql=true hibernate.hbm2ddl.auto=none 4.1.2 sessionsession 管理類的編寫管理類的編寫 (1)定義 gethibernate 類,將其保存在 com.hiernate.util 包中,并編寫獲得 sessionfactory 的代碼,同時導入所需要的類包,代碼如下: package com.hiernate.util; /將類建在 com.hibernate.util 包下 import org.hibernate.session; /導入 org.hib

40、ernate.session 類 import org.hibernate.sessionfactory; /導入 org.hibernate.sessionfactory 類 import org.hibernate.cfg.configuration; /導入 org.hibernate.cfg.configuration 類 import com.hiernate.persistence.bm; /導入 com.hiernate.persistence.bm 類 public class gethibernate private static sessionfactory sf = nu

41、ll;/創建 sessionfactory 實例 static try configuration conf = new configuration().addclass(user.class) .addclass(menu.class).addclass(meeting.class) .addclass(placard.class).addclass(waichu.class) .addclass(qingjia.class).addclass(chuchai.class) .addclass(onduty.class).addclass(qiye.class) .addclass(bm.c

42、lass).addclass(person.class) .addclass(shenhe.class).addclass(tongxunadd.class) .addclass(tongxun.class); sf = conf.buildsessionfactory(); catch (exception e) e.printstacktrace(); (2)編寫打開 session 的方法 opensession() ,代碼如下: public session opensession()/以 session 為返回值創建打開 session 方法 session session = sf

43、.opensession(); /sessionfactory 的 opensession()方法獲得 session 實 例 return session; (3)編寫關閉 session 的方法 closesession() ,代碼如下: public void closesession(session session) /創建關閉 session 方法,參數為 session 實 例 if(session != null) /close()方法關閉 session session.close(); 4.1.3 獲得日期和時間類的編寫獲得日期和時間類的編寫 獲得日期和時間類主要包括獲得系統

44、日期、獲得系統日期和時間。該類的關鍵代 碼如下: package com.hiernate.util; /將該類保存在 com.hibernate.util 包下 import java.text.dateformat;/導入 java.text.dateformat 類 import java.text.parseexception;/導入 java.text.parseexception 類 import java.text.simpledateformat;/導入 java.text.simpledateformat 類 import java.util.calendar;/導入 jav

45、a.util.calendar 類 import java.util.date;/導入 java.util.date 類 public class gettime /判斷 date1 是否在 date2 之前 public static boolean isdatebefore(string date1,string date) boolean b = true;/根據該方法的返回值設置變量 dateformat df = dateformat.getdatetimeinstance(); /獲得時間格式,為系統默 認的格式 try b=df.parse(date1).before(df.pa

46、rse(date); /判斷 date1 是否在 date2 之前 catch (parseexception e) e.printstacktrace(); return b; /編寫獲得系統日期的方法 public static date getdate()/以 date 對象為返回值創建 getdate()方法 date dateu = new date(); /創建 date 類對象 java.sql.date date= new java.sql.date(dateu.gettime(); /gettime()方法可得到 當前系統的日期 return date; /編寫獲得日期和時間

47、的方法 public static string getdatetime()/該方法返回值為 string 類型 simpledateforma format; /simpledateformat 類使得可以選擇任何用戶定義的日期-時間格式的模式 date date = null; calendar mydate = calendar.getinstance(); /calendar 的方法 getinstance,以獲得此類型的一個通用的對象 mydate.settime(new java.util.date(); /使用給定的 date 設置此 calendar 的時 間 date = m

48、ydate.gettime(); /返回一個表示此 calendar 時間值(從歷元至現 在的毫秒偏移量)的 date 對象 format = new simpledateformat(yyyy-mm-dd hh:mm:ss); /設置時間格式為: 年、月、日、時、分、秒 string strrtn = format.format(date); /將給定的 date 格式化為日期/時間字符 串,并將結果賦值給給定的 string return strrtn; 4.1.4 字符串處理過濾器字符串處理過濾器 本系統中字符處理類為 myfilter,該類實現了 filter 接口,filter 接口

49、中有 init()、 destory()、dofilter()3 個方法。init()方法只在此過濾器第一次初始化時執行,對于簡單 的過濾器此方法可以為空;destory()方法在利用一個給定的過濾器對象持久地終止服務 器時調用,一般情況下此方法體為空;dofilter()方法為大多數過濾器的關鍵部分,該 方法包括 serverrequest、servletresponse、filterchain 3 個參數。在調用 filterchain 的 dofilter() 方法時,激活一個相關的過濾器。如果沒有另一個過濾器與 servlet 或 jsp 頁面關聯, 則 servlet 或 jsp 頁

50、面被激活,代碼如下: package com.struts.filter; /將過濾器保存在 com.struts.filter 包下 import java.io.ioexception; /導入 java.io.ioexception 類 import javax.servlet.filter;/導入 javax.servlet.filter 類 import javax.servlet.filterchain;/導入 javax.servlet.filterchain 類 import javax.servlet.filterconfig;/導入 avax.servlet.filterc

51、onfig 類 import javax.servlet.servletexception; /導入 avax.servlet.servletexception 類 import javax.servlet.servletrequest;/導入 javax.servlet.servletrequest 類 import javax.servlet.servletresponse; /導入 javax.servlet.servletresponse 類 public class myfilter implements filter public void dofilter(servletrequ

52、est request, servletresponse response, filterchain chain) throws ioexception, servletexception request.setcharacterencoding(gb2312); /設置 request 的編碼格式 response.setcharacterencoding(gb2312); /設置 response 的編碼格式 chain.dofilter(request, response);/調用 filterchain 對象的 dofilter()方法 public void init(filterc

53、onfig arg0) throws servletexception /該方法體為空 public void destroy() /destroy()此方法體為空 4.1.5 配置配置 struts struts 框架需要通過一個專門的配置文件來控制,它就是 struts-config.xml,當然也 可以取其他名字,那么網站是怎么找到這個 struts 的配置文件的呢,只要在 web.xml 里面配置即可,具體代碼如下: myfilter com.struts.filter.myfilter myfilter /* action org.apache.struts.action.actio

54、nservlet config /web-inf/struts-config.xml debug 3 detail 3 0 action *.do /web-inf/struts-html.tld /web-inf/struts-html.tld /web-inf/struts-bean.tld /web-inf/struts-bean.tld /web-inf/struts-logic.tld /web-inf/struts-logic.tld /web-inf/struts-tiles.tld /web-inf/struts-tiles.tld 在 web.xml 中配置 struts 的

55、配置文件,實際就是一個 servlet 的配置,在配置 servlet 的 config 參數中定義 struts 的配置 wenjian (包括相對路徑)及在 servlet 的 url 訪問里使用的后綴名,本系統中使用.do 作為后綴名。 接下來的工作就是如何配置 struts-config.xml 文件。本系統中的 struts-config.xml 文 件的關鍵代碼如下: 4.2 登錄模塊的設計登錄模塊的設計 4.2.1 登錄模塊概述登錄模塊概述 系統登錄模塊是用戶進入系統的窗口。用戶要進入系統必須輸入正確的用戶名、 密碼、驗證碼,否則會進入登錄失敗頁面。登錄模塊的框架圖如圖4.2所示

56、。 用戶 登錄 進入登錄 頁面 登錄失敗頁 面 進入主界 面 是否通 過驗證 驗證 n y 圖4.2 登錄模塊框架圖 4.2.2 登錄模塊技術分析登錄模塊技術分析 登錄模塊用于驗證用戶登錄身份。登錄模塊功能的實現應用里 mvc 設計模式,利 用 hibernate 完成對數據庫的增加、修改、刪除及查詢功能,action 類控制轉發路徑, jsp 頁面負責顯示。這樣給以后系統的維護帶來了方便。 在本模塊中通過對用戶名和密碼的參數綁定來驗證用戶的合法性。本模塊及系統 的其他模塊都采用 hql 檢索方式,與 sql 語法有些相似,但是 hql 是面向對象的, 操作的持久化類的類明和類的屬性,而 sq

57、l 操作的是表名和字段名。query 接口封裝 了 hql 查詢語句。在使用 hql 檢索方式檢索數據之前,hql 檢索數據的執行步驟如 下: (1)通過 session 類的 createquery()方法創建一個 query 對象,createquery()方法 的入口參數為 string 型的 hql 語句,在 hql 語句中可以包含命名參數,例如 strusername 為參數名稱。 query query=session.createquery(“from user as u where u.username=:strusername”); (2)為命名參數賦值,關鍵代碼如下: qu

58、ery.setstring(“strusername”,strusername); (3)通過調用 query 類的 list()方法執行數據檢索,其返回值為 list 型的結果集, 關鍵代碼如下: public static list finduser(string strusername, string strpwd) transaction tx = null; list list = null; try session = hib.opensession(); /調用公共類的開啟 session 方 法 tx = (transaction) session.begintransacti

59、on(); /開啟事物 query query = session.createquery(from user as u where u.username=:strusername and u.pwd=:strpwd); /應用 hql 檢索查找滿足條件的集合 query.setstring(strusername, strusername); /動態綁定參數 query.setstring(strpwd, strpwd); list = query.list(); /list 方法用來執行 hql 語句 mit(); /事務的提交 hib.closesession(session); /關閉

60、 session catch (exception e) e.printstacktrace(); /輸出異常信息 tx.rollback(); /事務的回滾 return list; 此外用戶登錄系統還需輸入正確的驗證碼,來提高系統的安全性。本系統的 images/num 文件夾下有文件名為 0.gif9.gif 的 10 張圖片。利用 math 類的 random()方 法可得到一個大于等于 0.0 小于 1.0 的隨機數,這個隨機數用于獲得名稱與隨機數相同 的圖片。值得注意的是 random()方法產生一個大于等于 0.0 小于 1.0 的隨機數返回值為 double 類型,在應用時應對

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論