五、DWR异常处理与跨域访问

第六讲 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,我们这也属于跨域访问,所以在本机测试也是很容易的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值