我这个项目比较老,用的 spring 版本是 spring3的。。。 springMVC没有 做 异常的拦截,,,所以我就用了 @exceptionhandler 拦截一下 异常。。。 可是发现没有起作用。。。根本没有进入这个 方法里面。。。 怎么回事?? 随便百度一下,,,也没有发现什么解决办法,,,刚开始搞定我还以为是 spring3的不兼容bug...
可是如果 写一个全局的 异常拦截类是 可以有效果的: 例子: GlobalExceptionHandler implements HandlerExceptionResolver 。。。。
不巧看到了这个:
spring配置文件中加上mvc:annotation-driven/,告知Spring启用注解驱动 。 看一下是不是配置了spring框架全局异常处理 比如basectrl中的@ExceptionHandler(Exception.class) 或者xml中SimpleMappingExceptionResolver
尝试了一下,果然问题解决了。。。 我的解决办法是:
例子代码:
@ExceptionHandler(Exception.class)
@ResponseBody
public String handleAuthorityException(Exception ex, HttpServletRequest req, HttpServletResponse response) {
System.out.println("00000000000000");
ex.printStackTrace();
return "bbb";
}
然后在mvc的xml里面配置加上即可
<!-- 解决@ExceptionHandler的@ResponseBody中文乱码 ,,加上这个@ExceptionHandler 就起作用了。。就不需要 mvc:annotation-driven 配置也是可以的 -->
方式1:
<!-- <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerExceptionResolver">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<constructor-arg value="UTF-8"/>
</bean>
</list>
</property>
</bean> -->
方式2:
<mvc:annotation-driven />
两种方式,随便选一种即可。。。
看来是我理解错了 : annotation-driven 了,我以为是 给 @Controller ,@RequestMapping 等这些用的,,,原来不是的。
解决办法就是这样子了。。。