日期:2014-05-18  浏览次数:20759 次

spring异常处理如何跟struts配合?
public class UserAfterThrowing extends ActionSupport implements ThrowsAdvice {
public void afterThrowing(Method method,Object[] args,Object target,
Exception exception)throws Throwable{
System.out.println("throwing a exception:" +exception.toString());
System.out.println("成功回滚事务");
ServletActionContext.getResponse().sendRedirect("../error.jsp");
}
}
在applicationContext.xml里面:
<bean id="exceptionHandler1" class="com.yzj.aop.UserAfterThrowing"></bean>

<bean id="target" class="com.yzj.service.UserService"></bean>

<bean id="firstAop" class="org.springframework.aop.framework.ProxyFactoryBean"
p:interceptorNames="exceptionHandler1"
p:target-ref="target"
p:proxyTargetClass="true" 
/>

上面的代码都没有问题  能成功捕获异常  也能成功回滚事务
但是。。。。
异常捕获到了之后  我只会根据ServletActionContext.getResponse().sendRedirect("../error.jsp");进入想要进入的页面
请问应该怎样和struts配合?  
比如  如何返回字符串 “error” 给struts?
然后struts根据result进入对应的视图?

所有代码里面都没有try catch 和throws exception  都是利用ThrowsAdvice 来完成异常捕获的
------解决方案--------------------
帮顶。。。。
------解决方案--------------------
你是想问struts2的异常机制吗?
首先你需要在struts.xml的Action中定义异常映射:
<action name="xxx">
<exception-mapping result="xxx-exception" exception="类名">
<result name="xxx-exception">/error.jsp</result>
</action>

页面上显示异常有两种标签可以选择:
<s:property value="exception"/>    //简单的打印异常信息
<s:property value="exceptionStack"/>   //打印异常的堆栈信息

大概就是这么用的,貌似还可以在<global-results>里去定义全局异常映射,有需求的话了解一下,这个东西很简单的。
------解决方案--------------------
当项目用struts2+spring的结合时一般不用spring来处理异常。spring管理的所有bean只是抛出异常的声明,在struts2的配置文件声明异常映射做跳转。如果是ajax的可以自己定义异常拦截器,由拦截器捕捉异常做ajax操作
------解决方案--------------------
在Struts调用DAO执行数据库有异常就在Struts里面try/cache住,异常就return ERROR.在action.xml配置error的跳转jsp就好了