• Struts2 中整合DWR3实现文件上传


    步骤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;
       }
    }

  • 相关阅读:
    UVA 12284 Digital Matrix
    lightoj 1052
    light oj 1236
    light oj 1151
    省选准备 MISTAKE 大全
    我的省选 Day -15
    「FJ2014集训」采药人的路径
    【NOI2012】迷失游乐园
    寒假这十天
    计算几何 大杂烩
  • 原文地址:https://www.cnblogs.com/zengtianli/p/2518524.html
Copyright © 2020-2023  润新知