spring3 struts2 利用aop在actioin层捕获异常
来源:互联网 发布:差分方程matlab编程 编辑:程序博客网 时间:2024/06/05 21:32
spring3 struts2 利用aop在actioin层捕获异常
dao service action 层都没有处理异常,所以写了一个捕获异常的类,利用spring 的aop ,自动捕获,并输出。
spring 中的配置:
<!-- 配置拦截器代理 -->
<aop:config proxy-target-class="true"> <aop:aspect id="transactionPointcut" ref="exceptionPointcut" > <aop:pointcut id="myPointcut" expression="execution(* ysusoft.action.*Action.*(..))" /> <aop:after-throwing pointcut-ref="myPointcut" method="doExceptionAction" throwing="e"/> </aop:aspect> </aop:config> <bean name="exceptionPointcut" class="ysusoft.util.ExceptionAdvisor"/>
ExceptionAdvisor.java:
package xxx.util;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
public class ExceptionAdvisor { /** * 对action层中方法产生的异常的处理. * @param joinPoint 连接点 * @param e 异常信息 */ public void doExceptionAction(JoinPoint joinPoint, Exception e){ String targetName = joinPoint.getTarget().getClass().getName(); String methodName = joinPoint.getSignature().getName(); System.out.println("targetName:"+targetName); System.out.println("methodName:"+methodName); e.printStackTrace(); Object[] objs = joinPoint.getArgs(); for(int i=0;i<objs.length;i++){ System.out.println(objs[i].toString()); } } }
action 中的代码:
public void login() { Json j = new Json(); User t = userService.login(tUser); if (t != null) { j.setSuccess(true); initSession(t); logger.info("登录成功"); } else { j.setMsg("登录失败"); logger.error("登录失败"); } super.writeJson(j); }
service:
@Override public User login(User t) { Map<String, Object> map = new HashMap<String, Object>(); /*if(1/0>1) return null;*/ map.put("fname", t.getFusernum()); String md5password=Encrypt.md5AndSha(t.getFpwd()); map.put("fnumber", md5password); String hql = "from TUser t where t.fusernum = :fname and t.fpwd = :fnumber"; TUser tUser = userDao.get(hql,map ); if (tUser!=null){ if(tUser.getZba020t()!=null&& !tUser.getZba020t().equals("")){ t.setFuserGup(tUser.getZba020t().getF0()); } t.setF0(tUser.getF0()); return t;} else{ return null;} }
期间:报了几次错误,解决方法如下:
1
error at ::0 formal unbound in pointcut
返回值定义参数 配置文件和类方法中不匹配。
有人说是jar包的问题,我试了好像这一步来说,不是jar包的问题
2
严重: Servlet.service() for servlet default threw exception
java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(Z)V
at net.sf.cglib.core.DebuggingClassWriter.<init>(DebuggingClassWriter.java:47)
删除cglib-2.1.jar 改用cglib-nodep-2.2.2.jar
http://www.2cto.com/kf/201302/190312.htmlSpring2 struts2 hibernate3 后台测试时报的错报错的这句话:Exception in thread "main" java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(Z)V因为cglib 包和asm包冲突开始用的cglib包是cglib-2.1.3.jar ,后来换了一个cglib-nodep-2.2.jar才测试通过,不容易,一上午了!!!
3
java.lang.NoSuchMethodException: $Proxy22.login()
动态代理的问题,配置文件里加上proxy-target-class="true"
<aop:config>节点中proxy-target-class="true"不为true时。
当登录的时候会报这个异常java.lang.NoSuchMethodException: $Proxy54.login(),
是因为代理Action类的时候,如果Proxy-targer-class=false,默认是用jdk动态代理。
所以代理不了Action类。
0 0
- spring3 struts2 利用aop在actioin层捕获异常
- spring aop 捕获异常
- aop异常捕获
- 三层结构中在哪个层,捕获异常在哪个层捕获最好呀!!!!
- Struts2异常处理之在Action中捕获异常
- Spring AOP配置声明式事务,数据业务层捕获异常,事务控制处理
- 在c++中,如何利用try捕获SEH异常
- 项目SERVICE层捕获异常
- struts2 进阶--异常捕获机制
- 全局的异常捕获Struts2
- struts2捕获action类异常
- spring3+struts2+hiberante3 aop调试记录
- 利用 Application_Error 捕获所有异常
- 利用 Application_Error 捕获所有异常
- 利用 Application_Error 捕获所有异常
- 利用UncaughtExceptionHandler捕获全局异常
- Spring AOP 抛出增强捕获异常
- 巴巴运动网学习笔记四之在Web层集成Struts2.3与Spring3.1
- Android M上VideoCall中Audio的管理(2016.05.27 新增CallsManager部分)
- android 获得当前进程的名字
- POJ 3280 Cheapest Palindrome(区间DP)
- EL表达式截取字符串
- STL与泛型编程<九>:迭代器相关辅助函数
- spring3 struts2 利用aop在actioin层捕获异常
- PHP为什么慢?
- Cannot delete or update a parent row
- HDU 3177 Crixalis's Equipment(很巧妙的贪心)
- Xcode项目依赖
- An unexpected error prevented the server from fulfilling your request. (HTTP 500)
- Gallery的整体架构
- Android ORM应用开发框架KJFrameForAndroid使用详解
- BZOJ 3612 HEOI2014 大工程 树链剖分求LCA的优越