`
lixw
  • 浏览: 200896 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

DWR心得

阅读更多

以前简单的应用过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

分享到:
评论

相关推荐

    Ajax学习——DWR的参考书和实用案例学习总结

    **Ajax学习——DWR的参考书和实用案例学习总结** DWR(Direct Web Remoting)是一种优秀的开源框架,专门用于简化Web应用程序中的Ajax(Asynchronous JavaScript and XML)开发。Ajax技术允许网页在不刷新整个页面...

    关于Ajax框架DWR的总结

    对Ajax中框架dwr的详细介绍文档。个人心得。

    Springside之开发bookstore心得

    ### Springside之开发bookstore心得 #### BookStore项目概述 BookStore是一个基于Spring框架构建的典型B2C网上书店应用程序,旨在演示各种企业级应用技术。由于该项目的主要目的是技术演示而非实际商业运营,因此...

    Struts in Action

    在描述中提到的博文链接虽然未给出具体内容,但通常这类博客会分享作者在阅读或应用《Struts in Action》一书时的心得体会,可能包含对某些章节的理解、实际项目中的应用示例或者遇到的问题及解决方案。遗憾的是,...

    JAVA基础加强 --学习心得一(JAVA中常用英文单词简写释义).docx

    16. **DWR (Direct Web Remoting)**:DWR是一个开源的Java框架,允许JavaScript在浏览器和服务器之间直接调用Java方法。 17. **JCP (Java Community Process)**:JCP是一个开放的组织,负责制定和批准Java技术规范...

    JavaEE框架总结

    - **集成DWR**:实现了Ajax功能,增强了用户交互体验。 - **国际化支持**:方便地支持多语言应用。 #### Spring框架 - **核心功能**: - **AOP(面向切面编程)**:将横切关注点(如日志记录、安全检查等)从...

    总结Java部分的框架和开源项目

    WebWork2还引入了AJAX支持,利用DWR和Dojo框架。 4. **Struts**: Struts是一个经典的MVC框架,它整合了Servlet、JSP和自定义标签,简化了基于J2EE的Web应用开发。StrutsIDE是针对Struts的Eclipse插件,用于辅助...

    (3.0版本)自己写的struts2+hibernate+spring实例

    外加一些关于struts2和hibernate的技巧心得整理. 说一下这次3.0更新的内容.可能大家在我的博客里面已经看到了相关的日志.我懒.下面就把那个日志抽出来当说明了啊.有兴趣的就下载下来瞅瞅.偶也是菜鸟的.写的不好不要...

    SD大会精品讲座:利用AJAX/Java 技术建立高流量的即时双向沟通网站

    在本课程中,他将分享自己在AJAX/Java领域的实战经验和心得。 #### 三、AJAX技术概览 ##### 1. AJAX技术特点 - **无需页面刷新即可更新内容**:这是AJAX最显著的特点,它允许在不重新加载整个网页的情况下动态...

Global site tag (gtag.js) - Google Analytics