摘 要: 設(shè)計并實現(xiàn)了基于J2EE架構(gòu)的經(jīng)濟(jì)普查系統(tǒng)。利用J2EE多層結(jié)構(gòu)模型的優(yōu)點,將系統(tǒng)分為表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)支持層等層次,介紹了各層次的設(shè)計,提出了經(jīng)濟(jì)普查系統(tǒng)中基于J2EE和MVC模式的解決方案;從設(shè)計者的角度,詳細(xì)闡述了整個系統(tǒng)的架構(gòu)與實現(xiàn)。建立了一套經(jīng)濟(jì)普查管理軟件,對經(jīng)濟(jì)普查數(shù)據(jù)實行集中管理、實時處理。
關(guān)鍵詞: 經(jīng)濟(jì)普查系統(tǒng); J2EE; MVC; 多層結(jié)構(gòu)模型
中圖分類號:TP311 文獻(xiàn)標(biāo)志碼:A 文章編號:1006-8228(2013)02-28-04
Design and implementation of economic census system based on J2EE
Zhang Lihong
(Zhejiang Changzheng Professional Technical College, Department of computing and information technology, Hangzhou, Zhejiang 310023, China)
Abstract: An economic census system based on J2EE is designed and realized. The system is divided into presentation layer, logic layer and data layer through J2EE multi-layer structure model. The design ideas of levels are described. The solution based on J2EE and MVC is proposed. The architecture and realization of the overall system are described from the designer's point of view. Furthermore, a set of economic census management software is designed, which has a centralized management and real-time processing for the economic census data.
Key words: economic census system; J2EE; MVC(Model-View-Controller); multi-layer structure model
0 引言
為了全面掌握國民經(jīng)濟(jì)的發(fā)展規(guī)模、結(jié)構(gòu)和效益等情況,我國于2008年進(jìn)行了第二次全國經(jīng)濟(jì)普查。這次普查的標(biāo)準(zhǔn)時間點為2008年12月31日,時期資料為2008年度[1]。普查對象是在我國境內(nèi)從事第二產(chǎn)業(yè)、第三產(chǎn)業(yè)的全部法人單位、產(chǎn)業(yè)活動單位和個體經(jīng)營戶,普查內(nèi)容主要包括單位基本屬性、就業(yè)人員、財務(wù)狀況、生產(chǎn)經(jīng)營情況、生產(chǎn)能力、原材料和能源消耗、科技活動情況等[2]。
1 經(jīng)濟(jì)普查系統(tǒng)中技術(shù)應(yīng)用現(xiàn)狀
目前,在經(jīng)濟(jì)普查系統(tǒng)中應(yīng)用的是具有一定競爭力的分布式組件技術(shù),主要包括.NET,CORBA,J2EE三大主流的組件模型[3]。
J2EE(Java 2 Platform Enterprise Edition)是美國Sun公司推出的一個適用于企業(yè)級計算的支持多層、分布式應(yīng)用的全新概念的Java平臺,它為搭建具有可伸縮性、靈活性、易維護(hù)性的企業(yè)信息系統(tǒng)提供了良好的機制[4]。
近年來,隨著Java技術(shù)的逐漸成熟與完善,J2EE平臺得到了長足的發(fā)展;而面向?qū)ο蟮腗VC設(shè)計模式與J2EE多層體系結(jié)構(gòu)結(jié)合起來,形成了一種快速高效的開發(fā)模式。其中,開源的Struts框架正是對MVC設(shè)計模式的實現(xiàn),它提供了國際化和靈活性等許多特性,而且它選擇基于對象關(guān)系映射技術(shù)的Hibernate作為持久層的解決方案是比較合適的。
Struts是一個Web框架,它是Apache 基金會Jakarta 項目組的一個Open Source項目,主要采用MVC模式,能夠很好地幫助Java開發(fā)者利用J2EE開發(fā)Web應(yīng)用[5]。和其他的Java架構(gòu)一樣,Struts 也是面向?qū)ο笤O(shè)計,其體系結(jié)構(gòu)包括模型(Model),視圖(View)和控制器(Controller)三部分。
Hibernate是Java應(yīng)用和關(guān)系數(shù)據(jù)庫之間的橋梁,負(fù)責(zé)Java對象和關(guān)系數(shù)據(jù)之間的映射[6]。它是一個開放源代碼的對象關(guān)系映射框架,內(nèi)部封裝了JDBC訪問數(shù)據(jù)庫的操作,向上層應(yīng)用提供了面向?qū)ο蟮臄?shù)據(jù)庫訪問API。Hibernate 在Java程序與數(shù)據(jù)庫之間進(jìn)行的轉(zhuǎn)換,就是將Java中的對象與對象的關(guān)系,對應(yīng)到關(guān)系型數(shù)據(jù)庫中的表與表之間的關(guān)系,Hibernate提供了這個過程中自動化對應(yīng)轉(zhuǎn)換的方案,同樣也提供關(guān)系型數(shù)據(jù)庫中表與表之間的關(guān)系,對應(yīng)到Java程序中對象與對象的關(guān)系。
2 系統(tǒng)功能分析與總體架構(gòu)
經(jīng)濟(jì)普查是關(guān)系國計民生的大事,對國民經(jīng)濟(jì)的發(fā)展起著重大作用。而經(jīng)濟(jì)普查系統(tǒng)是數(shù)據(jù)采集、處理與發(fā)布的基礎(chǔ),本章介紹了經(jīng)濟(jì)普查系統(tǒng)建設(shè)的意義、系統(tǒng)實現(xiàn)的主要功能與總體架構(gòu)。
2.1 需求陳述
經(jīng)濟(jì)普查系統(tǒng)是一套基于J2EE技術(shù),并以規(guī)范的統(tǒng)計分類和統(tǒng)計方法為基礎(chǔ)建立起來的普查系統(tǒng)。該系統(tǒng)應(yīng)具有強大的在線實時數(shù)據(jù)處理能力,能為加強和改善政府宏觀管理,調(diào)整經(jīng)濟(jì)結(jié)構(gòu),編制預(yù)算,規(guī)范稅源和規(guī)劃產(chǎn)業(yè)層次結(jié)構(gòu)提供重要依據(jù),是構(gòu)架國家宏觀數(shù)據(jù)庫,電子政務(wù)和實現(xiàn)國家行政管理現(xiàn)代化的重要基礎(chǔ)。
在系統(tǒng)的開發(fā)過程中,要充分考慮系統(tǒng)的可用性、可維護(hù)性、可擴(kuò)展性、安全性等,使用戶操作盡量簡單明了。
⑴ 要保證系統(tǒng)的響應(yīng)時間在普通用戶可接受的范圍內(nèi)。
⑵ 建立完整的元數(shù)據(jù)庫管理系統(tǒng),把統(tǒng)計涉及到的各類指標(biāo)納入管理范疇,做到統(tǒng)一管理、統(tǒng)一維護(hù)。系統(tǒng)在開發(fā)過程中要充分考慮統(tǒng)計應(yīng)用不確定性的實際情況,在統(tǒng)計指標(biāo)維護(hù)、系統(tǒng)功能擴(kuò)展等方面能適應(yīng)統(tǒng)計信息和應(yīng)用領(lǐng)域的變化。
⑶ 基本單位信息有部分涉密和敏感信息,在應(yīng)用系統(tǒng)設(shè)計中必須包含安全部分的設(shè)計,并加以實現(xiàn)。安全設(shè)計和實現(xiàn)應(yīng)該在應(yīng)用程序每一個層次上加以體現(xiàn),從而形成層次性深度防御。應(yīng)用程序訪問和數(shù)據(jù)分離,必須以非數(shù)據(jù)擁有者的身份訪問數(shù)據(jù)。應(yīng)用系統(tǒng)應(yīng)該包含一個多元的身份信息。
⑷ 用戶界面設(shè)計要求簡單明了,便于操作,應(yīng)主要遵循:界面直觀、對用戶透明的原則。
2.2 系統(tǒng)功能
根據(jù)普查的功能要求,可以把系統(tǒng)功能劃分為八項,即制度管理,調(diào)查對象管理,審核管理,數(shù)據(jù)匯總管理,數(shù)據(jù)查詢管理,元數(shù)據(jù)管理,系統(tǒng)管理和輔助功能。
2.2.1 制度管理
制度管理為專業(yè)用戶提供了制度布置和接收的功能。該子系統(tǒng)包括制度導(dǎo)入,制度導(dǎo)出,報表發(fā)布管理。
2.2.2 調(diào)查對象管理
經(jīng)濟(jì)普查的對象是在中華人民共和國境內(nèi)從事第二產(chǎn)業(yè)、第三產(chǎn)業(yè)活動的全部法人單位、產(chǎn)業(yè)活動單位和個體經(jīng)營戶[7],普查對象應(yīng)當(dāng)如實填寫經(jīng)濟(jì)普查數(shù)據(jù)。調(diào)查對象管理是指對被調(diào)查對象的管理,包括單位名錄管理,外網(wǎng)用戶管理。
2.2.3 審核管理
審核管理包括法人產(chǎn)業(yè)差錯清單、清理數(shù)據(jù)、審核結(jié)果分析、審核條件查看、數(shù)據(jù)成批審核。
2.2.4 數(shù)據(jù)匯總管理
數(shù)據(jù)匯總基于匯總關(guān)系,將基層數(shù)據(jù)加總得到匯總數(shù)據(jù),匯總關(guān)系是根據(jù)統(tǒng)計分組的設(shè)定來表達(dá)的。在數(shù)據(jù)匯總中,匯總表選擇供用戶來選擇需要執(zhí)行匯總的綜合表。
2.2.5 數(shù)據(jù)查詢管理
對于基層數(shù)據(jù),可以按報表進(jìn)行單指標(biāo)或多指標(biāo)組合查詢,查詢結(jié)果可以導(dǎo)出文件。對于綜合數(shù)據(jù),可以按表查詢,查詢結(jié)果可以導(dǎo)出excel文件。進(jìn)度查詢用于查看系統(tǒng)的執(zhí)行進(jìn)度情況。業(yè)務(wù)日志查詢用于查看,導(dǎo)出,刪除系統(tǒng)日志。
2.2.6 元數(shù)據(jù)管理
基于元數(shù)據(jù)標(biāo)準(zhǔn)的數(shù)據(jù)管理,為同級用戶之間進(jìn)行數(shù)據(jù)合并和上下級之間進(jìn)行數(shù)據(jù)上報、接收提供一致性的交互界面和后臺支持。主要包括數(shù)據(jù)導(dǎo)入與數(shù)據(jù)導(dǎo)出。其中數(shù)據(jù)導(dǎo)入包括導(dǎo)入本級數(shù)據(jù)、導(dǎo)入上報數(shù)據(jù)、導(dǎo)入清查數(shù)據(jù)。數(shù)據(jù)導(dǎo)出包括導(dǎo)出本級數(shù)據(jù)、導(dǎo)出上報數(shù)據(jù)。
2.2.7 系統(tǒng)管理
系統(tǒng)管理包括對國家統(tǒng)計局的所有組織進(jìn)行創(chuàng)建、修改、啟用、停用等操作;機構(gòu)用戶管理指的是對統(tǒng)計局專業(yè)用戶進(jìn)行管理。
2.3 數(shù)據(jù)庫設(shè)計
數(shù)據(jù)庫設(shè)計有兩個最重要的目標(biāo),即滿足應(yīng)用功能需求和良好的數(shù)據(jù)庫性能。所謂滿足應(yīng)用功能需求,主要是指用戶當(dāng)前與可預(yù)知的將來應(yīng)用所需要的數(shù)據(jù)及其聯(lián)系應(yīng)全部準(zhǔn)確地存在于數(shù)據(jù)庫之中,從而滿足用戶應(yīng)用中所需要的數(shù)據(jù)及其聯(lián)系應(yīng)全部準(zhǔn)確地存于數(shù)據(jù)庫中,從而滿足用戶應(yīng)用中所需要的對數(shù)據(jù)進(jìn)行的存、取、刪、改等操作。所謂良好的數(shù)據(jù)庫性能,主要是指對數(shù)據(jù)的高效率存取和空間的節(jié)省,并具有良好的數(shù)據(jù)共享性、完整性、一致性及安全保密性。
2.3.1 概念設(shè)計
概念設(shè)計是系統(tǒng)數(shù)據(jù)庫設(shè)計的關(guān)鍵,它通過對用戶需求進(jìn)行綜合、歸納與抽象,形成一個獨立于具體DBMS且反映組織信息需求的概念模型。本系統(tǒng)數(shù)據(jù)庫以實體聯(lián)系法(Entity-Relationship Approach)來建立數(shù)據(jù)庫的概念模型,按照系統(tǒng)數(shù)據(jù)流圖的分析結(jié)果,下面以調(diào)查對象管理中的單位名錄管理模塊為例構(gòu)造出它們的E-R圖。根據(jù)需求和功能分解分析得到初步的用戶數(shù)據(jù),如圖1所示,用E-R圖表示新增調(diào)查對象信息的需求(圖1中只畫出了主要屬性)。
[地區(qū)] [部門] [角色] [注冊
類型] [用戶][調(diào)查
對象][增加] [行業(yè)
代碼] [單位
代碼] [單位
名稱] [主營
業(yè)務(wù)] [上級] [操作
時間]
圖1 用戶修改企業(yè)信息的實體聯(lián)系模型
2.3.2 邏輯設(shè)計
邏輯設(shè)計就是把概念結(jié)構(gòu)轉(zhuǎn)換成所選擇的DBMS支持的數(shù)據(jù)模型,并對其進(jìn)行優(yōu)化,也就是將概念結(jié)構(gòu)設(shè)計得到的E-R圖,轉(zhuǎn)換生成等價的數(shù)據(jù)庫關(guān)系模式,并對轉(zhuǎn)換后的模型進(jìn)行定義描述。而在用戶看來,一個關(guān)系模型的邏輯結(jié)構(gòu)是一張二維表,由行和列組成。
在建立數(shù)據(jù)庫的關(guān)系模式時,需要遵循一定的原則。一方面,要求每個關(guān)系都應(yīng)滿足一定的規(guī)范,只有這樣才能使關(guān)系模式設(shè)計合理、冗余最小、操作高效。本系統(tǒng)數(shù)據(jù)庫的設(shè)計要求是:滿足第三范式(3NF);滿足數(shù)據(jù)的一致性、完整性、安全性等原則。
2.3.3 物理設(shè)計
數(shù)據(jù)庫最終是要存儲在物理設(shè)備上的。為一個給定的邏輯數(shù)據(jù)模型選取一個最適合應(yīng)用環(huán)境的物理結(jié)構(gòu)(存儲結(jié)構(gòu)與存取方法)的過程,就是數(shù)據(jù)庫的物理設(shè)計。物理結(jié)構(gòu)依賴于給定的DBMS和硬件系統(tǒng),因此,設(shè)計人員必須充分了解所用DBMS的內(nèi)部特征,特別是存儲結(jié)構(gòu)和存取方法;充分了解應(yīng)用環(huán)境,特別是應(yīng)用的處理頻率和響應(yīng)時間要求;以及充分了解外存設(shè)備的特性。
數(shù)據(jù)庫的物理設(shè)計通常分為以下兩步。
⑴ 確定數(shù)據(jù)庫的物理結(jié)構(gòu)
確定數(shù)據(jù)庫存儲結(jié)構(gòu)時要綜合考慮存取時間、存儲空間利用率和維護(hù)代價三方面的因素。這三個方面常常是相互矛盾的,例如消除一切冗余數(shù)據(jù)雖然能夠節(jié)約存儲空間,但往往會導(dǎo)致檢索代價的增加,因此必須進(jìn)行權(quán)衡,選擇一個折中方案。
⑵ 對物理結(jié)構(gòu)進(jìn)行評價,評價的重點是時間和空間效率
評價物理數(shù)據(jù)庫的方法完全依賴于所選用的DBMS,主要是從定量估算各種方案的存儲空間、存取時間和維護(hù)代價入手,對估算結(jié)果進(jìn)行權(quán)衡、比較,選擇出一個較優(yōu)的合理的物理結(jié)構(gòu)。如果該結(jié)構(gòu)不符合用戶需求,則需要修改設(shè)計。
3 系統(tǒng)實現(xiàn)
基于上述的總體架構(gòu)與平臺設(shè)計,本章將介紹經(jīng)濟(jì)普查系統(tǒng)的實現(xiàn)。其中包括系統(tǒng)的實現(xiàn)平臺、Struts應(yīng)用配置、數(shù)據(jù)持久化層的實現(xiàn)和系統(tǒng)管理模塊的實現(xiàn)。
3.1 系統(tǒng)實現(xiàn)平臺
經(jīng)濟(jì)普查系統(tǒng)采用tomcat 6.0作為J2EE服務(wù)器,數(shù)據(jù)庫服務(wù)器采用oracle 10g,采用B/S模式。在J2EE體系中,用Struts actionServlet控制,用JSP表現(xiàn),而業(yè)務(wù)邏輯處理層用Javabean實現(xiàn),持久化層采用Hibernate 3.0實現(xiàn)。
3.2 Struts應(yīng)用配置
3.2.1 Struts配置
在Web.xml中設(shè)置org.apache.Struts.action.ActionServlet的一個實例。在一個完整的控制過程中,也就是處理一個HTTP請求時,在控制過程之初,這個Servlet會從一個配置文件Struts-config.xml中獲取請求與控制動作相對應(yīng)的配置信息,Controller通過這些配置信息來決定HTTP請求該往何處轉(zhuǎn)發(fā),而這些Action在接收到轉(zhuǎn)發(fā)來的請求后,實現(xiàn)真正的商業(yè)邏輯。在Web.xml文件中添加如下代碼:
<!--Struts config-->
org.apache.Struts.action.ActionServlet
3.2.2 配置Struts-config.xml文件
Controller通過Struts-config.xml文件的配置信息確定當(dāng)有請求時該調(diào)用哪個對象來處理,Struts-config.xml文件是頁面Struts頁面導(dǎo)航最重要的文件,下面以系統(tǒng)用戶登錄為例介紹系統(tǒng)的文件配置。
身份驗證是在許可用戶(應(yīng)用程序)訪問某個資源之前,鑒別其身份。授權(quán)發(fā)生在身份驗證之后,是確定用戶訪問資源時可享用的特權(quán)。未經(jīng)過身份驗證的用戶被稱為匿名用戶。身份驗證是Web應(yīng)用程序安全性的主要功能,系統(tǒng)登錄由賬戶和密碼組成。
配置ActionForm,前面介紹過一般一個Jsp頁面需要對應(yīng)一個Model,即這里的ActionForm,此登錄表單對應(yīng)的ActionForm如下:
public class LoginForm extends ActionForm {
private static final long serialVersionUID
=0x37fa8cd9c5eb4cd6L;
String userId;
String passwd;
public LoginForm() {
}
public String getPasswd() {
return passwd; }
public void setPasswd(String passwd) {
this.passwd=passwd; }
public String getUserId() {
return userId; }
public void setUserId(String userId) {
this.userId=userId; }
}
3.3 數(shù)據(jù)持久化層的實現(xiàn)
3.3.1 Hibernate配置文件
⑴ Hibernate.cfg.xml文件的建立
Hibernate可以從Hibernate.properties或者自定義的xml配置文件中讀取和數(shù)據(jù)庫連接有關(guān)的信息,此處我們在Hibernate.cfg.xml文件中定義數(shù)據(jù)庫:
<!一指定數(shù)據(jù)庫的驅(qū)動程序一>
name=\"Hibernate.connection.driver class\"> oracle jdbc.driver.OracleDriver <!一指定連接數(shù)據(jù)庫的}__> name=\"Hibernate.connection.url\">jdbc:oracleahin: @localhost:1521:jp2data system <!一指定數(shù)據(jù)庫的密碼一> zju <}一指定數(shù)據(jù)庫連接池大小一 <!一指定數(shù)據(jù)庫所適用的SQL方言一> net.sfHibernate.dialect.Oracle9Dialect
3.3.2 數(shù)據(jù)訪問對象DAO的實現(xiàn)
在系統(tǒng)中,使用數(shù)據(jù)訪問對象DAO(Data Access Object)設(shè)計模式,以便將低級別的數(shù)據(jù)訪問邏輯與高級別業(yè)務(wù)邏輯分離。DAO需要與數(shù)據(jù)源一起工作實現(xiàn)訪問機制。通過把Hibernate API封裝在DAO中,讓用戶直接調(diào)用封裝好的方法來訪問數(shù)據(jù)庫,這樣實現(xiàn)了對象的抽象化,也提高了對象的重用性。當(dāng)?shù)讓訑?shù)據(jù)源發(fā)生變化時,DAO向客戶端提供的接口不會變化,所以該模式允許DAO調(diào)整到不同的存儲模式,而不會影響其客戶端或業(yè)務(wù)組件。圖2為DAO實現(xiàn)圖。
[業(yè)務(wù)邏輯
對象][數(shù)據(jù)訪問
對象][數(shù)據(jù)源][數(shù)據(jù)傳輸
對象] [調(diào)用] [封裝] [調(diào)用/生成][獲取/修改]
圖2 DAO模式圖
在圖2中,業(yè)務(wù)邏輯對象代表需要對數(shù)據(jù)源進(jìn)行訪問的客戶端,它可以是EJB組件或Web組件??蛻舳送ㄟ^DAO模式的實現(xiàn)類來訪問數(shù)據(jù)源。數(shù)據(jù)訪問對象類封裝了訪問數(shù)據(jù)源的所有方法。數(shù)據(jù)傳輸對象類負(fù)責(zé)在數(shù)據(jù)源和客戶端之間進(jìn)行數(shù)據(jù)的封裝和傳輸。當(dāng)客戶端獲取數(shù)據(jù)時,調(diào)用數(shù)據(jù)訪問對象中的相關(guān)方法,再由該方法實現(xiàn)對數(shù)據(jù)源的讀取操作,在得到相關(guān)數(shù)據(jù)后,該方法生成一個數(shù)據(jù)傳輸對象并將這些數(shù)據(jù)封裝在該對象中,最后將這個數(shù)據(jù)傳輸對象返回客戶端。同樣,當(dāng)客戶端需要對數(shù)據(jù)源進(jìn)行寫入操作時,會將需要更新的數(shù)據(jù)寫入一個數(shù)據(jù)傳輸對象中,再將其用作參數(shù)傳遞給數(shù)據(jù)訪問對象類中用于實現(xiàn)數(shù)據(jù)存儲的方法,并由其完成對數(shù)據(jù)源的寫入操作。
以系統(tǒng)中的UserDAO為例,其代碼部分如下:
public class UserDAOImpl extends HibernateDaoSupport
implements IUserDAO {
public void insert(User user)
throws DataAccessException {
getHibernateTemplate().save(user); }
public void delete(User user)
throws DataAccessException {
System.out.println(\"delete user:\" + user.getUserID());
getHibernateTemplate().delete(user); }
public void update(User user)
throws DataAccessException {
getHibernateTemplate().merge(user); }
}
通過在DAO中封裝getHibernateTemplate以實現(xiàn)對數(shù)據(jù)庫的操作,程序員只需要調(diào)用相應(yīng)的業(yè)務(wù)邏輯如insert、delete方法等即可,不必關(guān)心內(nèi)部操作細(xì)節(jié)。
4 結(jié)束語
本文主要探討了如何構(gòu)建一個基于J2EE架構(gòu)的多層分布式系統(tǒng)。結(jié)合目前的成熟技術(shù)和以往的研究成果,提出了一個綜合利用Struts和Hibernate框架、實現(xiàn)符合MVC設(shè)計模式的系統(tǒng)總體架構(gòu)方案,并詳細(xì)闡述了系統(tǒng)中一些模塊的實現(xiàn)方法及步驟。實踐證明,應(yīng)用基于Struts和Hibernate設(shè)計框架開發(fā)的、在J2EE平臺下的Web系統(tǒng),其系統(tǒng)的結(jié)構(gòu)層次比較清晰,可較好地實現(xiàn)層與層之間的解耦,提高了軟件開發(fā)的效率和維護(hù)的質(zhì)量,也提高了系統(tǒng)的可擴(kuò)展性、可維護(hù)性和可操作性。
參考文獻(xiàn):
[1] 四川省人民政府經(jīng)濟(jì)普查領(lǐng)導(dǎo)小組辦公室.第二次全國經(jīng)濟(jì)普查概要.四川省情,2008.8.
[2] 全國經(jīng)濟(jì)普查條例.北京統(tǒng)計,2004.10.
[3] 林星.面向組件的大規(guī)模軟件架構(gòu)[J].IBM Developerworks,2004.3.
[4] 閻娟娟,陳波,王樂.基于Struts和Hibernate的J2EE架構(gòu)的研究[J].計算機工程與設(shè)計,2008.21.
[5] 高紅梅,衛(wèi)龍.基于struts框架的Web應(yīng)用[J].技術(shù)與市場,2009.11.
[6] 陜振杰,黃宇.基于Struts框架的Hibernate應(yīng)用研究[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2005.10.
[7] 許憲春.關(guān)于經(jīng)濟(jì)普查年度GDP核算方案的思考[J].經(jīng)濟(jì)科學(xué),2005.3:5-8