struts2中的ajax异常解决-利用spring异常通知处理异常
来源:互联网 发布:java大学实用教程答案 编辑:程序博客网 时间:2024/06/05 02:30
在java语言的web项目中,ssh架构的项目是最常见的,用户交互操作、操作提示友好性是非常重要的,而对操作出现的异常是非常常见的,但是怎样做到友好性是我们要考虑的问题,而且如何在程序中统一做异常处理也是我们所做的重要部分,所以可以使用spring的切面统一处理程序中的异常。
首先我们应该明白一点我们程序中的异常是怎么产生的,大体上可以这么说,是在用户操作数据是而产生的异常处理,而用户交互的是我们的struts层,但是作为控制的struts是不操作数据的、操作数据是在我们service层调用dao实现的,所以异常产生的地方是在service层,所以spring切面统一处理异常应该是对我们的service层出现的错误统一处理后返回给控制层,最后返回给用户,以提示用户增加友性,下面就是定义异常处理
自定义一个异常操作的类,代码如下
import com.opensymphony.xwork2.ActionContext;
public class MyException {
public void getExceptionMessage(Throwable ex) {
//放入栈顶
ActionContext.getContext().getValueStack().push(ex.getMessage());
}
}
这样定义好了处理异常的类,并把异常信息放入到控制层的值栈的栈顶在控制层就可以
try {
// 添加
personService.add(person);
} catch (Exception e) {
// 添加操作失败后 获得栈顶信息返回给用户
setMessage(ActionContext.getContext().getValueStack().peek() .toString());
}
关于java
最后总结也是重点。spring中配置好异常通知处理就大功告成了,但是我们很快就发现弊端、虽然spring把异常信息统一处理后交给控制层,但是控制层中岂不是每个方法都要
try {
} catch (Exception e) {
}
吗?那么在控制层有没有统一处理并返回给客户端的呢?可以自定义一个action的基类在基类中处理呢?答案是不行的、因为基类不能帮每个action实现访问数据的功能,因此是不能统一处理的,那么只有在具体方法处理了,这就说明了一点struts2是不能统一处理异常的。
框架有好处但是也有弊端,没有十分完美的,做到可控制才是最最要的
http://blog.sina.com.cn/s/blog_e8412fa20101n96e.html
——————————个人笔记———————————-
把jar导入,xml项目异常架构之利用异常通知处理异常 package cn.itcast.oa0909.exception;import org.apache.struts2.json.JSONResult;import com.opensymphony.xwork2.ActionContext;/** * 切面 * @author Administrator * */public class OAException { public void getExceptionMessage(Throwable ex){ /** * 把获取到的异常的信息放入到栈顶 */ ActionContext.getContext().getValueStack().push(ex.getMessage()); } }
<aop:config> <aop:pointcut expression="execution(* cn.itcast.oa0909.service.impl.*.*(..))" id="perform"/> <!-- 事务的通知 --> <aop:advisor advice-ref="tx" pointcut-ref="perform"/> <!-- 异常的切面 --> <aop:aspect ref="oaException"> <aop:after-throwing method="getExceptionMessage" pointcut-ref="perform" throwing="ex"/> </aop:aspect> </aop:config> <bean id="oaException" class="cn.itcast.oa0909.exception.OAException"></bean>
在service那个方法 int =1/0;使它异常。action:public String getAllDepartment(){ try{ Collection<Department> departmentList = this.departmentService.getAllDepartment(); }catch(Exception e){ /** * */ this.setMessage(ActionContext.getContext().getValueStack().peek().toString()); } return SUCCESS; }baseaction: private String message;//处理ajax产生的异常 public void setMessage(String message) { this.message = message; }
json返回的是一个数据,不是一个url,所以懒加载异常了,用原来那个拦截器也不能解决现在的异常问题。json只返回数据,而不要代理对象,就是比如getService这样的对象。那么可以在它上面加上@JSON(serialize)
<package name="json" namespace="/" extends="json-default"> <action name="departmentJSONAction_*" method="{1}" class="departmentAction"> <result type="json"> <param name="ignoreHierarchy">false</param>//把忽略继承关了。。因为我们的message继承的 </result> </action> </package>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>ajax.html</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="this is my page"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <!--<link rel="stylesheet" type="text/css" href="./styles.css">--> </head> <script src="js/jquery-1.4.2.js"></script> <script language="JavaScript"> $.post("departmentJSONAction_getAllDepartment.action",null,function(data){ alert(data.message); }); </script> <body> This is my HTML page. <br> </body></html>
- struts2中的ajax异常解决-利用spring异常通知处理异常
- struts2中的异常处理
- struts2中的异常处理
- struts2中的异常处理
- Struts2中的异常处理
- Struts2中的异常处理
- Struts2中的异常处理
- Struts2中的异常处理
- Struts2中的异常处理
- spring中的异常处理
- 利用spring aop 处理异常
- 【转载】Struts2中的异常处理
- spring aop事务通知(切面异常处理)
- Spring开发中的异常处理
- 推送通知异常处理
- Spring-AOP-通知-异常通知
- spring 通用异常处理,ajax异常返回json
- Spring中的异常通知与后置通知怎么回事啊?
- Java 变量和常量
- STM32 串口功能开发(未完待续)
- 技术转行产品总结思考(三)——我读富甲美国(上)
- 利用python进行数据分析之——数据规整化1(ETL)
- shell删除svn未跟踪文件
- struts2中的ajax异常解决-利用spring异常通知处理异常
- Coursera Machine Learning 第一周 quiz Linear Algebra习题答案
- 常见对象_把int数组拼接字符串的案例
- 决策树分类算法
- 常见鼠标事件
- Java任务调度框架Quartz入门教程指南(五)Quartz任务调度框架之最全Quartz系统参数配置详解
- 回文字符串问题
- python 去除空格和换行符
- UITableView性能优化的几种方式