1、java的方法避免用 java 和 javascript的关键字。 如 try()方法 或 delete()方法。
2、在你的java类中不要出现重载。
3、在生产环境下,你可以把deprecated.js、 engine.js 、util.js 合并成一个,并放到web容器内,直接在htm.jsp中引用。(对于java代码转换成的javascript代码也可以这么做,免得每次生成javascript代码浪费时间)
4、研究一下Bean Converters。POJO java对象必须严格按照 getProperty() 、setProperty()定义。Bean Converters是按照 java对象的 get set方法工作的。DWR1.1加了Object Converters,是按private int property;这类属性工作的。
<convert converter="bean" match="example.Fred"/>
<param name="exclude" value="property1, property2"/>
</convert>
当你这样配置时,java对象转化成的javascript对象不包括property1和property2。
<convert converter="bean" match="example.Fred"/>
<param name="include" value="property1, property2"/>
</convert>
反过来,java对象转化成的javascript对象只包括property1和property2。
5、<convert converter="collection" match="java.util.Collection"/>
<convert converter="map" match="java.util.Map"/>
这也是容易出问题的地方。
如:
package example;
public class Person{
private String name;
get ... set
private List relationPerson;
public List setRelationPerson(List relationPerson){
this.relationPerson = relationPerson;
}
}
<convert converter="bean" match="example.Person"/>
</convert>
<signatures>
<![CDATA[
import java.util.Set;
import example.Person;
Person.setRelationPerson(List<Person>);
]]>
</signatures>
在jdk1.5泛型中有写法区别
6、另外在Set、List等作为方法参数时也会出现混淆。返回集合类型不会出现问题,想想就知道了。
如:在Test类中有 public Set testBeanSetParam(Set test) 这个方法,客户端得到的javascript方法可能是Test.testBeanSetParam(p0,callback);当我们 javascript调用这个方法时,鬼才知道怎么确定p0的类型,也不可能知道Set集合中该放什么类型的java对象,所以dwr的 special signatures syntax 确定这些集合和内容的类型
<signatures>
<![CDATA[
import java.util.Set;
import example.Test;
Test.testBeanSetParam(Set<TestBean>);
<!--Test.stringStringMapParam(Map<String, String>);-->
]]>
</signatures>
7、Creators
<allow>
<create creator="..." javascript="..." scope="...">
<param name="..." value="..."/>
<auth method="..." role="..."/>
<exclude method="..."/>
<include method="..."/>
</create>
...
</allow>
为了更少的暴露业务方法,最好配置include属性。
dwr支持new、script、struts....几种集成方法,也支持static方法的调用。我觉得最好的是spring,其他感觉是处理遗留问题处理。
8、engine.js 作为dwr框架客户端核心,主要完成xmlHttp或iframe的构造,我们没必要关心它如何实现。有几点创新的我们可以学习下。
Call Batching 我们可以把几个客户端请求一起放送到服务器端,减少了网络交互,但要注意依存关系和他们处理的顺序。
Call Ordering 同步异步调整。一般用默认的就好了。注意依存关系。
Remoting Hooks 钩子,"small AOP"
依存关系解释。 如果 request1() request2()两个业务逻辑方法,request2方法需要用到request1方法从服务器端返回的结果。如果调用request2时,request1还没处理或还没请求。 下拉框连动可能有这个问题。
9、util.js 、propotype.js有些重复,这让我很难受。只能改代码了,可别坏了开源协议。
10、如果你的回调方法想加其他参数
var dataFromBrowser = ...;
var callbackProxy = function(dataFromServer) {
callbackFunc(dataFromServer, dataFromBrowser);
};
var callMetaData = { callback:callbackProxy };
Remote.method(params, callMetaData);
11、dwr1.1
1.1只能算一个bug消除版本,没有什么大的功能调整。源代码结构做了些调整。2.0有新的特征加入。
It has a far broader scope; the major new features are accessibility enhancements, and what now appears to be called 'Comet'. 在文档中提到了“Comet”,估计与DWR2.0作者想法类似。
分享到:
相关推荐
通过本文的详细介绍,我们了解了DWR的基本安装与配置过程,以及在使用过程中需要注意的细节。DWR通过简化Ajax开发流程,使得前后端交互变得更加直接与高效。遵循上述步骤,你可以快速上手DWR,实现更高级的Ajax功能...
**DWR(Direct Web Remoting)使用方法详解** DWR,全称为Direct Web Remoting,是一种开源Java技术,用于在Web应用程序中实现浏览器与...然而,实际使用时还需注意安全性和性能优化,确保应用的稳定性和用户体验。
7. **版本差异**:虽然示例基于DWR 1.1,但需要注意的是,DWR后续版本(如2.0)可能会引入新的特性、改进和API变更。因此,实际使用时应查阅对应版本的官方文档。 总的来说,DWR框架简化了前端与后端之间的交互,...
9. **安全考虑**:在实际项目中,使用DWR时需要注意安全性问题。暴露给JavaScript的服务器端方法可能会引发安全风险,因此需要谨慎设置DWR的访问权限,避免敏感数据和操作被不授权的用户调用。 通过这个简单的DWR...
Direct Web Remoting (DWR) 是一个开源Java库,它允许Web应用程序在浏览器和服务器之间进行实时、安全的双向通信,有效地打破...然而,正确配置和使用DWR,以及处理好跨域安全问题,是每个开发者必须面对和解决的挑战。
然而,需要注意的是,虽然DWR简化了Ajax开发,但在大型复杂项目中,可能需要考虑其他更现代的解决方案,如使用WebSocket或React、Vue等前端框架结合后端API进行通信。此外,随着技术的发展,DWR可能不再是最新的工具...
Direct Web Remoting (DWR) 是一个开源的Java库,它允许JavaScript在浏览器端与服务器端的Java对象进行交互,从而实现动态Web应用程序。...在使用DWR时,需要注意安全配置和性能优化,以确保应用程序的稳定性和安全性。
在使用 DWR 2.0 版本时,需要注意的是,java 里暴露类不能写在 `<create>` 属性里,应删除后写 在 `<include method="" />` 前,写 `*java 里暴露的 class,必须写完整路径*" />`。 dwr.xml 文件的配置是 DWR 的核心...
1. **性能优化**:合理设置DWR的缓存策略,避免不必要的网络请求,同时注意批处理和异步调用的使用。 2. **安全性**:启用CSP并严格限制暴露给客户端的Java方法,防止恶意代码注入。 3. **错误处理**:DWR提供了...
`readme.txt`通常包含项目的基本信息,如安装指南、运行步骤或注意事项,对于理解如何使用这个资源至关重要。 `我的淘宝店网址.txt`可能是作者提供的额外信息,比如相关的技术支持或者购买更多相关资源的链接。 `...
在实践中,需要注意DWR的安全设置,例如防止跨站脚本攻击(XSS)和跨站请求伪造(CSRF),并合理设计接口,以确保良好的性能和可维护性。同时,DWR也提供了缓存机制,以减少不必要的服务器请求,提高应用效率。
DWR (Direct Web Remoting) 是一个开源的Java库,它允许在Web应用程序中实现...不过,要注意的是,虽然DWR简化了JavaScript与服务器的通信,但也可能增加系统的复杂性,因此在选择使用时应根据项目需求谨慎评估。
虽然DWR提供了便利,但也需要注意安全性。默认情况下,DWR允许所有客户端访问公开的方法,因此需要根据实际需求限制对服务器端资源的访问,防止未授权的访问。 8. **优化和扩展** 了解DWR的高级特性,如批量调用...
NULL 博文链接:https://chaozhichen.iteye.com/blog/718812
然而,需要注意的是,DWR的安全性问题,例如防止跨站脚本攻击(XSS)和跨站请求伪造(CSRF),这需要在配置和编程时采取相应的防护措施。同时,DWR虽然提供了强大的功能,但在大型复杂应用中,可能需要考虑其他更...
6. **LICENSE.txt**和**readme.txt**:LICENSE.txt包含了该软件的许可协议信息,readme.txt则通常提供项目的基本介绍、安装指南、使用注意事项等内容,对于理解和使用这个DWR资源包非常有帮助。 7. **pom.xml**:这...
需要注意的是,DWR虽然强大,但在现代Web开发中已经被其他技术,如WebSocket,所取代,因为WebSocket提供了更稳定、更高效的数据双向通信机制。不过,理解DWR的工作原理仍然有助于理解Web应用的异步通信机制,对于...
4. **开启推送**: 使用DWR的`create`方法创建一个与服务器的连接,并监听特定事件。当服务器有新的消息时,DWR会触发这个事件,从而使客户端得到通知。 5. **处理推送消息**: 在JavaScript事件处理器中,接收并处理...
**注意事项** - 确保DWR的版本与Spring的版本兼容,否则可能会出现运行时错误。 - 考虑安全性:DWR允许直接从JavaScript调用服务器端方法,可能存在安全风险,需要限制可调用的方法和对象,防止跨站脚本攻击(XSS)...