第六讲 DWR异常处理与跨域访问
异常转换器
我们在服务器端写业务逻辑的时候,通常会利用try{}catch{}捕获异常,但是现在对于前台调用后台的业务逻辑,我们如果在后台发生了一些异常,在前台如何让他显示出来,这里dwr为我们提供了一种转换器(Exception转换器),但是这种转换器如果我们不显示的表现出来,它会默认的给我们提供一个error的异常出来,后台报的异常会在前台以error的方式给我们显示,但是不会吧详细的信息暴露出来,所以我们需要自己配置error的转换器,然后把需要的异常信息给显示出来。举例:
后台的业务逻辑:
public void testException(){
System.out.println("测试exception");
try{
List list = null;
list.get(0);
}catch(Exception e){
throw new NullPointerException("空指针异常");
}
}
index.jsp
function showexception(){
UserLogic.testException();
}
运行调用打印Error。就是dwr框架给我们指定的,如果我们后台访问的时候发生异常,前台为我们的提示信息就为Error,相当于这些普遍的异常都会以Error的形式给我们显示。但是我们现在不想要Error,我们想要知道前台给我们报的错误是针对后台哪一个异常,我们就需要这个异常转换器来给我们指定这种异常的转换,然后把这种异常信息捕获到前台,前台给我们打印出来,这就要用到dwr给我们提供的内置的转换器,在dwr.xml里面配置<convert match="java.lang.NullPointerException converter="exception">,只要配置了这种异常处理转换器,后台发生异常,前台就可以给我们打印出来.运行结果:前台打印空指针异常。这说明通过配置异常处理转换器,在前台可以捕获后台发生的异常,而且是详细的异常信息。有一点需要注意:发生异常有一种是因为前台传递给后台的参数不合法而引起的。看例子:
后台的业务逻辑:
public void testException(List list){
System.out.println("测试exception");
try{
list.get(0);
}catch(Exception e){
throw new NullPointerException("空指针异常");
}
}
index.jsp
function showexception(){
var list;
UserLogic.testException(list);
}
运行结果,打印出空指针异常,说明我们前台传递进去的list是空。
前台对异常的处理:
index.jsp
function showexception(){
var list;
UserLogic.testException(list,{
callback:function(data){alert(data)},
exceptionHandler:function(message){alert(message)}
});
}
注意:callback和exceptionHandler是engine.js里面的变量。用来处理异常。这样写的好处是,如果正常执行会调用callback函数,如果发生异常会调用exceptionHander函数来处理。注意callback和exceptionHandler必须按照上面的方式来写,这是engine.js里面规定的。
跨域访问的 问题
在一般的开发中不会遇到,但是在分布式多个域的情况下就会发送。多个域服务器,每一个域服务器呢会有自己的域名,怎么理解?相当于我们上网所用的dns解析服务器,这种解析,每一个域名根据它的ip把它解析为一种可标示的字母形式组成的一个域名便于访问,使得我们不用记ip。但是在这里要注意:跨域访问相当于是我现在采用http://localhost:8080的方式,然后我调用了它当中的dwr的方法,这种访问是可以的,是允许的,但是现在我想跨过这个域访问其他的域,比方说新浪下的dwr它是不允许你去访问的,原因就是这种跨域的访问是不支持的,但是对于dwr来讲,它其中给我们提供了跨域访问的支持,我们现在就是如何把这种支持在程序中体现出来,实现跨域的访问。一般的访问跨域是不常见,但是在分布式中比较常见。在自己机器上曾样模拟跨域访问呢?对于这种跨域来讲,有一个很奇特的地方,因为域名解析,域名对应一个ip,同一台机器,它们都是127.0.0.1,但是对于dwr这种脚本来说,它的解析不对应127.0.0.1,它把它理解成两个域,所以我们目前是通过http://localhost去访问127.0.0.1对应的那个dwr,我们这也属于跨域访问,所以在本机测试也是很容易的。
分享到:
相关推荐
**8.2 错误和异常处理**:DWR提供了强大的错误和异常处理机制,帮助开发者更好地管理异常情况。 1. **错误处理**:通过回调函数中的errorHandler属性来处理可能出现的错误。 2. **异常**:了解DWR可能抛出的各种...
DWR提供了错误回调函数,可以在客户端捕获并处理这些异常。 10. **跨域问题** 如果DWR应用涉及到跨域通信,还需要配置CORS(Cross-Origin Resource Sharing),允许来自不同源的请求。 通过以上知识点,我们可以...
DWR处理了跨域问题,提供了安全机制,以及对异步调用的异常处理。 2. Maven: Maven是Java项目管理工具,主要用于构建、依赖管理和项目信息管理。它通过一个XML文件(pom.xml)来定义项目配置,包括项目信息、依赖...
DWR的配置包括设置允许跨域访问,暴露Spring Bean为JavaScript可用的方法,以及处理错误和异常。这样,当用户点击提交按钮时,JavaScript可以立即发送请求到服务器,验证验证码的正确性,然后根据结果给出反馈。 ...
- **错误处理**:可能增强了错误报告和异常处理机制,提供了更好的调试支持。 - **API改进**:可能有新的API或者现有API的增强,以简化开发工作。 3. **JAR打包过程:** - **构建配置**:在项目根目录下创建`pom...
2. **使用安全过滤器**:DWR提供了一种名为`CORSFilter`的过滤器,用于处理跨域请求的安全问题。 3. **数据验证**:在服务器端对传入的数据进行验证,防止恶意输入。 **实际应用场景:** DWR常用于创建富客户端...
8. **调试与测试**: Eclipse内置的调试工具可以帮助开发者在运行时检查和调试DWR的服务器端和客户端代码,理解数据的流向和异常情况。 通过这个"可以直接运行的eclipse工程",开发者不仅可以学习DWR的基本用法,还...
1. **DWR Engine**:这是DWR的核心,负责处理所有AJAX请求,包括安全验证、方法调用、异常处理等。它通过JavaScript API与客户端交互,并将请求转发给相应的Java服务。 2. **Servlet**:DWR提供了一个Servlet,用于...
8. **错误处理**:DWR提供了内置的错误处理机制,可以捕获和处理通信过程中可能出现的异常,比如网络故障或服务器端错误。 9. **Caching**:DWR支持缓存,可以提高性能,尤其是在反复调用同一方法时。 10. **实时...
7. **异常处理和回调** DWR支持错误回调,当服务器端方法抛出异常时,可以在客户端捕获并处理。这使得前端可以对服务器端可能出现的错误做出相应的反馈。 8. **性能和安全性** 虽然DWR简化了开发流程,但需要注意...
此外,DWR也支持错误处理,可以捕获并处理服务器端或网络通信中的异常。 6. **调试工具**:DWR提供了内置的调试工具,如DWR Console,帮助开发者查看和调试与服务器之间的通信,包括请求和响应的详细信息。 7. **...
DWR自动处理了跨域问题,提供了简单易用的API,使得开发者能够更加专注于业务逻辑的实现,而无需关心底层的Ajax细节。这种机制大大简化了Ajax应用的开发流程,提高了开发效率。 #### Spring框架的集成 Spring框架...
Struts2和DWR2是两个在Web开发中常用的开源框架,它们分别处理不同的层面:Struts2专注于MVC(模型-视图-控制器)架构的实现,而DWR(Direct Web Remoting)则用于在浏览器和服务器之间实现异步的JavaScript到Java的...
首先,DWR的核心功能是提供了一种跨域的通信机制,使得前端JavaScript可以直接调用后端Java方法,就像操作本地函数一样,这大大减少了前端与后端的交互复杂性。通过这种方式,开发者可以构建更加动态和交互性强的Web...
其优点包括强大的拦截器机制、丰富的插件支持、良好的异常处理以及面向切面的编程模型。在Struts2.0中,业务逻辑通常在Action类中处理,视图由JSP、FreeMarker等模板引擎生成,控制器负责调度请求并调用Action。 **...
DWR提供了一套完善的错误和异常处理机制,可以捕获并报告在远程调用过程中发生的各种错误。 **8.3 传递额外的数据到callback函数** 除了返回值外,还可以传递额外的信息到回调函数中,以便于更灵活地处理响应。 *...
5. **安全考虑**:DWR虽然方便,但也有安全风险,因为它允许跨域访问。因此,配置时要确保只暴露必要的方法,并对参数进行适当的验证,以防止XSS和CSRF攻击。 6. **缓存管理**:DWR提供了自动更新客户端JavaScript...
5. **错误处理**:DWR提供了错误处理机制,可以捕获和处理远程调用中的异常。 **五、DWR的高级特性** 1. **安全控制**:DWR 提供了多种安全策略,如IP过滤、用户验证等,确保只有授权的请求能被执行。 2. **类型...
9. **跨域支持**:DWR通过CORS(Cross-Origin Resource Sharing)策略,使得JavaScript可以从不同的源(域名)访问资源,扩展了Web应用的交互范围。 10. **错误处理**:DWR提供了统一的错误处理机制,当服务器端...
5. **事件处理与回调**:DWR支持异步调用,这意味着在调用服务器方法后,你可以提供一个回调函数来处理返回的结果。这使得你可以在用户界面中实时更新数据,无需刷新整个页面。 6. **安全性与优化**:DWR提供了多种...