只需修改dwr.xml:
<dwr>
<allow>
<create javascript="UserService" creator="spring" >
<param name="beanName" value="userService"></param>
</create>
<!--调用UserService中的方法时将被DWRFilter拦截-->
<filter class="com.test.filter.DWRFilter"></filter>
<convert match="com.test.bean.User" converter="bean"></convert>
<!-调用UserService中的方法返回空对象时,让Dwr报错-->
<convert match="java.lang.NullPointerException" converter="exception"></convert>
</allow>
</dwr>
类DWRFilter代码如下:
import java.lang.reflect.Method;
import org.directwebremoting.AjaxFilter;
import org.directwebremoting.AjaxFilterChain;
import org.directwebremoting.util.Logger;
public class DWRFilter implements AjaxFilter {
public Object doFilter(Object object, Method method, Object[] arr,
AjaxFilterChain chain) throws Exception {
//System.out.println("拦截目标方法:"+method.getName());
log.debug("拦截目标方法:"+method.getName());
Object obj=chain.doFilter(object, method, arr);
//System.out.println("目标方法"+method.getName()+"执行结束");
log.debug("目标方法"+method.getName()+"执行结束");
return obj;
}
private static final Logger log=Logger.getLogger(DWRFilter.class);
}
下面测试Dwr的异常处理:
UserService中有如下方法:
public List testException(List list)
{
System.out.println("测试EXCEPTION");
try {
list.get(0);
} catch (Exception e) {
throw new NullPointerException("空指针异常");
}
return list;
}
JavaScript里通过dwr.xml配置的UserService调用此方法,如果返回对象为null,则Dwr报空指针异常错误:
var list=new Array('abc');
UserService.testException(list,{
callback:function(data){alert("正常:"+data[0])},
exceptionHandler:function(message){alert("异常:"+message)}
})
分享到:
相关推荐
1. **安装与配置**:如何在你的Java应用服务器上集成DWR,配置DWR的XML配置文件(dwr.xml),以及如何在web.xml中设置过滤器和servlet。 2. **基本概念**:解释了Reverse Ajax、C/sweetalert、Batching和Caching等...
1. **DWR配置**:在Web应用的`web.xml`中配置DWR过滤器和Servlet,定义允许的远程接口和类。同时,需要在DWR配置文件(如`dwr.xml`)中声明要暴露给JavaScript的Java方法。 2. **创建远程接口**:在服务器端创建一...
1. **配置与集成**:DWR的配置主要包括在Web应用的`web.xml`中添加过滤器和Servlet,以及在服务器端创建`dwr.xml`配置文件,用于定义哪些Java类和方法可以被JavaScript访问。此外,DWR 2.0支持Spring框架的集成,...
1. **DWR配置**:首先,需要在Web应用的`web.xml`配置文件中注册DWR引擎,设置过滤器和Servlet,以便处理与DWR相关的请求。 2. **创建Java类**:在服务器端,你需要创建一个或多个Java类,这些类的方法将被暴露给...
2. **DWR Engine**:DWR Engine是DWR的核心组件,它管理所有的远程调用和回调,并处理与客户端的通信。 3. **DWR映射**:在`dwr-engine.js`或自定义配置文件中,定义哪些Java类和方法可供JavaScript调用,这是DWR的...
2. **使用安全过滤器**:DWR提供了一种名为`CORSFilter`的过滤器,用于处理跨域请求的安全问题。 3. **数据验证**:在服务器端对传入的数据进行验证,防止恶意输入。 **实际应用场景:** DWR常用于创建富客户端...
在Web应用的`web.xml`中,需要配置DWR的过滤器和servlet,以处理Ajax请求。例如: ```xml <filter-name>DWR Filter <filter-class>org.directwebremoting.servlet.DwrFilter <filter-name>DWR Filter ...
9. **进阶主题**:可能包括异步调用、批量调用、CSP(Content Security Policy)支持、自定义过滤器和扩展DWR等功能的深入探讨。 在实际开发中,DWR 3.0的使用者可以通过这个中文文档学习如何创建DWR配置文件,定义...
- **安全过滤**:使用DWR的白名单或安全过滤器来限制可以暴露给客户端的Java方法。 总结起来,DWR3.0.1jar打包涉及了DWR框架的理解、新版本的特点、JAR文件打包的流程以及部署和安全使用DWR的应用实践。对于前端...
9. **可扩展性**:DWR3.0设计时考虑到了可扩展性,允许开发者自定义序列化和反序列化策略,以及添加新的转换器和过滤器。 10. **调试工具**:DWR3.0提供了内置的调试工具,可以帮助开发者在开发过程中快速定位问题...
配置包括设置DWR的上下文路径、过滤器等。 2. **DWR接口**:在服务器端,创建一个Java接口,该接口包含了增删改查所需的方法。这些方法将被JavaScript调用,执行相应的数据库操作。 3. **DWR映射**:在`dwr.xml`...
配置DWR通常涉及到在Web应用的部署描述符(web.xml)中添加相关的Servlet和过滤器配置。 8. **版本兼容性**:DWR有多个版本,每个版本可能会有不同的API和特性。了解不同版本之间的差异和兼容性对于维护和升级项目...
在使用DWR前,我们需要在Web应用的`web.xml`中添加DWR的配置,指定`context-param`来启用DWR,并配置安全过滤器以防止跨站脚本攻击。同时,还需要创建一个`dwr-engine.xml`或`dwr.xml`文件,用于定义暴露给...
2. **AJAX与DWR的结合**: AJAX允许页面部分刷新,无需重新加载整个页面即可获取新数据。DWR通过提供一种透明的方式来调用服务器端的Java方法,使得AJAX开发更加直观。开发者可以像调用本地函数一样调用服务器上的...
7. **错误处理**:在前端,应对可能出现的网络错误或服务器异常进行处理,提供友好的错误提示。 通过上述步骤,我们可以利用ExtJs的组件和DWR的实时通信能力,创建出一个功能完善的页面登录功能。这种方式不仅简化...
7. **异常处理和安全性**:DWR提供了异常处理机制,可以捕获和报告服务器端错误。同时,DWR有安全特性,如白名单机制,防止未授权的函数调用。 8. **优化和性能**:在大量数据的场景下,可以使用DWR的批处理和缓存...
2. **DWR的配置**:在项目中使用DWR,首先需要在服务器端进行配置,包括在web.xml中配置DWR过滤器和Servlet,以及在项目的类路径下创建dwr.xml配置文件,用于定义允许客户端访问的Java类和方法。 3. **DWR的使用**...
3. **安全机制**:DWR3提供了一套安全措施,包括使用JavaScript安全过滤器防止XSS攻击,以及通过签名和加密来防止CSRF(跨站请求伪造)攻击。 4. **异步调用**:DWR3支持异步调用,允许JavaScript在不阻塞用户界面...
1. **安装和配置**:首先,你需要将DWR库添加到你的项目中,配置web.xml文件以设置DWR的Servlet和过滤器。 2. **创建Java接口**:在服务器端,定义一个Java接口,包含你希望在JavaScript中调用的方法。 3. **暴露...
1. **设置DWR环境**:在项目中引入DWR库,配置DWR的Context配置文件(dwr.xml),并确保它启用了所需的转换器和服务。 2. **创建Java服务接口**:定义一个Java类,该类包含一个或多个方法,用于执行数据库查询。...