国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于JSP工廠模式的工資查詢系統(tǒng)設(shè)計與實現(xiàn)

2012-04-29 09:01:56郭文龍
計算機時代 2012年11期
關(guān)鍵詞:分層

郭文龍

摘要: 分層思想在JSP技術(shù)的開發(fā)過程中的優(yōu)點是層次清楚,這有利于不同程序員分式開發(fā),從而提高效率;但是在應(yīng)用每一層相關(guān)類的時候需要實例化,這會增加系統(tǒng)開銷。采用工廠模式在開發(fā)過程中向程序員提供一個“工廠”供程序員選擇“零件”,可以減少實例化次數(shù)。工廠開發(fā)模式在JSP+tomcat的開發(fā)中,可結(jié)合分層思想,按照不同的層次進行開發(fā),同時也可獨立出公共模塊切入到其他模塊中,有效地避免了代碼重復(fù),提高了開發(fā)效率。

關(guān)鍵詞: 分層; 工廠模式; JSP; tomcat

中國分類號:TP311文獻標志碼:A 文章編號:1006-8228(2012)11-66-03

Design and implementation of wage query system based on the JSP factory pattern

Guo Wenlong

(Dingxi Teachers College, Dingxi, Gansu 743000, China)

Abstract: The advantage of layered idea development in JSP technology process includes clear hierarchy, from which different programmers fractional development benefits, thus efficiency is improved. But in the application of each layer class it needs to be instantiated, and will increase the system overhead. Applying factory pattern extension development process provides programmers with a "factory" for the programmers to choose “parts”, which can reduce the number of instantiating. Factory development patterns in the development of JSP+tomcat can not only combine with hierarchical idea, according to the different levels of development, but also separate from public module entry to the other modules, to effectively solve the code duplication, improve development efficiency.

Key words: stratification; the factory pattern; JSP; Tomcat

0 引言

分層模式是在Web開發(fā)中應(yīng)用比較成熟的一種技術(shù),開發(fā)分三層結(jié)構(gòu):數(shù)據(jù)持久層、業(yè)務(wù)處理層和表示層,其中數(shù)據(jù)持久層負責(zé)數(shù)據(jù)庫的連接并執(zhí)行SQL語句,業(yè)務(wù)處理層主要負責(zé)業(yè)務(wù)邏輯,對用戶或系統(tǒng)要求的邏輯功能進行統(tǒng)一管理,表示層主要提供以瀏覽器模式的用戶操作界面,這三層架構(gòu)大多采用struts+spring+hibernate架構(gòu)來實現(xiàn)。但是這樣的架構(gòu)對服務(wù)器(特別是對tomcat這樣的輕量級服務(wù)器)來說負荷非常大,不利于小型項目的開發(fā)。JSP+tomcat負荷雖然小,但開發(fā)時代碼的重復(fù)率太高。而采用工廠開發(fā)模式能解決JSP的這一問題[1],可大大的提高開發(fā)效率,并保證tomcat輕裝上陣。

工廠就是生成產(chǎn)品(對象)的地方,對于復(fù)雜的對象生產(chǎn)過程,比如按條件生成不同的對象實體時,不適合用類的構(gòu)造函數(shù)實現(xiàn)(這樣會導(dǎo)致構(gòu)造函數(shù)過于復(fù)雜),進而可用工廠方式代替。工廠模式其實質(zhì)性的內(nèi)容就是:提供創(chuàng)建對象的接口,讓用戶選擇需要的產(chǎn)品。把對象的創(chuàng)建封裝起來,使得創(chuàng)建實例的責(zé)任與使用實例的責(zé)任分割開來,并由專門的模塊負責(zé)創(chuàng)建實例,而系統(tǒng)在宏觀上不再依賴于對象創(chuàng)建的細節(jié)[2]。

工廠開發(fā)模式分為簡單工廠模式、工廠方法、抽象工廠模式[3]。簡單工廠模式可以根據(jù)傳入的參數(shù)決定創(chuàng)建哪一個類的實例,它其實是工廠方法和抽象工廠模式在一定程度上的簡化形式。工廠原理如圖1所示。

圖1工廠原理圖

在圖1中UserManagerFactory向開發(fā)者提供產(chǎn)品,而它所提供的產(chǎn)品依賴于接口UserManagerDao,接口的實現(xiàn)由類UserManagerDaoImpl來完成。

1 系統(tǒng)設(shè)計

教職工工資查詢系統(tǒng)采用簡單工廠模式來開發(fā)。本系統(tǒng)的主要功能模塊如圖2所示,此外還包括用戶服務(wù)登錄模塊和身份驗證功能模塊。根據(jù)這些功能模塊和數(shù)據(jù)訪問以及業(yè)務(wù)處理的要求,分成了四個層次,分別是數(shù)據(jù)訪問層、業(yè)務(wù)邏輯層、工廠和使用工廠的頁面,其中業(yè)務(wù)邏輯層分為業(yè)務(wù)接口和業(yè)務(wù)實現(xiàn)。

