Dwr3.0与struts2一起使用的方法步骤详解

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" οnblur="up()">
   <input type="button" value="上传头像" οnclick="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;
   }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值