• 
    

    
    

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

      ?

      基于MVC模式SSH框架智能化養(yǎng)護(hù)專家系統(tǒng)文件上傳與下載研究與實(shí)現(xiàn)

      2014-05-09 08:26:14金小初
      交通科技 2014年3期
      關(guān)鍵詞:對話框代碼框架

      金小初 楊 剛

      (1.湖北省女子職業(yè)學(xué)校 武漢 430079; 2.武漢理工大學(xué)信息工程學(xué)院 武漢 430070)

      高速公路智能化養(yǎng)護(hù)專家系統(tǒng)可實(shí)現(xiàn)數(shù)據(jù)自動轉(zhuǎn)換、能根據(jù)自動檢測結(jié)果和養(yǎng)護(hù)歷史資料分析路面變化規(guī)律,預(yù)測養(yǎng)護(hù)實(shí)施的時(shí)間,分別提出不同病害的養(yǎng)護(hù)對策、養(yǎng)護(hù)方法和施工工藝,同時(shí)根據(jù)自動檢測數(shù)據(jù)確定路面養(yǎng)護(hù)工程數(shù)量,輸入各種材料和設(shè)備定額后確定養(yǎng)護(hù)工程造價(jià),制定路面養(yǎng)護(hù)計(jì)劃。系統(tǒng)功能見圖1。

      智能化養(yǎng)護(hù)專家系統(tǒng)中的網(wǎng)絡(luò)業(yè)務(wù)對速度的要求比較高,因此對用戶與數(shù)據(jù)庫的交互也提出了較高要求,故不能像以前一樣把所有數(shù)據(jù)和文件都存入數(shù)據(jù)庫,這樣會大大降低系統(tǒng)的讀取速率。一個解決辦法就是把大數(shù)據(jù)做成文件上傳。網(wǎng)絡(luò)最大的好處之一就是實(shí)現(xiàn)了資源的共享,文件的下載也成為重要的需求。高速公路智能化養(yǎng)護(hù)專家系統(tǒng)功能圖見圖1。

      圖1 高速公路智能化養(yǎng)護(hù)專家系統(tǒng)功能圖

      1 Struts+Spring+Hibernat框架技術(shù)

      目前網(wǎng)絡(luò)應(yīng)用有很多開源的上傳下載功能代碼,基于SSH(Str uts+Spring+Hibernate)框架的上傳下載比這些代碼結(jié)構(gòu)性更強(qiáng),開發(fā)更快。

      1.1 Struts+Spring+Hiber nat簡介

      Str uts作為表現(xiàn)層和控制層主要框架,提供MVC控制、表現(xiàn)層Taglib布局管理,以及Validator輸入校驗(yàn)。Taglib是Str uts的標(biāo)記庫,有效提高了開發(fā)效率。同時(shí),Str uts框架具有組件的模塊化,其controller作為控制層只需要通過一個配置文件,就可以明晰整個系統(tǒng)各部分之間的聯(lián)系,簡化了系統(tǒng)的開發(fā)和維護(hù)[1]。

      Spring中的Io C容器作為系統(tǒng)控制層的一部分提供面向接口編程的JavaBean的管理,通過消除各種自定義格式的屬性文件來簡化對JavaBean的管理,從而實(shí)現(xiàn)業(yè)務(wù)邏輯的方便更換,而無需使用EJB。并且,Spring能解決系統(tǒng)中常見的對Singleton的過多使用而導(dǎo)致降低系統(tǒng)的可測試性和面向?qū)ο蟮某潭葐栴}。數(shù)據(jù)訪問層主要采用DAO(data access object)模式,將底層數(shù)據(jù)訪問操作與高層的業(yè)務(wù)邏輯分離開來。通過DAO,向業(yè)務(wù)邏輯組件隱藏了數(shù)據(jù)庫訪問的實(shí)現(xiàn)細(xì)節(jié)。

      Hiber nate作為數(shù)據(jù)訪問層的底層持久框架,提供O/R Mapping,實(shí)現(xiàn)面向?qū)ο蟮挠蚰P陀成涞絺鹘y(tǒng)的關(guān)系數(shù)據(jù)庫。它不僅負(fù)責(zé)實(shí)現(xiàn)映射,提供數(shù)據(jù)查詢和檢索能力,而且還可以自動生成SQL,從而能使應(yīng)用程序移植到所有的SQL數(shù)據(jù)庫。通過4個層次的劃分,使每個層次的邏輯集中,便于專注開發(fā)。而相鄰層次之間松散耦合,便于組件的重用和系統(tǒng)功能擴(kuò)展[2]。

      1.2 Struts+Spring+Hiber nat結(jié)合的優(yōu)點(diǎn)

      Str uts+Spring+Hiber nate的整合架構(gòu)設(shè)計(jì)采用分層的思想,并為各層次的支持提供一個整合框架的策略,以隔離各層次間的依賴性,便于系統(tǒng)擴(kuò)充。

      Str uts已經(jīng)成為業(yè)界標(biāo)準(zhǔn),其HT ML標(biāo)簽非常優(yōu)秀的、惟一的公共控制器便于管理,但相對于處理界面的強(qiáng)大功能而言,Str uts處理業(yè)務(wù)邏輯方面要遜色得多,這些不足之處可由Spring得到解決。

      Spring能有效地組織中間層對象,易于同其他View框架無縫集成,允許根據(jù)需要在某一層選擇使用它的某一個模塊,對不同的數(shù)據(jù)訪問技術(shù)提供了統(tǒng)一的接口,并且采用Io C可以很容易地實(shí)現(xiàn)bean的裝配,提供了簡潔的AOP并據(jù)此實(shí)現(xiàn)事務(wù)管理,便于測試,但其Jsp中要寫很多代碼、控制器過于靈活,缺少一個公用控制器,這又可以由Str uts來彌補(bǔ)。

      用Hiber nate實(shí)現(xiàn)數(shù)據(jù)的持久化能解決因底層的數(shù)據(jù)結(jié)構(gòu)發(fā)生改變而導(dǎo)致應(yīng)用發(fā)生改變這樣的問題,同時(shí)又可以和多種Web服務(wù)器或應(yīng)用服務(wù)器良好集成,如今已經(jīng)支持幾乎所有的流行的數(shù)據(jù)庫服務(wù)器。并且由于Hiber nate使用了J2EE架構(gòu)中JDBC,JTA,JNDI等技術(shù),使得 Hiber nate可以方便地集成到J2EE應(yīng)用服務(wù)器中去,為Java應(yīng)用提供了一個易用的、高效率的輕量級對象關(guān)系映射框架[3]。

      由此可見,Struts,Spring和Hibernate的集成能夠揚(yáng)長避短,使框架更加易用、高效,是非常有價(jià)值的。

      2 應(yīng)用實(shí)例

      2.1 系統(tǒng)界面

      圖2是文件上傳界面,輸入必要信息,點(diǎn)擊提交即可上傳。

      圖2 上傳界面

      圖3 是點(diǎn)下載后彈出的現(xiàn)在對話框。

      圖3 下載對話框

      2.2 系統(tǒng)代碼

      2.2.1 文件上傳代碼

      文件上傳時(shí),頁面數(shù)據(jù)通過Upload For m接收,然后傳遞到文件上傳程序中。其中Upload-For m對象中有文件、文件編號、上傳地址、文件個數(shù)4個屬性。此處文件上傳分2步,先把文件相關(guān)信息寫入數(shù)據(jù)庫,然后把文本文件傳到指定地址。

      //獲得表單對象

      Upload For m upload For m = (Upload For m)f or m;

      //獲得上傳文件個數(shù)Vint length=Integer.parseInt(upload For m.get Length());

      //多文件上傳

      f or(int i=0;i<length;i++)

      //獲得第i個文件對象

      For mFile myfile= upload For m.get Myfile(i);

      //獲得文件編號

      String filenu m=upload For m.get Filenu m(i);

      //獲得文件備注

      String fileremar k=upload For m.get Fileremar k(i);

      //獲得文件名稱

      String filename=myfile.get File Name();

      //獲得存儲地址,文件將被存儲到服務(wù)器下的file文件夾中

      String real Path=request.get Session().get Servlet-Context().get Real Path("/files/");

      String fileaddress=real Path+"/"+filename;

      //數(shù)據(jù)入庫,此處數(shù)據(jù)入庫用到了Hiber nate持久化數(shù)據(jù)庫對象

      Wj wj=new Wj();

      wj.set Wjb m(filenu m);

      wj.set Wj mc(filename);

      wj.set Ccdz(fileaddress);

      wj.set Wjbz(fileremar k);

      wj DAO.save(wj);

      //文件上傳

      try{

      Output Stream streamOut=new File Output Stream(fileaddress);

      int bytes Read=0;

      byte[]buffer=new byte[8192];

      //利用緩存,邊讀邊寫 while((bytes Read=streamIn.read(buffer,0,8192))?。剑?){

      streamOut.write(buffer,0,bytes Read);}

      streamOut.close();

      streamIn.close();

      myfile.destroy();}

      catch(Exception ex){ex.print Stack Trace();}

      中小企業(yè)成長的關(guān)鍵不是經(jīng)濟(jì)環(huán)境,也不是市場條件,而是企業(yè)自身的管理工作。中小企業(yè)無力聘請專業(yè)齊全的管理人員,要求經(jīng)營者當(dāng)“多面手”,而事實(shí)上多數(shù)經(jīng)營者缺乏全面管理的能力,難免顧此失彼。建立健全的財(cái)務(wù)機(jī)構(gòu),并讓各機(jī)構(gòu)之間的權(quán)力形成相互制約、相互監(jiān)督的關(guān)系,填補(bǔ)崗位空缺,制定完善的財(cái)務(wù)管理制度,將責(zé)任落實(shí)到每一位財(cái)務(wù)人員的身上,鼓勵財(cái)務(wù)管理人員精通財(cái)務(wù)知識,大力提高財(cái)務(wù)人員的整體素質(zhì)、執(zhí)行能力和管理能力,建立嚴(yán)格的獎懲制度,讓企業(yè)財(cái)務(wù)管控達(dá)到最優(yōu),根據(jù)企業(yè)財(cái)務(wù)狀況制定更加完善的企業(yè)計(jì)劃,為企業(yè)發(fā)展做出應(yīng)有的貢獻(xiàn)。

      2.2.2 文件下載代碼

      文件下載程序也分兩部分,第一部分實(shí)現(xiàn)點(diǎn)擊下載按鈕后彈出下載對話框,第二部分實(shí)現(xiàn)文件的讀寫。

      //從頁面獲取下載文件的編號

      String filenu m=request.get Para meter("filenu m");

      //獲得編號對應(yīng)的文件對象

      Wj wj=new Wj();

      wj=wj DAO.find ById(filenum);

      //獲得文件存儲地址

      String path= wj.get Ccdz();

      File download File=new File(path);

      //獲得文件名稱

      String f name=wj.get Wj mc();

      try{

      BufferedInput Stream bis=null;

      Buffered Output Stream bos=null;

      Output Stream fos=null;

      Input Stream fis=null;

      fis=new FileInput Stream(download File);

      bis=new BufferedInput Stream(fis);

      f os=response.get Output Stream();

      bos=new Buffered Output Stream(f os);

      int fileLength=fis.available();

      //下面就是彈出下載對話框的關(guān)鍵代碼

      response.reset();

      response.set Content Lengt h(fileLength);

      response.set Content Type("application/x-msdownload;charset=GBK");

      response.set Character Encoding("UTF-8");

      f name=j(luò)ava.net.URLEncoder.encode(f name,"UTF-8");response.set Header("Content-Disposition","attach ment;filename="+new String(f name.get Bytes("UTF-8"),"GBK"));

      //用輸入流進(jìn)行先讀,然后用輸出流去寫

      int bytes Read=0;

      byte[]buffer= new byte[8192];

      while((bytes Read= bis.read(buffer,0,8192))?。?-1){

      bos.write(buffer,0,bytes Read);}

      bos.flush();

      fis.close();

      bis.close();

      fos.close();

      bos.close();}

      catch(Exception ex){ex.print Stack Trace();}

      3 結(jié)語

      Str uts+Spring+Hiber na框架的文件上傳時(shí),Str uts配置文件中會有如下代碼控制上傳文件的大小,這里設(shè)置上傳文件最大為500 M,如果不想規(guī)定最大文件,可將max FileSize設(shè)為-1。如果文件大小超過規(guī)定會報(bào)錯。

      <contr oller max FileSize="500 M"input-For war d="tr ue"/>

      上傳和下載文件都運(yùn)用了緩存,這是為了防止內(nèi)存溢出而發(fā)生錯誤。

      本文對文件上傳和下載的應(yīng)用進(jìn)行了研究并得以實(shí)現(xiàn)。實(shí)際應(yīng)用時(shí)在文件上傳中還可加入進(jìn)度條,使得文件上傳更加人性化。此技術(shù)成功應(yīng)用于湖北省高速公路實(shí)業(yè)開發(fā)有限公司共同研制的高速公路智能化養(yǎng)護(hù)專家系統(tǒng),取得預(yù)期效果。

      [1] 梁立新.項(xiàng)目實(shí)踐精解:基于 Str uts-Spring-Hibernate的Java應(yīng)用開發(fā)[M].北京:電子工業(yè)出版社,2006.

      [2] 鄔繼成.Str uts與 Hiber nate實(shí)用教程-構(gòu)建基于MVC模式的高效Java Web應(yīng)用[M].北京:電子工業(yè)出版社,2006.

      [3] 梅登華,閔華清.基于STRUTS框架的SRM系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)工程,2006(17):262-264.

      猜你喜歡
      對話框代碼框架
      框架
      廣義框架的不相交性
      正?;謴?fù)虛擬機(jī)
      Bootlace Worms’Secret etc.
      創(chuàng)世代碼
      動漫星空(2018年11期)2018-10-26 02:24:02
      創(chuàng)世代碼
      動漫星空(2018年2期)2018-10-26 02:11:00
      創(chuàng)世代碼
      動漫星空(2018年9期)2018-10-26 01:16:48
      創(chuàng)世代碼
      動漫星空(2018年5期)2018-10-26 01:15:02
      WTO框架下
      法大研究生(2017年1期)2017-04-10 08:55:06
      一種基于OpenStack的云應(yīng)用開發(fā)框架
      保亭| 高要市| 柏乡县| 奇台县| 克拉玛依市| 遂溪县| 德州市| 吴旗县| 丹巴县| 神木县| 莱阳市| 陆河县| 南靖县| 彭泽县| 福鼎市| 全南县| 凌源市| 新和县| 汝州市| 道真| 茌平县| 株洲市| 突泉县| 定陶县| 漯河市| 通州区| 淮阳县| 苗栗县| 三江| 广水市| 铁力市| 岐山县| 金堂县| 剑川县| 航空| 马关县| 景泰县| 冷水江市| 汤阴县| 永年县| 女性|