`
sun201200204
  • 浏览: 299959 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

dwr中的异常处理

    博客分类:
  • j2ee
阅读更多
一天一位老兄问我,我用的dwr怎么没有包装异常,以前我通过包装dwr这个类来处理服务器段返回的异常,这个dwr类封装一个你要返回的东西,一个boolean值,还有一个错误的封装,比如说你实际要返回的是一个bean,那就把这个bean写在这个dwr类里面,然后去dwr配置里面把这个dwr类配置成bean。我觉得这个老土了,所以就没去处理,直接返回要的实际的类型,没去处理异常。

我觉得dwr应该有对异常的处理方法。
没什么好说的:看demo:
web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC
    "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app id="dwr">

  <servlet>
    <servlet-name>dwr-invoker</servlet-name>
    <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>

    <!-- This should NEVER be present in live -->
    <init-param>
      <param-name>debug</param-name>
      <param-value>true</param-value>
    </init-param>

    <!-- Remove this unless you want to use active reverse ajax -->
    <init-param>
      <param-name>activeReverseAjaxEnabled</param-name>
      <param-value>true</param-value>
    </init-param>

    <!-- By default DWR creates application scope objects when they are first
    used. This creates them when the app-server is started -->
    <init-param>
      <param-name>initApplicationScopeCreatorsAtStartup</param-name>
      <param-value>true</param-value>
    </init-param>

    <!-- This enables full streaming mode. It's probably better to leave this
    out if you are running across the internet -->
    <init-param>
      <param-name>maxWaitAfterWrite</param-name>
      <param-value>-1</param-value>
    </init-param>

    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>dwr-invoker</servlet-name>
    <url-pattern>/dwr/*</url-pattern>
  </servlet-mapping>

</web-app>


dwr:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr/dwr20.dtd">

<dwr>

  <allow>

    <!-- simpletext -->
    <create creator="new" javascript="Demo">
      <param name="class" value="org.getahead.dwrdemo.simpletext.Demo"/>
    </create>
    <!-- this is a bad idea for live, but can be useful in testing -->
    <convert converter="exception" match="java.lang.Exception">
    	<!--<param name='include' value='message,lineNumber'/>-->
    </convert>
    <convert converter="bean" match="java.lang.StackTraceElement"/>

  </allow>

</dwr>

java类
package org.getahead.dwrdemo.simpletext;

import java.io.IOException;

import javax.servlet.ServletException;

import org.directwebremoting.WebContext;
import org.directwebremoting.WebContextFactory;

/**
 * Some simple text demos
 * @author Joe Walker [joe at getahead dot ltd dot uk]
 */
public class Demo
{
    /**
     * Return a server side string to display on the client in real time
     * @param name The name of person to say hello to
     * @return A demo string
     * @throws Exception 
     */
    public String sayHello(String name) throws Exception
    {
//    	if("dave".equals(name)){
//				throw new Exception("hello world");
//    	}
    	Integer value = Integer.valueOf(name);
    	Integer id = 100/value;
    	return "Hello, " + id.toString();
    }

}

  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <script type='text/javascript' src='/dwr/interface/Demo.js'> </script>
    <script type='text/javascript' src='/dwr/engine.js'> </script>
  <script type='text/javascript' src='/dwr/util.js'> </script>
  <script type="text/javascript" src='index.js'> </script>

  <div id="demoDiv">

    <p>
      Name:
      <input type="text" id="demoName" value="Joe"/>
      <input value="Send" type="button" onclick="update()"/>
      <br/>
      Reply: <span id="demoReply" style="background:#eeffdd; padding-left:4px; padding-right:4px;"></span>
    </p>
  </div>


function update() {
  var name = dwr.util.getValue("demoName");
  Demo.sayHello(name,{ 
  	        callback:getData,
		errorHandler:errorHandler,
		exceptionHandler:exceptionHandler
		/*
		function(errorString,exception) {
			alert('error:'+errorString);
		},
		exceptionHandler:function(errorString,exception) {
			alert('exception:'+errorString + ":" + exception.message);
		}*/
});
}


function getData(data){
	dwr.util.setValue("demoReply", data);
}

function errorHandler(errorString, exception){
 alert(exception.message);
}
function exceptionHandler(exceptionString, exception){
 alert(exception.message);
}


还有一种更简单的就是在页面上写上
DWREngine.setErrorHandler(dispatchErr);

function dispatchErr( msg , ex )
{
    alert( msg );
}

写的都不用改就OK了
参考:
http://flower-city.spaces.live.com/blog/cns!5CDF3197CFFC015F!518.entry
dwr异常解决
环境dwr2.0 原因是据说dwr2.0的异常处理支持比1.0好很多

定义异常处理函数:
function errorHandler(errorString, exception){
alert(exception.message);
}
function exceptionHandler(exceptionString, exception){
alert(exception.message);
}

设置通用的异常处理函数:
dwr.engine.setExceptionHandler(exceptionHandler)
dwr.engine.setErrorHandler(errorHandler);

在dwr.xml中配置异常类转换器:
<convert converter="exception" match="com.jeyo.monica.service.OrderServiceException">
  <param name='include' value='message,lineNumber'/>
</convert>
<convert converter="exception" match="java.lang.Exception">
  <param name='include' value='message,lineNumber'/>
</convert>

业务处理过程中一定需要将对应的异常转换为上面定义的异常才可以被dwr捕捉的
如下:
try{
}catch(Exception e){
throw new OrderServiceException(e);
}
.....

自定义的异常处理
调用dwr远程调用时多带若干参数:
如下格式:
OrderService.create(order,
  {
   callback:finishSaveOrderTicket,
   errorHandler:errorHandler,
   exceptionHandler:exceptionHandler
  }
);

ok,上面的处理完成后,发生异常时就会把你的异常中的message 使用alert函数打印出来
分享到:
评论

相关推荐

    dwr异常处理

    NULL 博文链接:https://chenming100-1976.iteye.com/blog/809288

    DWR中文文档v0.9PDF

    在《DWR中文文档v0.9》中,读者可以找到关于如何配置DWR、创建DWR接口、调用远程方法、处理异常、调试DWR应用等全面的教程和示例。这份文档不仅适合初学者,也对有经验的开发者有很高的参考价值,可以帮助他们更好地...

    DWR中文文档 ,非常详细

    - **DWR Servlet**:部署在Web应用中,负责接收来自客户端的请求,并转发给DWR Engine处理。 - **JavaScript API**:客户端使用的接口,包括`dwr.engine`,`dwr.util`等对象,提供调用服务器端方法和数据操作的...

    DWR中文文档 (DWR 2.0)

    **8.2 错误和异常处理**:DWR提供了强大的错误和异常处理机制,帮助开发者更好地管理异常情况。 1. **错误处理**:通过回调函数中的errorHandler属性来处理可能出现的错误。 2. **异常**:了解DWR可能抛出的各种...

    dwr 查询返回list处理

    7. **错误处理**:在调用服务端方法时,应考虑异常处理。当服务端抛出异常时,DWR会提供一个回调函数来处理错误,我们需要确保有适当的错误提示和恢复机制。 8. **性能优化**:大量数据返回时,可能需要分页或延迟...

    dwr3.0以及相关中文文档

    同时,文档还会介绍如何处理错误和异常,以及如何在项目中进行单元测试。 总之,DWR 3.0为Java开发者提供了一种强大而灵活的工具,使他们能够在不离开浏览器的情况下实现与服务器的实时通信。配合详尽的中文文档,...

    DWR2.0 中文手册

    5. **错误处理**:DWR提供了丰富的错误处理机制,包括客户端和服务器端的异常处理,以及错误信息的传递和显示。 6. **缓存策略**:DWR 2.0支持缓存策略,可以缓存远程调用的结果,提高性能,减少服务器压力。 7. *...

    DWR中文文档 dwr入门 dwr.jar

    6. **错误处理**:DWR提供了错误处理机制,可以通过JavaScript捕获和处理可能出现的异常。 **DWR相关资源:** 1. `DWR中文文档.pdf`:这份文档提供了DWR的详细使用指南,包括安装、配置、基本用法、高级特性和最佳...

    dwr对各种类型返回值的处理实例

    这使得在JavaScript中可以方便地进行异常处理。 8. **异步和同步调用**: DWR提供了异步和同步两种调用方式。异步调用不会阻塞浏览器,而同步调用会等待服务器响应完成后再继续执行后续代码。 9. **Caching**: ...

    dwr对象处理dwr对象处理dwr对象处理

    - DWR提供了错误处理机制,可以通过JavaScript的异常处理结构来捕获调用Java方法时可能出现的错误。 总之,DWR提供了一种强大的机制,使Web应用能够轻松地实现前后端交互,增强了用户体验,特别是在实时数据更新和...

    适合初学者的DWR基本使用视频教程

    资源名称:适合初学者的DWR基本使用视频教程资源目录:【】dwr01_dwr的安装【】dwr02_dwr的转换器和异常处理【】dwr03_dwr的util的介绍【】dwr04_文件上传和与spring进行整合【】dwr05_dwr的debug和获取ServletAPI...

    dwr+spring实例

    6. **异常处理**: 当服务器端发生错误时,DWR可以将异常信息转换为JavaScript错误对象,使得客户端能够捕获并处理这些异常。这对于提供良好的用户体验至关重要。 综上所述,"DWRSpring实例"是一个很好的学习资源...

    dwr笔记 dwr自学资料

    2. **JavaScript与Java的桥接**:DWR通过动态生成JavaScript库来映射Java对象和方法,使得JavaScript可以直接调用Java方法,同时处理类型转换和异常处理。 3. **安全机制**:DWR提供了一套安全机制,包括基于IP地址...

    extjs_dwr整合例子

    DWR提供了异常处理机制,可以在JavaScript中捕获服务器端抛出的异常。同时,要确保DWR的安全配置,防止跨站脚本攻击(XSS)和跨站请求伪造(CSRF)。 这个"Extjs+Dwr"的压缩包示例可能包含了相关的HTML、JavaScript...

    dwr3api+DWR文档.pdf

    7. **错误处理**:当服务器端或客户端出现错误时,DWR提供了一套处理机制,包括异常的捕获和返回给前端。 8. **DWR与Ajax**:DWR是如何简化AJAX开发的,如何利用DWR实现异步数据更新,以及与传统AJAX请求的区别。 ...

    关于dwr的api的中文官方文档

    2. **更好的错误处理**:新增了更详细的错误报告和异常堆栈跟踪,便于调试。 3. **XMLHttpRequest 2.0支持**:利用新的浏览器特性,如文件上传和进度事件。 4. **改进的调试工具**:提供了一个新的控制台,便于...

    DWR小代码小例子

    DWR提供了错误回调机制,当Java方法抛出异常或通信失败时,可以捕获并处理这些错误。 8. **性能优化**:DWR支持缓存、批量调用和压缩等优化技术,以提高Web应用的性能。例如,可以设置缓存策略以减少不必要的网络...

    电子书-DWR中文文档

    5. **错误处理**:DWR提供了统一的错误处理机制,使得在客户端和服务器端都能捕获和处理异常。 6. **缓存管理**:DWR能够智能地缓存服务器端对象,减少不必要的网络传输,提高性能。 7. **易于集成**:DWR设计为轻...

    ajax的dwr包

    6. **错误处理**:DWR提供了友好的错误处理机制,可以在客户端捕获并显示服务器端的异常信息。 在使用DWR时,开发者首先需要在服务器端创建可远程访问的Java类和方法,然后在客户端使用DWR生成的JavaScript接口与...

Global site tag (gtag.js) - Google Analytics