SpringMVC异常映射
标签:erro 统一 逻辑 mamicode web rip cat servlet lse
异常映射
作用
统一管理项目中的异常
抛出异常
显示异常
普通请求:在页面上显示异常信息
Ajax请求:返回json数据
异常映射的工作机制
服务器接收到用户请求过程中,如果有异常则抛出异常,SpringMVC的异常映射机制则会判断请求的类型从而响应不同的异常映射请求.
判断请求类型的工具方法
判断依据
创建工具类
/**
* @Description 判断请求是ajax还是普通请求
*/
public class CrowdUtil {
/**
* 判断请求是否是ajax请求
* @param request
* @return
*/
public static boolean isAjaxRequest(HttpServletRequest request) {
String accept = request.getHeader("Accept");
String xRequestHeader = request.getHeader("X-Requested-With");
return ((accept!=null && accept.contains("application/json")) || (xRequestHeader != null && xRequestHeader.equals("XMLHttpRequest")));
}
}
异常映射实现方式
基于xml
步骤:
bean id="simpleMappingExceptionResolver"
class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
property name="exceptionMappings">
props>
prop key="java.lang.Exception">system-errorprop>
props>
property>
bean>
然后指定映射的jsp页面即可.
基于注解
- 加入gson依赖:处理json数据
- 创建异常处理类
// @ControllerAdvice,表示这是一个基于注解的 异常处理类
@ControllerAdvice
public class ExceptionResolver {
// @ExceptionHandler 建立异常和类的映射关系
@ExceptionHandler(value = ArithmeticException.class)
public ModelAndView resolverException(ArithmeticException e, HttpServletRequest request, HttpServletResponse response) throws IOException {
// 判断请求的类型
boolean requestType = CrowdUtil.isAjaxRequest(request);
// 如果是ajax请求
if (requestType) {
// 创建ResultEntity
ResultEntity
SpringMVC异常映射
标签:erro 统一 逻辑 mamicode web rip cat servlet lse
原文地址:https://www.cnblogs.com/Adam-Ye/p/13339263.html
评论