【摘 要】隨著計(jì)算機(jī)科學(xué)技術(shù)的發(fā)展,辦公自動(dòng)化已經(jīng)深入到我們工作生活的方法面面,公文管理系統(tǒng)應(yīng)運(yùn)而生。由于無紙化的操作,公文管理系統(tǒng)大大節(jié)約了公文流轉(zhuǎn)過程中各個(gè)環(huán)節(jié)的耗時(shí),提高了使用單位和部門的工作效率。本文使用mvc編程模式,運(yùn)用struts、hibernate、spring三大框架來實(shí)現(xiàn)公文管理系統(tǒng)中的發(fā)文管理、收文管理、審核管理、個(gè)人信息管理、用戶信息管理等主要功能。
【關(guān)鍵詞】公文管理;MVC;struts;hibernate;spring
一、引言
辦公自動(dòng)化的產(chǎn)生和發(fā)展催生了許多辦公自動(dòng)化軟件產(chǎn)品,針對(duì)于辦公自動(dòng)化的核心——公文管理的軟件產(chǎn)品也有各種各樣的實(shí)現(xiàn)方式,而其基本功能要求上大致相同,不同的實(shí)現(xiàn)方式有其不同的優(yōu)點(diǎn)。本文采用MVC模式,運(yùn)用J2EE開發(fā)中常使用的三大框架struts、hibernate、spring來實(shí)現(xiàn)公文管理系統(tǒng)功能,提高了系統(tǒng)的開發(fā)效率與可重用性,降低的代碼冗余度,代碼具有更好的封裝性,MVC模式中各層之間并不透明,增加了代碼的安全性,各層之間耦合度低,當(dāng)系統(tǒng)需要增減功能時(shí),不用修改已經(jīng)寫好的部分的代碼,直接增加該功能的實(shí)現(xiàn)即可,代碼的可擴(kuò)展性良好。
二、需求分析
(一)公文管理系統(tǒng)簡(jiǎn)介
本文實(shí)現(xiàn)公文管理系統(tǒng)的一般功能,公文管理系統(tǒng)的功能是進(jìn)行公文的統(tǒng)一管理,用戶登錄系統(tǒng)后,可以進(jìn)行發(fā)文操作,具有權(quán)限的用戶收取這篇文章,對(duì)文章進(jìn)行審核,通過審核的文章將會(huì)在發(fā)送該公文的用戶系統(tǒng)的被審公文中顯示,同時(shí)用戶可以下載公文中包含的附件。
(二)功能分析
1、用戶信息管理。對(duì)用戶及用戶信息的管理即是對(duì)用戶資料檔案、用戶的分類、用戶的優(yōu)先級(jí)別等信息的管理,在公文管理系統(tǒng)中,發(fā)文與收文操作都與用戶信息有關(guān)聯(lián)。
2、個(gè)人信息管理。個(gè)人信息管理即用戶對(duì)自己信息的維護(hù),實(shí)現(xiàn)修改密碼和用戶名等,管理員用戶和普通可以自定義自己的用戶名及密碼,但是root用戶不能修改自己信息。
3、公文管理
公文管理包括兩個(gè)子功能:收文管理和發(fā)文管理
發(fā)文管理
發(fā)文管理的主要功能需求如下:
編輯公文:用戶可以通過一般的輸入方式錄入公文,也可以通過上傳文件的方式實(shí)現(xiàn)公文的錄入,普通用戶可以修改自己發(fā)布的公文,被選作公文接收者的用戶可以修改自己發(fā)布的公文,審核其收到的公文[2]
公文查詢:系統(tǒng)可實(shí)現(xiàn)對(duì)全部公文按創(chuàng)建公文用戶查詢,并將查詢結(jié)果按時(shí)間排序[3]
公文導(dǎo)出:系統(tǒng)實(shí)現(xiàn)了對(duì)公文進(jìn)行附件上傳錄入的模式,同時(shí)也實(shí)現(xiàn)了公文附件下載,用戶可以通過將公文附件下載保存到本地機(jī)進(jìn)行查看,打印等操作[3]
(2) 收文管理
收文管理的主要功需求能如下:
收文登記:自動(dòng)完成收文
公文查詢:對(duì)全部公文按條件查詢,并將查詢結(jié)果按時(shí)間排序[3]
公文導(dǎo)出:可以將公文下載到本地機(jī)上進(jìn)行修改,查看等操作[3]
公文辦理:授權(quán)管理員可對(duì)自己收到的文件進(jìn)行審批工作
(三)系統(tǒng)活動(dòng)圖
三、MVC模式與主要實(shí)現(xiàn)技術(shù)
(一) MVC模式
MVC是一種使用MVC(Model View Controller 模型-視圖-控制器)設(shè)計(jì)創(chuàng)建Web應(yīng)用程序的模式[1]。
Model(模型)表示應(yīng)用程序核心,是應(yīng)用程序中用于處理應(yīng)用程序數(shù)據(jù)邏輯的部分,通常模型對(duì)象負(fù)責(zé)在數(shù)據(jù)庫中存取數(shù)據(jù)。
View(視圖)顯示數(shù)據(jù),是應(yīng)用程序中處理數(shù)據(jù)顯示的部分,通常是依據(jù)模型數(shù)據(jù)創(chuàng)建的。
Controller(控制器)處理輸入即寫入數(shù)據(jù)庫記錄,是應(yīng)用程序中處理用戶交互的部分。通??刂破髫?fù)責(zé)從視圖讀取數(shù)據(jù),控制用戶輸入,并向模型發(fā)送數(shù)據(jù)。
MVC分層有助于管理復(fù)雜的應(yīng)用程序,可以在一個(gè)時(shí)間內(nèi)專門關(guān)注一個(gè)方面。同時(shí)也讓應(yīng)用程序的測(cè)試更加容易。MVC分層同時(shí)也簡(jiǎn)化了分組開發(fā)。不同的開發(fā)人員可同時(shí)開發(fā)視圖、控制器邏輯和業(yè)務(wù)邏輯。
(二)主要實(shí)現(xiàn)技術(shù)
1、JSP技術(shù)
Java Server Pages(JSP)是一種實(shí)現(xiàn)普通靜態(tài)HTML和動(dòng)態(tài)HTML混合編碼的技術(shù)。JSP頁面由HTML代碼和嵌入其中的JAVA代碼所組成。服務(wù)器在頁面被客戶端所請(qǐng)求以后對(duì)這些JAVA代碼進(jìn)行處理,然后將生成的HTML頁面返回給客戶端的瀏覽器。
2、Struts
Struts是Apache基金會(huì)的一個(gè)開源項(xiàng)目,是應(yīng)有最廣泛的Java Web開發(fā)框架。Struts提供通用的MVC體系結(jié)構(gòu),把傳統(tǒng)的Web開發(fā)(Servlet+JSP)分成Model(模型層)、View(視圖層)、Control(控制層)三部分,使設(shè)計(jì)思路更加清晰。其中Model層專注于業(yè)務(wù)邏輯(即數(shù)據(jù)的存儲(chǔ)、處理等),View專注于數(shù)據(jù)在瀏覽器端的顯示,Control層連接Model層與View層[4]。Struts有著詳細(xì)的文檔、廣泛的支持。其作用是接收用戶請(qǐng)求,調(diào)用業(yè)務(wù)邏輯代碼,轉(zhuǎn)發(fā)到正確的頁面。在struts中,所有的控制邏輯都是利用struts-config.xml文件來進(jìn)行配置的。
3、Spring
Spring是一個(gè)輕量級(jí)MVC框架,不需要特殊的容器支持,不依賴于特定的規(guī)范如J2EE規(guī)范等, Spring不提供某種功能,它只是將所有的組件部署到Spring中,管理、維護(hù)、執(zhí)行它們,因此Spring也被稱為輕量級(jí)“容器”。Spring最重要的思想是Inversion of Control(控制反轉(zhuǎn)或反向控制),或者稱為Dependency Injection(依賴注入),負(fù)責(zé)根據(jù)配置信息,創(chuàng)建不同的數(shù)據(jù)訪問層及業(yè)務(wù)邏輯層的實(shí)例,并將其注入到業(yè)務(wù)邏輯層與表現(xiàn)層中,從而實(shí)現(xiàn)三個(gè)層次的解耦。
4、Hibernate
Hibernate是一種ORM框架,使用簡(jiǎn)單、功能強(qiáng)大、對(duì)所有的數(shù)據(jù)庫都有良好的支持。Hibernate能直接操作POJO,并且是一種輕量級(jí)的框架,不依賴于任何容器。在Hibernate中,Hibernate充當(dāng)了Dao層,根據(jù)POJO與實(shí)體類的映射配置自動(dòng)生成相應(yīng)的SQL語句。從控制臺(tái)輸出可以看到Hibernate生成的SQL語句。當(dāng)實(shí)體類發(fā)生變化時(shí),只需修改實(shí)體類配置。
四、公文管理系統(tǒng)的實(shí)現(xiàn)
(一)視圖層的實(shí)現(xiàn)
視圖層采用實(shí)現(xiàn)了MVC模式的struts框架來實(shí)現(xiàn)
1、Model層實(shí)現(xiàn):作用是向Action對(duì)象提供數(shù)據(jù)
package com.qlzeng.documentManager.model;
public class User {
private int userId;
private int level;
… …
public int getLevel() {
return level; }
public void setLevel(int level) {
this.level = level;}
public int getUserId() {
return userId;}
… …
}
2、View層實(shí)現(xiàn):即頁面設(shè)計(jì),實(shí)現(xiàn)主要包括 jsp 文件、css 文件
<%@ page language=\"java\" contentType=\"text/html; charset=GB18030\" pageEncoding=\"GB18030\"%>
<%@include file=\"/common/common.jsp\" %>
<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">
……
3、Controller層實(shí)現(xiàn)
(1) 編寫Action類實(shí)現(xiàn)對(duì)Jsp頁面代碼的隱藏
public ActionForward modify(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {UserForm uf = (UserForm)form;
User user = manager4User.findUserById(uf.getUserId());
if (uf.getUsername() != 1 uf.getPassword() != 1 uf.getPassword() != \"\" uf.getUsername() != 1) {
if(uf.getUserId() != 1) {
BeanUtils.copyProperties(user, uf);
manager4User.modifyUser(user);
}
}
request.getSession().setAttribute(\"user\", user);
return mapping.findForward(\"user_modify_success\");
}
(2) 通過Struts-config.xml文件控制頁面跳轉(zhuǎn)
name=\"userForm\" scope=\"request\" parameter=\"method\" >
(二)控制器層的實(shí)現(xiàn)
控制器層也稱作業(yè)務(wù)邏輯層,通過Spring框架來實(shí)現(xiàn),通過對(duì)Spring的配置,實(shí)現(xiàn)Spring、struts和hibernate的集成。并且提供實(shí)現(xiàn)業(yè)務(wù)邏輯的接口,便于視圖層訪問模型層。
package com.qlzeng.documentManager.manager;
import ……
public interface Manager4User {
public User findUserById(int userId);
public PagerModel searchUsers();
public void addUser(User user);
public void deleteUser(int userId);
public void modifyUser(User user);
public User login(String username, String password, HttpServletRequest request);
}
(三)模型層的實(shí)現(xiàn)
模型層也叫數(shù)據(jù)訪問層,通過hibernate框架來實(shí)現(xiàn),其功能有兩個(gè),其一為配置數(shù)據(jù)庫服務(wù)器類型,實(shí)現(xiàn)與數(shù)據(jù)庫連接,其二為映射實(shí)體類與數(shù)據(jù)表,持久化對(duì)象。
五、結(jié)語
公文管理系統(tǒng)被廣泛運(yùn)用于各種企事業(yè)單位中,本文提供了一種基于MVC模式的公文管理系統(tǒng)的實(shí)現(xiàn)方式,使得一個(gè)實(shí)現(xiàn)了基本公文管理功能的系統(tǒng)可以在加入不同使用部門所特有的業(yè)務(wù)邏輯功能后適用于不同的單位,具有較高的通用性。
參考文獻(xiàn):
[1]孫福振,李艷,李業(yè)剛,J2EE平臺(tái)上MVC設(shè)計(jì)模式的研究與實(shí)現(xiàn)[J],山東理工大學(xué)學(xué)報(bào),2006, 20(2),P50-51.
[2]劉先偉,基于.NET的政府協(xié)同辦公自動(dòng)化系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D],電子科技大學(xué),2010.
[3]謝瑤,湖南人文科技學(xué)院公文流轉(zhuǎn)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D],山東大學(xué),2011.
[4]王經(jīng)緯,船舶票務(wù)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D],大連海事大學(xué),2011.
作者簡(jiǎn)介:曾秋麗(1990.9--)貴州大學(xué),電子信息學(xué)院 ,電子與通信工程專業(yè)。