一、概覽html
基於《springboot - 映射 /error 到自定義且實現了ErrorController的Controller》改造,僅將MyCustomErrorController類修改以下:java
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.web.servlet.error.ErrorAttributes; 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.ResponseBody; import org.springframework.web.context.request.ServletWebRequest; import javax.servlet.http.HttpServletRequest; import java.util.Map; /** * @author www.gomepay.com * @date 2019/11/18 */ @Controller public class MyCustomErrorController implements ErrorController { @Autowired private ErrorAttributes errorAttributes; @RequestMapping("/error") @ResponseBody public String handleError(HttpServletRequest request) { ServletWebRequest servletWebRequest = new ServletWebRequest(request); Map<String, Object> errorAttributes = this.errorAttributes.getErrorAttributes(servletWebRequest, true); final StringBuilder errorDetails = new StringBuilder(); errorAttributes.forEach((attribute, value) -> { errorDetails.append("<tr><td>") .append(attribute) .append("</td><td><pre>") .append(value) .append("</pre></td></tr>"); }); return String.format("<html><head><style>td{vertical-align:top;border:solid 1px #666;}</style>" + "</head><body><h2>Error Page</h2><table>%s</table></body></html>", errorDetails.toString()); } @Override public String getErrorPath() { return "/error"; } }
執行:web
在咱們自定義的 ErrorController中使用ErrorAttributes,可代替error.jsp 404.jsp頁面。spring