Struts2.3.1 中整合DWR3.0 實現文件上傳


Struts2.3.1 中整合DWR3.0 實現文件上傳  

步驟1:導入     dwr*.jar ,  
        struts2-dwr-plugin-2.3.1.jar
       
 步驟2:在web.xml中引入dwr的配置
 <servlet>
     <servlet-name>dwr-invoker</servlet-name>
     <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
     <init-param>
      <param-name>debug</param-name>
      <param-value>true</param-value>
     </init-param>
  </servlet>
 
  <servlet-mapping>
    <servlet-name>dwr-invoker</servlet-name>
    <url-pattern>/dwr/*</url-pattern>
  </servlet-mapping>
 
  注意需要修改原來配置好的 struts2 原<url-pattern>/*</url-pattern> 為<url-pattern>*.do</url-pattern> 表示struts2只負責處理 .do  結尾的請求
 
  步驟3:在web.xml同級目錄中定義一個dwr.xml 配置文件, (dwr.xml可以去dwr.jar包中獲得)
 dwr.xml配置如下:
 <dwr>
 <allow>
    creator="new" :表示每一次dwr請求但是創建一個新的實例
     javascript="DWRService" 表示頁面通過什么名字來對應調用你的java類提供服務
   <create creator="new"  javascript="DWRService">
     指定為前台提供服務的java類   這里的DWRDemo類在頁面使用的時候使用DWRService調用
   java類就是一個普通的java類
   <param name="class" value="org.fd.dwr.DWRDemo"></param>
   
  </create>
 </allow>
</dwr>

  步驟4:
    必須引入依賴的js文件一般有2個
    ajax 核心引擎
   <script type='text/javascript' src='/dwr/engine.js'></script>
   對應  在步驟3:中定義的  javascript="DWRService"  關聯的java類
    <script type='text/javascript' src='/dwr/interface/DWRService.js'></script>
  可選引入依賴
    提供一些方便的工具方法的使用
    <script type='text/javascript' src='/dwr/util.js'></script>

步驟5:
    使用
    DWRService.sayHello(參數    , 如果有返回,回調方法 )

 

代碼如下:html代碼

 <script type='text/javascript' src='/dwr/engine.js'></script>
  <script type='text/javascript' src='/dwr/util.js'></script>
  <script type='text/javascript' src='/dwr/interface/DWRService.js'></script>


<script language="JavaScript">
 
 //dwr文件上傳
 var up = function(){
   var headf = dwr.util.getValue("headfile");
   DWRService.headUp(headf,  function(flag){
    if(flag){
     alert("成功");
    }else{
     alert("不成功");
    }
   });
 }
 
</script>
</head>
<body>
   <img  src="images/angel.jpg" id="headimage">
   <input type="file" name="headfile" id="headfile">
   用戶名:<input type="text" name="name" id="name" onblur="up()">
   <input type="button" value="上傳頭像" onclick="up()"/>
</body>
</html>

 

dwr.xml 配置

<dwr>
 <allow>
  <create creator="new"  javascript="DWRService">
   <param name="class" value="org.fk.dwr.DWRDemo"></param>
  </create>
 </allow>
</dwr>

 

java代碼如下:

 

import java.io.File;
import org.apache.commons.io.FileUtils;
import org.directwebremoting.WebContext;
import org.directwebremoting.WebContextFactory;
import org.directwebremoting.io.FileTransfer;

public class DWRDemo {
   public String sayHello(String name){
    System.out.println("歡迎您:"+name);
    return "歡迎您:"+name;
   }
   
   /**
    * dwr 文件上傳
    * @param ft  FileTransfer 封裝類前台js提交的文件數據
    * @return
    */
   public boolean headUp(FileTransfer ft){

    WebContext  wc = WebContextFactory.get();
    //獲得應用路徑
    String headImages = wc.getSession().getServletContext().getRealPath("/headImages");

    File file = new File(headImages);
    //如果文件夾不存在,就創建
    if( !file.exists()){
     file.mkdirs();
    }
    try{
     //文件上傳核心代碼使用 commons-io-2.0.1.jar完成
     FileUtils.copyInputStreamToFile(ft.getInputStream(), new File(headImages+File.separator+ft.getFilename()));
     return true;
     }catch(Exception e){
     e.printStackTrace();
    }
    return false;
   }
}

如果需要項目代碼請聯系我!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM