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就好了