成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

WebWork文件上傳實現淺析

開發 后端
本文向您介紹WebWork文件上傳的示例,通過攔截器自動獲得上傳文件的文件名、文件類型、文件三個部分。

Webwork文件上傳看了很多的文章收獲不少,目前比較簡單的方式是通過webwork提供的FileUploadInterceptor來實現Webwork文件上傳,這個攔截器在使用的時候是非常方便的,通過這個攔截器可以自動獲得上傳文件的文件名、文件類型、文件三個部分。然后用戶可以再進行后續的處理,包括將文件信息存入數據庫、移動文件到制定的文件夾等。

對于這個攔截器的工作原理大致是這樣的,用戶執行Action的時候,攔截器構造request:

java 代碼

  1. HttpServletRequest request = (HttpServletRequest)   
  2. ac.get(ServletActionContext.HTTP_REQUEST);    

然后判斷request是否是MultiPartRequestWrapper的一個實例,接下來初始化MultiPartRequestWrapper:

java 代碼

  1. MultiPartRequestWrapper multiWrapper =   
  2. (MultiPartRequestWrapper) request; 

這里就通過判斷用戶在webwork.properties中定義Webwork文件上傳類型來構造MultiPartRequestWrapper,

java 代碼

  1. String parser = Configuration.getString  
  2. (WebWorkConstants.WEBWORK_MULTIPART_PARSER);      
  3. // If it's not set, use Jakarta      
  4. if (parser.equals("")) {      
  5. log.warn("Property webwork.multipart.parser not set." +      
  6. " Using com.opensymphony.webwork.dispatcher.  
  7. multipart.JakartaMultiPartRequest");      
  8. parser = "com.opensymphony.webwork.dispatcher.  
  9. multipart.JakartaMultiPartRequest";      
  10. }      
  11. // legacy support for old style property values      
  12. else if (parser.equals("pell")) {      
  13. parser = "com.opensymphony.webwork.dispatcher.  
  14. multipart.PellMultiPartRequest";      
  15. else if (parser.equals("cos")) {      
  16. parser = "com.opensymphony.webwork.dispatcher.  
  17. multipart.CosMultiPartRequest";      
  18. else if (parser.equals("jakarta")) {      
  19. parser = "com.opensymphony.webwork.dispatcher.  
  20. multipart.JakartaMultiPartRequest";      
  21. }     

假設用戶定義了jakarta,這時候就通過JakartaMultiPartRequestMonitor來實現Webwork文件上傳(通過common-fileupload),同時獲得文件的名稱和類型等信息。

對于文件上傳進度條,網上提供了一種給予servlet的解決辦法,這種方式可以很方便的使用在Struts模式下的mvc架構的程序中,其中用到的類包可以在http://www.telio.be/blog/wp-content/uploads/2006/01/上找到,這種方式的實質是用到了dwr的回調方式。servlet的上傳方式是通過下面的方式實現的:

java 代碼

  1. ServletFileUpload upload =   
  2. new ServletFileUpload(factory);      
  3. upload.parseRequest(servletRequest);      

而進度條是通過實現一個factory,來實現上傳狀態的回調。

webwork的攔截器實際已經將上傳文件到臨時目錄封裝在內部的類中,這樣我們就無法構造factory來實現進度條的監控,給予以上的考慮,想了一個比較笨的辦法,將MultiPartRequestWrapper修改一下,增加一個新的屬性定義:

java 代碼

  1. else if (parser.equals("monitor"))   
  2. {      
  3. parser = "com.opensymphony.webwork.  
  4. dispatcher.multipart.JakartaMultiPartRequestMonitor";     
  5. }   

這樣用戶可以在webwork.properties中設置上傳的模式為monitor,然后自己實現一個JakartaMultiPartRequestMonitor,在這個class中,將原有的factory實現方法通過帶進度條的方式來實現,這樣就能監控到servlet上傳的進度。基本的實現思路就是這樣的。下面將幾個配置過程整理一下:

1、將修改的兩個類添加到webwork2.2.x。jar中:MultiPartRequestWrapper。class和JakartaMultiPartRequestMonitor.class

2、修改webwork.webwork.properties:webwork.multipart.parser=monitor

3、將剛才下載的be.telio.mediastore.ui.upload的代碼加入

4、修改dwr.xml文件,添加下面的代碼:

xml 代碼

  1. <create creator="new" javascript="UploadMonitor">     
  2. name="class" value="  
  3. be.telio.mediastore.ui.upload.UploadMonitor"/>     
  4. create>     
  5. <convert converter="bean" match="  
  6. be.telio.mediastore.ui.upload.UploadInfo"/>   

5、將下載的包中的resource文件夾拷貝到web目錄下

6、建立一個文件上傳action

7、建立Webwork文件上傳頁面,添加幾個js,同時在form中添加startProgress():

  1. <script src='/ugc/resources/js/upload.js'> </script>  
  2. <script src='/ugc/dwr/interface/UploadMonitor.js'>   
  3. </script>  
  4. <script src='/ugc/dwr/engine.js'>   
  5. </script>  
  6. <script src='/ugc/dwr/util.js'>   
  7. </script>   
  8. <ww:form action="doUpload" method="POST" enctype="  
  9. multipart/form-data" onsubmit="startProgress()">  

這樣WebWork文件上傳進度條就可以實現了

【編輯推薦】

  1. WebWork注入Servlet方法詳解
  2. WebWork中返回INPUT的原因
  3. WebWork如何實現文件上傳配置過程
  4. 通過WebWork實現HelloWorld
  5. WebWork與Spring+Hibernate的整合
責任編輯:冰荷 來源: javaeye
相關推薦

2009-07-08 09:29:58

WebWork

2009-07-20 13:29:13

xwork.xmlWebWork

2009-07-14 17:53:11

WebWork安裝WebWork配置

2009-07-16 14:58:03

WebWork安裝WebWork配置

2009-07-14 14:41:33

Webwork與Spr

2009-07-16 17:26:11

WebWork文件上傳

2009-07-06 17:11:38

Servlet文件上傳

2009-07-14 13:08:55

WebWork與Spr

2009-07-14 15:52:00

WebWork文件下載

2009-07-08 09:55:51

WebWork下載

2009-07-08 10:11:30

WebWork

2009-07-09 15:55:18

WebWork配置文件

2009-07-16 15:44:40

導出CSV文本WebWork

2009-07-16 15:14:27

WebWork用戶登陸

2009-07-20 16:09:39

2009-07-23 10:37:43

2009-07-14 16:08:41

WebWork學習

2009-07-14 17:34:53

Webwork配置

2009-07-16 14:08:14

webwork配置

2009-07-16 16:51:56

WebWork驗證機制
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品美女 | 综合久久亚洲 | 国产一区二区在线91 | 欧美自拍另类 | 国产成人综合网 | 久久久久久国产精品 | www.操com| 亚洲毛片 | 日韩欧美精品在线 | 久久影音先锋 | 一区二区三区网站 | 亚洲欧洲一区二区 | 在线免费观看日本 | 欧美1区 | 国产欧美日韩一区二区三区在线 | 欧美精品黄 | 亚洲一区二区精品 | 亚洲国产一区二区三区在线观看 | 亚洲国产精品人人爽夜夜爽 | 色婷婷国产精品综合在线观看 | 91在线精品一区二区 | 久久久久黄色 | 精品国产欧美一区二区 | 午夜免费网 | 91精品国产综合久久久久久蜜臀 | a爱视频 | 免费av观看| 精品久久久久久亚洲综合网 | 精品一区二区电影 | 天天摸天天干 | 欧美激情精品久久久久久免费 | 伊人一区| 成人欧美 | 国产成人精品一区二 | 亚洲精品免费视频 | 欧美一级久久 | 日本视频一区二区 | 九九久久国产 | 久久久久久久av | 成人黄色av网站 | 国产精品视频免费看 |