DWR基本配置

 

DWR基本配置

2010-08-12 13:54

1.在web.xml里配置



dwr-invoker
org.directwebremoting.servlet.DwrServlet

debug
true


crossDomainSessionSecurity
false



dwr-invoker
/dwr/*




初始化参数还有其它:

a.allowGetForSafariButMakeForgeryEasier,解决了safari 1.x post时的bug,默认是false,避免bug改为true。

b.crossDomainSessionSecurity,默认是true,如果改为false将会能接收其它域的请求,存在安全风险。

c.allowScriptTagRemoting,页面里动态添加标签的ajax方法,默认为true。

d.debug,是否调试,默认是false。

e.scriptSessionTimeout,设置超时时间,默认是1800000(30 minutes)。

f.maxCallCount,设置最大请求数,默认是20.

g.activeReverseAjaxEnabled,默认是false,When set to true, the polling and Comet reverse Ajax
techniques are enabled.

h.maxWaitingThreads,多少激活状态的servlet线程,默认是100.

i.maxPollHitsPerSecond,When using the polling reverse Ajax method, this is the maximum number of requests per second allowed. The default value is 40.

j.preStreamWaitTime,等待回调之前回复时间,默认是29000。

k.postStreamWaitTime,回调之后的回复时间,默认是1000

l.[Interface Name],This is used to override parts of DWR without having to build it from source. The default implementation is the default.

m.ignoreLastModified,默认是false,dwr利用缓存控制请求。当是true时,就没有这项功能了。

n.scriptCompressed,默认是false,对返回javascript压缩。才外还有一个非官方的参数是compressionLevel ,这个参数有三个级别:none, normal,ultra。参考javadoc的JavascriptUtil类。

o.sessionCookieName,dwr使用session cookie获得url请求,一般是使用JSESSIONID,这里你可以使用不同的session名。

p.normalizeIncludesQueryString,默认是false。

q.overridePath,一些web容器修改请求路径导致dwr不能找到相关资源,设置这个参数会复写路径。默认是不使用的。



2.在dwr.xml里配置


"http://getahead.org/dwr/dwr20.dtd">








介绍一下,dwr一般的文件结构:



























creator的选项有不同的选项:

new ,最常用一般是写的新bean。

none ,不创建任何对象,一般是调用静态方法。

spring ,通过spring framwork访问bean。

jsf ,对象来自jsf。

struts ,使用struts的form bean。

pageflow ,Gives access to a PageFlow from Beehive or WebLogic.

ejb3 ,访问ejb3的sesssion bean









3.页面引用






4.调用

mDelegate.methodName();//这个方法名就是在app.MathDelegate这个类里的方法。



以上是dwr的基本使用,还有一些高级使用简单阐述一下

一般在servlet里配置是


dwr-invoker
uk.ltd.getahead.dwr.DWRServlet


默认是读取web-inf下的dwr.xml配置文件,但我们可以修改它!


dwr-invoker
uk.ltd.getahead.dwr.DWRServlet


config
configFiles/dwrConfig.xml



参数名是config后面可以有任何后缀,这样就不读取dwr.xml了,会读dwrConfig.xml。迫于安全的考虑我们可以根据不同权限去用不同的配置文件,去设置我们需要调用的方法(可以用includ和exclude标签,这里介绍的是在j2ee级别的安全配置),我们对不同权限定义不同配置文件


dwr-user-invoker
uk.ltd.getahead.dwr.DWRServlet

config-user
WEB-INF/dwr-user.xml



dwr-admin-invoker
uk.ltd.getahead.dwr.DWRServlet

config-admin
WEB-INF/dwr-admin.xml



dwr-admin-invoker
/dwradmin/*



dwr-user-invoker
/dwruser/*


接着在web.xml里配置



dwr-admin-collection
/dwradmin/*


admin




dwr-user-collection
/dwruser/*


user



这样user读的配置文件跟admin的是不同的。

除了以上方法还有一种方法,是直接在dwr.xml里配置






只有admin的权限才能调用delete方法,这个就不用分着写dwr的配置文件了,不过得在web.xml里区分权限。

下面就是ajax最难懂的部分了,一个概念reverse ajax。包括三种模式:polling,comet,piggybacking。其中前两种是active的最后一个是inactive的。

在web.xml里配置的信息


activeReverseAjaxEnabled(必须的)
true


org.directwebremoting.extend.ServerLoadMonitor(如果是poll模式时是必须的)
org.directwebremoting.impl.PollingServerLoadMonitor





timeToNextPoll
1000


使用dwr.engine.setActiveReverseAjax(true);



与项目结合使用:

1.spring








contextConfigLocation
/WEB-INF/classes/beans.xml



org.springframework.web.context.ContextLoaderListener





2.jsf









DwrFacesFilter
uk.ltd.getahead.dwr.servlet.FacesExtensionFilter


DwrFacesFilter
/dwr/*




3.WebWork/Struts 2












4.struts 1









5.Beehive







当在dwr中使用annotation时:


DWR controller servlet
DWR controller servlet
org.directwebremoting.servlet.DwrServlet

classes
com.example.RemoteFunctions,com.example.RemoteBean





@RemoteProxy //设置控制类
public class RemoteClass {
@RemoteMethod //调用的方法
public String myMethod(String inParam) {
return inParam + " returned";
}
}



@DataTransferObject //需要做convert的方法
public class MyBean {
@RemoteProperty //方法的属性
private String firstName;
public String getFirstName() {
return firstName;
}
}

 

你可能感兴趣的:(dwr)