Struts2.3.1中整合DWR3.0實現(xiàn)文件上傳
Struts2.3.1 中整合DWR3.0 實現(xiàn)文件上傳
步驟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請求但是創(chuàng)建一個新的實例
- javascript="DWRService" 表示頁面通過什么名字來對應調(diào)用你的java類提供服務
- <create creator="new" javascript="DWRService">
- 指定為前臺提供服務的java類 這里的DWRDemo類在頁面使用的時候使用DWRService調(diào)用
- 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" 關聯(lián)的java類
- <script type='text/javascript' src='/dwr/interface/DWRService.js'></script>
可選引入依賴
提供一些方便的工具方法的使用
- <script type='text/javascript' src='/dwr/util.js'></script>
步驟5:
使用
DWRService.sayHello(參數(shù) , 如果有返回,回調(diào)方法 )
代碼如下: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提交的文件數(shù)據(jù)
- * @return
- */
- public boolean headUp(FileTransfer ft){
- WebContext wc = WebContextFactory.get();
- //獲得應用路徑
- String headImages = wc.getSession().getServletContext().getRealPath("/headImages");
- File file = new File(headImages);
- //如果文件夾不存在,就創(chuàng)建
- 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;
- }
- }
原文鏈接:http://www.cnblogs.com/fd168/archive/2012/05/23/2515938.html