Struts2.3.1 中整合DWR3.0 实现文件上传

Struts2.3.1  中整合DWR3.0 实现文件上传
步骤1: 导入 dwr*.jar ,
1.           struts2-dwr-plugin-2.3.1.jar 

步骤2: 在web.xml中引入dwr的配置
1.           <servlet> 
2.                <servlet-name>dwr-invoker</servlet-name> 
3.                <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class> 
4.                <init-param> 
5.                 <param-name>debug</param-name> 
6.                 <param-value>true</param-value> 
7.                </init-param> 
8.             </servlet> 
9.              
10.         <servlet-mapping> 
11.           <servlet-name>dwr-invoker</servlet-name> 
12.           <url-pattern>/dwr/*</url-pattern> 
13.         </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 配置如下:
1.            <dwr>
2.            <allow>
3.               creator="new":表示每一次dwr请求但是创建一个新的实例 
4.                javascript="DWRService"表示页面通过什么名字来对应调用你的java类提供服务 
5.              <createcreator="new" javascript="DWRService">
6.                指定为前台提供服务的java   这里的DWRDemo类在页面使用的时候使用DWRService调用 
7.              java类就是一个普通的java 
8.              <paramname="class"value="org.fd.dwr.DWRDemo"></param>
9.                
10.         </create>
11.        </allow>
12.       </dwr>
步骤4:
必须引入依赖的js文件一般有2个ajax 核心引擎
1.           <script type='text/javascript' src='/dwr/engine.js'></script> 
对应 在步骤3:中定义的 javascript="DWRService" 关联的java类
1.           <script type='text/javascript' src='/dwr/interface/DWRService.js'></script> 
可选引入依赖
提供一些方便的工具方法的使用
1.           <script type='text/javascript' src='/dwr/util.js'></script> 
步骤5:
使用
DWRService.sayHello( 参数 , 如果有返回,回调方法 )
代码如下:html代码
1.           <script type='text/javascript' src='/dwr/engine.js'></script> 
2.             <script type='text/javascript' src='/dwr/util.js'></script> 
3.             <script type='text/javascript' src='/dwr/interface/DWRService.js'></script> 
4.            
5.            
6.           <script language="JavaScript"> 
7.              
8.            //dwr文件上传 
9.            var up = function(){  
10.          var headf = dwr.util.getValue("headfile");  
11.          DWRService.headUp(headf,  function(flag){  
12.           if(flag){  
13.            alert("成功");  
14.           }else{  
15.            alert("不成功");  
16.           }  
17.          });  
18.        }  
19.          
20.       </script> 
21.       </head> 
22.       <body> 
23.          <img  src="images/angel.jpg" id="headimage"> 
24.          <input type="file" name="headfile" id="headfile"> 
25.          用户名:<input type="text" name="name" id="name" onblur="up()"> 
26.          <input type="button" value="上传头像" onclick="up()"/> 
27.       </body> 
28.       </html> 
dwr.xml  配置
1.           <dwr> 
2.            <allow> 
3.             <create creator="new"  javascript="DWRService"> 
4.              <param name="class" value="org.fk.dwr.DWRDemo"></param> 
5.             </create> 
6.            </allow> 
7.           </dwr> 
java 代码如下:
1.           import java.io.File;  
2.           import org.apache.commons.io.FileUtils;  
3.           import org.directwebremoting.WebContext;  
4.           import org.directwebremoting.WebContextFactory;  
5.           import org.directwebremoting.io.FileTransfer;  
6.            
7.           public class DWRDemo {  
8.              public String sayHello(String name){  
9.               System.out.println("欢迎您:"+name);  
10.           return "欢迎您:"+name;  
11.          }  
12.            
13.          /**  
14.           * dwr 文件上传 
15.           * @param ft  FileTransfer 封装类前台js提交的文件数据 
16.           * @return  
17.           */ 
18.          public boolean headUp(FileTransfer ft){  
19.        
20.           WebContext  wc = WebContextFactory.get();  
21.           //获得应用路径 
22.           String headImages = wc.getSession().getServletContext().getRealPath("/headImages");  
23.        
24.           File file = new File(headImages);  
25.           //如果文件夹不存在,就创建 
26.           if( !file.exists()){  
27.            file.mkdirs();  
28.           }  
29.           try{  
30.            //文件上传核心代码使用 commons-io-2.0.1.jar完成 
31.            FileUtils.copyInputStreamToFile(ft.getInputStream(), new File(headImages+File.separator+ft.getFilename()));  
32.            return true;  
33.            }catch(Exception e){  
34.            e.printStackTrace();  
35.           }  
36.           return false;  
37.          }  
38.       
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值