以前简单的应用过dwr,感觉很不错,最近又在一个小项目中使用了一下DWR,有一些收获总结一下:
1、在DWR暴露的方法中,输入参数可以为基本类型,String以及数组等,其中数组对应Javascript中的Array对象;而返回值的类型除过基本类型,数组,List,Map等外,可以为普通Java对象,不过我们需要convertor一下;
代码片段:
//TreeRender中的方法签名
public List<TreeNode> createTree();
dwr.xml的相应配置:
<create creator="new" javascript="TreeRender">
<param name="class" value="cn.com.util.TreeRender" />
<include method="createTree" />
</create>
<convert converter="bean" match="cn.com.util.TreeNode">
<include value="id,fid,text,url,title"/>
</convert>
2、DWR的调试功能很强大,页面操作的返回对象一般利用类似于JSON的字符串形式显示,很有帮助;
3、我们可以将JSON字符串作为参数传递给DWR的方法调用,在后台利用org.json.JSONObject获取来自前台的值,可能的代码如下:
前台Javascript代码(部分):
//Student构造函数,这样我们可以在JS中利用new来创建这个对象
function Student(id, name, age)
{
this.id = id;
this.name = name;
this.age = age;
}
//get id, name, age from page and construct student js object
var a = new Student(idVal, nameVal, ageVal);
var json = JSON.stringify(a);
//construct array parameter from page element
var arr = new Array();
var trObj = btn.parentNode.parentNode.nextSibling.nextSibling.nextSibling;
var trChilds = trObj.childNodes;
for(var i = 0; i < trChilds.length; i++){
if(trChilds[i].getAttribute("id") == "ok"){
arr.push(trChilds[i].innerText);
}
}
try
{
AjaxQuery.query(arr, json, callbackfun);
}catch(e){
alert(e);
}
后台Java代码(部分):
//...
log.info("获得的JSON字符串为:" + json);
JSONObject jsonObject = null;
try{
jsonObject = new JSONObject(json);
}catch(JSONException e){
log.error("解析JSON出错:" + e.getMessage());
e.printStackTrace();
}
String id = "";
String name = "";
int age = "";
try {
id = jsonObject.getString("id");
name = jsonObject.getString("name");
age = jsonObject.getInt("age");
} catch (JSONException e1) {
log.error("获取属性出错:" + e1.getMessage());
e1.printStackTrace();
}
//...
4、DWR中获取Servlet API:
import uk.ltd.getahead.dwr.WebContext;
import uk.ltd.getahead.dwr.WebContextFactory;
//...
WebContext ctx = WebContextFactory.get();//DWR Web上下文工厂
HttpServletRequest request = ctx.getHttpServletRequest();//通过WebContext获取Request
HttpSession session = ctx.getSession();//通过WebContext获取Session
参考:
JSON使用:http://samueli.iteye.com/blog/225841
附件中包括方佳玮整理的《DWR中文文档v0.9》和一个DWR入门文档。
另外可以参考这篇总结文章:http://blog.chinaunix.net/u1/53616/showart_420358.html
分享到:
相关推荐
dwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwr
dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;
dwr 框架dwr 框架dwr 框架dwr 框架dwr 框架dwr 框架
DWR中文文档DWR中文文档DWR中文文档DWR中文文档DWR中文文档
dwr中文文档dwr中文文档dwr中文文档dwr中文文档dwr中文文档dwr中文文档dwr中文文档
dwr源码
dwr笔记 dwr自学资料 dwr笔记 dwr自学资料 dwr笔记 dwr自学资料
1、 导入dwr.jar包 2、 在web.xml中配置dwr,如下: <!-- 配置DWR --> <servlet-name>dwr-invoker org.directwebremoting.servlet.DwrServlet <init-param> <param-name>debug</param-name> ...
Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr入门操作手册Dwr...
DWR配置文件详解 DWR配置 DWR配置文件
DWR介绍DWR介绍DWR介绍DWR介绍DWR介绍DWR介绍
dwr填充表格示例dwr填充表格示例dwr填充表格示例
dwr2.0.6 dwr2.0.6dwr2.0.6dwr2.0.6dwr2.0.6dwr2.0.6dwr2.0.6dwr2.0.6
dwr1.0版本 dwr2.0版本 dwr3.0版本的jar包
dwr包.rar dwr.jar engine.js util.js dwr-noncla.jar readme.txt JAR File: dwr.jar (1.08Mb) To DWR enable your web-app WAR File: dwr.war (4.62Mb) Demos/Examples of what DWR can do Sources: dwr-...
dwr分页源码,dwr分页源码 dwr分页源码,dwr分页源码
DWR3.0.jar、DWR的实例war和DWR2.0中文说明文档
dwr 2.jar dwr 2.jar
DWR快速配置入门.DWR快速配置入门.DWR快速配置入门.DWR快速配置入门.DWR快速配置入门.DWR快速配置入门.