404异常处理
package cn.gilight.dms.interceptor;
import cn.gilight.dms.base.ResultMessage;
import cn.gilight.dms.base.ResultType;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.servlet.NoHandlerFoundException;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;
@ControllerAdvice
public class GlobalExceptionHandler {
/***
* 404处理
* @param e
* @return
*/
@ExceptionHandler(NoHandlerFoundException.class)
@ResponseBody
@ResponseStatus(HttpStatus.NOT_FOUND)
public Object notFountHandler(HttpServletRequest request,
NoHandlerFoundException e){
ResultMessage resultMessage = new ResultMessage();
resultMessage.setStatus(ResultType.NOT_FOUND.getStatus());
resultMessage.setMessage(ResultType.NOT_FOUND.getMessage());
resultMessage.setApi(request.getRequestURI());
resultMessage.setMethod(request.getMethod());
return resultMessage;
}
}
# 自定义404
#出现错误时, 直接抛出异常
spring.mvc.throw-exception-if-no-handler-found=true
#不要为我们工程中的资源文件建立映射
#spring.resources.add-mappings=false
以上方法会屏蔽静态资源,所以推荐一下方法重写框架404处理
接口
package cn.gilight.dms.interceptor;
import cn.gilight.dms.base.ResultMessage;
import cn.gilight.dms.base.ResultType;
import org.springframework.boot.web.servlet.error.ErrorController;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @program: NotFoundException
* @description: 处理404异常,返回自定义json,捕获返回时异常
* @author: douxiaoliang
* @create: 2019-07-31 10:32
* @Version V1.0
**/
@RestController
public class NotFoundException implements ErrorController {
@Override
public String getErrorPath() {
return “/error”;
}
@RequestMapping(value = {"/error"})
public Object error(HttpServletRequest request, HttpServletResponse response)
{
ResultMessage resultMessage = new ResultMessage();
if (ResultType.NOT_FOUND.getStatus().equals(response.getStatus())){
resultMessage.setStatus(ResultType.NOT_FOUND.getStatus());
resultMessage.setMessage(ResultType.NOT_FOUND.getMessage());
}else if (ResultType.ERROR.getStatus().equals(response.getStatus())){
resultMessage.setStatus(ResultType.ERROR.getStatus());
resultMessage.setMessage(ResultType.ERROR.getMessage());
}else {
resultMessage.setStatus(ResultType.UNKNOW_ERROR.getStatus());
resultMessage.setMessage(ResultType.UNKNOW_ERROR.getMessage());
}
resultMessage.setApi(request.getRequestURI());
resultMessage.setMethod(request.getMethod());
System.out.println(response.getStatus());
return resultMessage;
}
}