[工資查詢系統(tǒng)][查看個人信息][設(shè)置密碼保護][修改個人密碼][工資查詢][查看最近公告][教職工用戶][系統(tǒng)管理員][修改個人密碼][上傳工資][刪除工資][查看日志][刪除日志][發(fā)布公告][刪除公告][添加單個用戶][批量添加用戶][刪除用戶]

圖2工資查詢系統(tǒng)功能模塊

1.1 數(shù)據(jù)訪問層

數(shù)據(jù)訪問層主要用來封裝訪問數(shù)據(jù)庫的代碼,并產(chǎn)生Connection對象。在教職工工資查詢系統(tǒng)中采用數(shù)據(jù)連接池方式來連接數(shù)據(jù)庫的,這樣可以有效減少利用JDBC連接時多次實例化和容易忘記關(guān)閉Connection對象的弊端[4]。

1.2 業(yè)務(wù)接口層

主要用來向工廠提供產(chǎn)品的接口。根據(jù)功能圖分成以下幾種接口:

⑴ 用戶管理:用來提供增加、刪除、修改、查詢、批量導(dǎo)入用戶等方法。

⑵ 工資管理:用來提供上傳工資文件并轉(zhuǎn)化成數(shù)據(jù)表文件、刪除和查詢等方法。

⑶ 公告管理:用來提供添加、刪除和查詢公告等方法。

1.3 業(yè)務(wù)實現(xiàn)層

針對接口層的方法對系統(tǒng)進行實現(xiàn)。這是整個系統(tǒng)業(yè)務(wù)功能實現(xiàn)的核心,業(yè)務(wù)邏輯處理主要在業(yè)務(wù)實現(xiàn)層來完成,負責(zé)與數(shù)據(jù)訪問層進行交互,向工廠提供“零件”。

1.4 公共業(yè)務(wù)層

針對系統(tǒng)的安全性要求,系統(tǒng)實現(xiàn)身份驗證和日志記錄功能,該功能主要用來防止非法用戶進入系統(tǒng),以及在發(fā)生了問題以后系統(tǒng)可根據(jù)日志記錄來恢復(fù)。管理員和普通用戶操作每一個頁面時,通過身份驗證功能對其身份進行驗證,判斷其合法性;通過將他們所進行的操作都寫入數(shù)據(jù)庫,當發(fā)生故障時這些數(shù)據(jù)用于數(shù)據(jù)分析和數(shù)據(jù)恢復(fù)。

1.5 工廠層

向頁面級代碼提供產(chǎn)品工廠。產(chǎn)品工廠主要是返回一個接口實現(xiàn)的實例化對象,每一個實現(xiàn)方法作為零件,在程序員需要的時候通過工廠去找到相應(yīng)的方法調(diào)用。

2 系統(tǒng)實現(xiàn)

2.1 數(shù)據(jù)訪問層的實現(xiàn)

在本系統(tǒng)中數(shù)據(jù)連接層的實現(xiàn)采用連接池方式,這樣可以減少采用JDBC連接方式頻繁地打開和關(guān)閉數(shù)據(jù)庫,保證了效率。在tomcat下的Context.xml文件中配置如下:

driverClassName="com.mysql.jdbc.Driver"

url="jdbc:mysql://127.0.0.1/role8Demo"

username="root" password="123456"

maxWait="5000" maxActive="4" maxIdle="4"/>

通過連接池獲取數(shù)據(jù)連接的代碼封裝成一個Java Bean,代碼如下:

javax.naming.Context context=newjavax.naming.InitialContext();

javax.sql.DataSource ds=(javax.sql.DataSource)context

.lookup("java:comp/env/jdbc/ds");

java.sql.Connection conn=ds.getConnection();

2.2 業(yè)務(wù)接口層

業(yè)務(wù)接口主要封裝了業(yè)務(wù)方法,向工廠提供產(chǎn)品。在職工查詢系統(tǒng)中,實現(xiàn)的業(yè)務(wù)接口主要有用戶管理、日志管理、工資管理和公告管理接口,每個接口主要提供增加、刪除、修改、查詢方法。

public interface UserDao {

public void addUser(String insrtSql);

public void delUser(String uid);

public void updateUser(String sql);

public ResultSet queryById(String uid);

public void bitchAddUser(String file);

}

2.3 業(yè)務(wù)實現(xiàn)層

