• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

      郭文龍

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

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

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

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

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

      圖1工廠原理圖

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      1.5 工廠層

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

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

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

      在本系統(tǒng)中數(shù)據(jù)連接層的實(shí)現(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ù)連接的代碼封裝成一個(gè)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)中,實(shí)現(xiàn)的業(yè)務(wù)接口主要有用戶管理、日志管理、工資管理和公告管理接口,每個(gè)接口主要提供增加、刪除、修改、查詢方法。

      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ù)實(shí)現(xiàn)層

      在業(yè)務(wù)實(shí)現(xiàn)層主要針對接口中的方法對其實(shí)現(xiàn),并實(shí)現(xiàn)對一些更新操作的日志登記,因此在實(shí)現(xiàn)時(shí)不僅要對接口方法進(jìn)行實(shí)現(xiàn),也要實(shí)現(xiàn)日志寫入功能。以用戶管理實(shí)現(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();

      }

      }

      ……

      }

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

      2.4 工廠層

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

      public class UserFactory {

      public UserDao getUserDaoInstance()

      {return new UserDaoImpl();

      }

      }

      2.5 頁面調(diào)用

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

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

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

      工廠的queryById(String uid)方法

      3 重點(diǎn)問題

      3.1 用戶身份驗(yàn)證

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

      3.2 用戶安全

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

      4 結(jié)束語

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

      參考文獻(xiàn):

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

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

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

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

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

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

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

      (10):83-85

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

      計(jì),2009.30(7):1799-1800

      猜你喜歡
      分層
      有趣的分層現(xiàn)象
      軍事文摘(2020年18期)2020-10-27 01:55:18
      一種沉降環(huán)可準(zhǔn)確就位的分層沉降儀
      雨林的分層
      有趣的分層
      跨越式跳高遞進(jìn)與分層設(shè)計(jì)
      泽库县| 房产| 迁西县| 紫金县| 揭西县| 阿克苏市| 徐汇区| 吉林省| 鹿邑县| 盐边县| 栖霞市| 双牌县| 文昌市| 丹棱县| 石阡县| 蓬安县| 宝兴县| 乐山市| 娄底市| 阳朔县| 高碑店市| 桃园市| 蒙城县| 宝清县| 手游| 罗定市| 文安县| 社会| 平塘县| 平度市| 宁蒗| 茶陵县| 开封市| 叶城县| 浠水县| 河东区| 高要市| 刚察县| 扶余县| 渑池县| 安宁市|