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 核心引擎
<scripttype=’text/javascript’src=’/dwr/engine.js’></script>
对应 在步骤3:中定义的 javascript="DWRService" 关联的java类
<scripttype=’text/javascript’src=’/dwr/interface/DWRService.js’></script>
可选引入依赖
提供一些方便的工具方法的使用
<scripttype=’text/javascript’src=’/dwr/util.js’></script>
步骤5:
使用
DWRService.sayHello(参数 , 如果有返回,回调方法 )
代码如下:html代码
<scripttype=’text/javascript’src=’/dwr/engine.js’></script> <scripttype=’text/javascript’src=’/dwr/util.js’></script> <scripttype=’text/javascript’src=’/dwr/interface/DWRService.js’></script> <scriptlanguage="JavaScript"> //dwr文件上传 varup=function(){ varheadf=dwr.util.getValue("headfile"); DWRService.headUp(headf,function(flag){ if(flag){ alert("成功"); }else{ alert("不成功"); } }); } </script> </head> <body> <imgsrc="images/angel.jpg"id="headimage"> <inputtype="file"name="headfile"id="headfile"> 用户名:<inputtype="text"name="name"id="name"onblur="up()"> <inputtype="button"value="上传头像"onclick="up()"/> </body> </html>
dwr.xml 配置
<dwr> <allow> <createcreator="new"javascript="DWRService"> <paramname="class"value="org.fk.dwr.DWRDemo"></param> </create> </allow> </dwr>
java代码如下:
importjava.io.File; importorg.apache.commons.io.FileUtils; importorg.directwebremoting.WebContext; importorg.directwebremoting.WebContextFactory; importorg.directwebremoting.io.FileTransfer; publicclassDWRDemo{ publicStringsayHello(Stringname){ System.out.println("欢迎您:"+name); return"欢迎您:"+name; } /** *dwr文件上传 *@paramftFileTransfer封装类前台js提交的文件数据 *@return */ publicbooleanheadUp(FileTransferft){ WebContextwc=WebContextFactory.get(); //获得应用路径 StringheadImages=wc.getSession().getServletContext().getRealPath("/headImages"); Filefile=newFile(headImages); //如果文件夹不存在,就创建 if(!file.exists()){ file.mkdirs(); } try{ //文件上传核心代码使用commons-io-2.0.1.jar完成 FileUtils.copyInputStreamToFile(ft.getInputStream(),newFile(headImages+File.separator+ft.getFilename())); returntrue; }catch(Exceptione){ e.printStackTrace(); } returnfalse; } }
当爱丽思丢失了通往仙境的钥匙,