http://hi.baidu.com/fququ/blog/item/586437a4979e4ff29052ee95.html
DWR 2.0 ajax 使用总结
从网上查了N多资料也没把dwr 配置成功.以下是从失败中成功总结出来的可应用的dwr2.0 使
1,dwr.xml文件:
<!DOCTYPE dwr PUBLIC
"-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"
"http://www.getahead.ltd.uk/dwr/dwr10.dtd">
<dwr>
<allow>
<create creator="new" javascript="BLACK_LIST">
<param name="class" value="com.hzsoft.mcms.system.BLACK_LIST"/>
</create>
<create creator="new" javascript="SYS_MODEL_BASE">
<param name="class" value="com.hzsoft.mcms.bean.SYS_MODEL_BASE"/>
</create>
</allow>
</dwr>
2,web.xml文件添加servlet:
<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>
<init-param>
<param-name>classes</param-name>
<param-value>java.lang.Object</param-value>
</init-param>
<load-on-startup>100</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
红色部分是需要注意与1.0等不同的地方
3,使用时dwr路径问题:
<script type='text/javascript' src='../dwr/interface/SYS_MODEL_BASE.js'></script>
<script type='text/javascript' src='../dwr/engine.js'></script>
<script type='text/javascript' src='../dwr/util.js'></script>
这里需要注意用的是相对于网站跟目录的使用位置
4,用winrar打开dwr.jar包还是源码包我忘记了,把commons-logging-1.0.4.jar 放到工程lib 目录下
5,别忘了添加dwr.jar 包,2.03版的是约489 k大小(偏差2k)
6,写完你的后台代码后输入 http://localhost:8080/myproject/dwr/ 看看是否有可引用的函数,有就引用成功.没有的话那说明配置还是有问题.
-----------------------------------------------------
http://darkmasky.iteye.com/blog/464669
错误描述:
org.directwebremoting.dwrp.BaseDwrpHandler - A request has been denied as a potential CSRF attack.
org.directwebremoting.dwrp.BaseCallHandler - Exception while processing batch
java.lang.SecurityException: CSRF Security Error
at org.directwebremoting.dwrp.BaseDwrpHandler.checkNotCsrfAttack(BaseDwrpHandler.java:85)
at org.directwebremoting.dwrp.BaseCallHandler.handle(BaseCallHandler.java:76)
at org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:120)
at org.directwebremoting.servlet.DwrServlet.doPost(DwrServlet.java:141)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:99)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process (Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
解决办法:
修改 web.xml 中 DWR 配置信息
原:
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>org.directwebremoting.spring.DwrSpringServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
加入跨域调用配置信息(红色部分),修改为:
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>org.directwebremoting.spring.DwrSpringServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>crossDomainSessionSecurity</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>allowScriptTagRemoting</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
分享到:
相关推荐
- **安全机制**:DWR提供了防止XSS(跨站脚本攻击)和CSRF(跨站请求伪造)的安全机制,确保应用安全性。 2. **配置**: - **web.xml**:在Web应用的部署描述符中配置DWR的Servlet,如`dwr-servlet.xml`,设置...
DWR1.0引入了安全特性,如白名单机制,以限制JavaScript可以访问的服务器端方法,从而避免跨站脚本攻击(XSS)。 DWR2.0: 随着AJAX技术的发展,DWR2.0进行了许多改进和增强。这个版本引入了更强大的类型安全机制,...
8. **调试与优化**:DWR提供了丰富的日志功能和错误处理机制,这有助于你在开发过程中调试和优化代码。通过调整`dwr.xml`的配置,你可以控制日志的详细程度。 9. **安全考虑**:在实际项目中,使用DWR时需要注意...
4. **调试设置**:通过`<debug>`标签,你可以开启或关闭DWR的调试模式,这在开发阶段非常有用,因为它会显示详细的错误信息。 5. **自定义行为**:DWR还允许通过`<custom-configuration>`标签引入自定义的行为和扩展...
7. **错误处理**:当服务器端或客户端出现错误时,DWR提供了一套处理机制,包括异常的捕获和返回给前端。 8. **DWR与Ajax**:DWR是如何简化AJAX开发的,如何利用DWR实现异步数据更新,以及与传统AJAX请求的区别。 ...
通过配置这个文件,开发者可以精细控制DWR的行为,比如设置安全策略、URL映射、错误处理等。 "DWRchinese.pdf"可能是DWR的中文版官方文档或者一个综合教程,涵盖了从入门到高级的DWR使用技巧,包括但不限于创建远程...
**8.5 安全性**:DWR内置了一些安全措施来防止常见的攻击手段,但开发者还需要根据实际情况加强安全策略。 #### 四、范例精讲 **9.1 购物车示例**:通过构建一个完整的购物车功能来展示DWR的实际应用场景。 1. **...
- **安全设置**:讨论防止跨站脚本攻击(XSS)和跨站请求伪造(CSRF)的安全措施。 - **高级特性**:包括批量调用、异步处理、回调函数、错误处理等。 - **自定义转换和验证**:如何自定义Java对象到JavaScript...
无论是在架构设计、性能优化还是安全性增强等方面,DWR 3.0 都展现出了更强的能力。此外,它还提供了更为丰富的 API 和工具集,使得开发者能够更加高效地构建高质量的 AJAX 应用。对于正在考虑使用 DWR 或者计划从旧...
7. **错误处理**:学习DWR提供的错误处理机制,如何捕获并处理客户端和服务器端的异常。 8. **集成与调试**:理解如何将DWR与其他前端框架(如jQuery或AngularJS)集成,并使用DWR的内置调试工具进行问题排查。 9....
Direct Web Remoting (DWR) 是一种开源的Java库,它允许Web应用程序在浏览器和服务器之间进行实时的、安全的、动态的JavaScript到Java的方法调用。DWR简化了Ajax(Asynchronous JavaScript and XML)开发,使得前端...
在这个版本中,DWR提供了一套全面的API,包括自动转换Java对象到JSON格式,以及处理安全性和并发性问题。此外,DWR 2.0支持自动刷新,这意味着当服务器端的Java类或方法发生变化时,无需重新加载页面,客户端的...
Direct Web Remoting (DWR) 是一个开源Java库,它允许在浏览器和服务器之间进行实时、安全的双向通信,使得JavaScript可以直接调用Java方法,从而实现Web应用的Ajax功能。这个"TestDWR"文件很可能是DWR的一个简单...
6. **错误处理**:DWR提供了友好的错误处理机制,可以在客户端捕获并显示服务器端的异常信息。 在使用DWR时,开发者首先需要在服务器端创建可远程访问的Java类和方法,然后在客户端使用DWR生成的JavaScript接口与...
这个JAR文件包含了许多类,如`DWRServlet`,它是DWR与HTTP请求交互的核心组件,以及各种用于转换数据类型、安全处理和错误处理的工具类。开发者在项目中引入这个JAR文件,就能利用DWR提供的功能,创建远程方法调用,...
3. **错误处理**:DWR提供了错误处理机制,可以在客户端捕获和处理服务器端的异常。 4. **集成其他技术**:DWR可与Spring、Struts等框架无缝集成,提升开发效率。 通过【DWR视频教程3】,你将系统学习到如何配置...
当服务器端发生错误时,DWR可以将异常信息转换为JavaScript错误对象,使得客户端能够捕获并处理这些异常。这对于提供良好的用户体验至关重要。 综上所述,"DWRSpring实例"是一个很好的学习资源,可以帮助我们理解...
3. **安全机制**:DWR提供了一套安全机制,如CORS(跨源资源共享)支持、同源策略以及可配置的白名单,以限制哪些域名可以访问服务器资源,确保通信安全。 4. **批处理和缓存**:DWR支持批处理多个远程调用,以减少...
- **安全配置**:必须正确配置DWR的安全设置,以保护应用免受潜在攻击,例如设置白名单限制可访问的Java类和方法。 - **调试与日志**:DWR提供了调试工具和日志记录功能,帮助开发者在开发过程中定位问题。 - **...