在業(yè)務(wù)實現(xiàn)層主要針對接口中的方法對其實現(xiàn),并實現(xiàn)對一些更新操作的日志登記,因此在實現(xiàn)時不僅要對接口方法進行實現(xiàn),也要實現(xiàn)日志寫入功能。以用戶管理實現(xiàn)為例,代碼如下:

public class UserDaoImpl implements UserDao {

……

public UserDaoImpl()

{JDBCBean jb=new JDBCBean();

conn=jb.getConn();

LogFactory lf=new LogFactory();

try {

stmt=conn.createStatement();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

……

}

在對工資進行上傳時,為了能把Excel文件中的數(shù)據(jù)導(dǎo)入到Mysql數(shù)據(jù)庫,首先采用了JSPSmartUpload組件上傳Excel文件到服務(wù)器,然后利POI組件把Excel文件轉(zhuǎn)換成Mysql數(shù)據(jù)庫中的表,同時為了查詢方便,在數(shù)據(jù)庫中增加了映射表,映射表主要是能使查詢順利地找到目標工資表。

2.4 工廠層

工廠層為面向頁面級代碼實現(xiàn)提供產(chǎn)品,方便調(diào)用,以實現(xiàn)用戶管理工廠為例,其代碼如下:

public class UserFactory {

public UserDao getUserDaoInstance()

{return new UserDaoImpl();

}

}

2.5 頁面調(diào)用

在頁面實例化所需要的工廠,并通過工廠實例獲取所需要的產(chǎn)品。

UserFactory uf=new UserFactory(); //**實例化一個工廠

ResultSet rs=uf.getUserDaoInstance().queryById(uid); //**調(diào)用

工廠的queryById(String uid)方法

3 重點問題

3.1 用戶身份驗證

當用戶正常登錄并通過用戶名和密碼驗證時[5],開啟兩個session,一個用來記載用戶名,另一個用來記載用戶身份類別。本系統(tǒng)利用判斷記載用戶名的session是否為空和記載用戶類別的session是否合法來阻止或者放行用戶進入系統(tǒng)。為了防止用戶通過非法入口進入系統(tǒng)內(nèi)部,在系統(tǒng)內(nèi)部每個頁面也利用這一方法來判斷用戶的合法性,有效地減少了非法用戶進入的途徑。

3.2 用戶安全

為了保證用戶信息的安全性,除了對用戶密碼采用MD5加密以外,還允許用戶本人設(shè)置安全問題,一旦用戶忘記密碼,也可以通過回答自己設(shè)置的安全問題來重新設(shè)置密碼,而不是通過管理員來獲取密碼,進而保證了用戶信息的安全性。

4 結(jié)束語

本文在采用工廠模式開發(fā)的基礎(chǔ)上,把公共模塊獨立出來,并切入到一些方法中去執(zhí)行,這樣有利于開發(fā)效率的提高。與此同時關(guān)注系統(tǒng)級和用戶級的安全性,減少了系統(tǒng)被入侵的風(fēng)險。

參考文獻:

[1] 吳小青.JSP+TOMCAT+MYSQL開源軟件整合配置初探[J].齊齊哈

爾大學(xué)學(xué)報,2012.28(4).

[2] 雷根平等.基于JSP的校園新聞發(fā)布系統(tǒng)設(shè)計與實現(xiàn)[J].電腦知識與

技術(shù),2010.7.21:5750-5753

[3] 劉鋒等.DAO模式和抽象工廠模式在系統(tǒng)設(shè)計中的應(yīng)用[J].計算機

與信息技術(shù),2011.3:84-87

[4] 廖夢虎.JSP中數(shù)據(jù)庫的連接方法研究[J].長江大學(xué)學(xué)報,2011.8

(10):83-85

[5] 黃貽培.簡單工廠模式在數(shù)據(jù)訪問層中的應(yīng)用[J].計算機工程與設(shè)

計,2009.30(7):1799-1800

猜你喜歡
分層
有趣的分層現(xiàn)象
軍事文摘(2020年18期)2020-10-27 01:55:18
一種沉降環(huán)可準確就位的分層沉降儀
雨林的分層
有趣的分層
“分層”是座美麗的橋
新課程(2016年3期)2016-12-01 05:57:14
跨越式跳高遞進與分層設(shè)計
射阳县| 阳原县| 洪湖市| 明溪县| 阳曲县| 昆明市| 嘉兴市| 敦煌市| 新乡市| 兰坪| 瑞安市| 舟曲县| 张家港市| 易门县| 维西| 抚宁县| 融水| 崇文区| 广西| 闵行区| 夹江县| 钦州市| 洮南市| 安义县| 永安市| 崇明县| 牟定县| 平度市| 西乌| 青岛市| 元朗区| 西华县| 灵台县| 利辛县| 青海省| 洞口县| 循化| 农安县| 双流县| 福贡县| 江口县|