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

前端之家收集整理的这篇文章主要介绍了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" 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; } }

猜你在找的Ajax相关文章