spingmvc统一异常处理,modelAndView 无法定位到指定页面
在做一个spirngmvc异常统一处理的功能,但是代码写好后,异常消息可以全局捕获,但是却不能返回至指定页面,而且将同一个页面在controller中用modelAndView可以返回,说明在但是在SystemExceptionResolver就不行。
百思不得其解,请求帮助。
相关代码:
1、定义一个异常类
2、实现HandlerExceptionResolver统一处理异常
3、spring-mvc.xml配置视图解析器,配置SystemExceptionResolver
百思不得其解,请求帮助。
相关代码:
1、定义一个异常类
public class BusinessException extends RuntimeException {
private static final long serialVersionUID = 1L;
public BusinessException() {
super();
}
public BusinessException(String message, Throwable cause) {
super(message, cause);
}
public BusinessException(String message) {
super(message);
}
public BusinessException(Throwable cause) {
super(cause);
}
}
2、实现HandlerExceptionResolver统一处理异常
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
public class SystemExceptionResolver implements HandlerExceptionResolver{
private static org.slf4j.Logger logger = LoggerFactory.getLogger(SystemExceptionResolver.class);
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,
Exception ex) {
BusinessException exception=null;
//如果抛出的是系统自定义的异常则直接转换
if(ex instanceof BusinessException) {
exception = (BusinessException) ex;
} else {
//如果抛出的不是系统自定义的异常则重新构造一个未知错误异常BusinessException
exception = new BusinessException("系统未知错误");
}
//向前台返回错误信息
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("exception", exception);
logger.info(exception.getMessage());
modelAndView.setViewName("/sysui/system/error");
return modelAndView;
}
}
3、spring-mvc.xml配置视图解析器,配置SystemExceptionResolver
<bean
class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="mediaTypes">
<map>
<entry key="atom" value="application/atom+xml" />
<entry key="html" value="text/html" />
<entry key="json" value="application/json" />
</map>
</property>
<property name="viewResolvers">
<list>
<bean
class="org.springframework.web.servlet.view.BeanNameViewResolver" />
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/" />
<property name="suffix" value=".jsp" />
</bean>
</list>
</property>
<property name="defaultViews">
<list>
<bean
class="org.springframework.web.servlet.view.json.MappingJackson2JsonView" />
</list>
</property>
</bean>
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="utf-8"></property>
<property name="maxUploadSize" value="10485760000"></property>
<property name="maxInMemorySize" value="40960"></property>
</bean>
<!-- 自定义的全局异常处理器 只要实现HandlerExceptionResolver接口就是全局异常处理器-->
<bean id="systemExceptionResolver" class="com.cicc.api.core.base.exception.SystemExceptionResolver"/>
...全文
相关推荐
spingmvc独立运行jar包
**异常处理**:Spring MVC支持全局异常处理,通过@ControllerAdvice和@ExceptionHandler注解可以定义统一的错误页面或API响应。
SpingMVC+Mybatis例子
**异常处理**:项目可能会有全局的异常处理器,捕获Controller中未处理的异常,返回统一的错误信息,提高用户体验。6.
spingmvc的官方学习手册
**异常处理**:设置全局异常处理器,处理未捕获的异常。8. **视图技术**:学习如何结合JSP或其他视图技术呈现页面。9.
spingMVC 简单例子
- **编写视图**:如JSP页面,用于显示模型数据。4. **运行与测试**: - 使用IDE(如IntelliJ IDEA或Eclipse)运行项目,启动内置服务器。
spingmvc+spring+mybatis框架搭建的例子,适合初学者
Controller处理业务逻辑后,返回ModelAndView对象,该对象包含了视图名和模型数据。最后,视图解析器根据视图名渲染视图,如JSP页面。2.


其他
