diff --git a/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/ErrorController.java b/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/ErrorController.java new file mode 100644 index 0000000000..96556bd5b1 --- /dev/null +++ b/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/ErrorController.java @@ -0,0 +1,52 @@ +package com.baeldung.spring.controller; + +import javax.servlet.http.HttpServletRequest; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.servlet.ModelAndView; + +@Controller +public class ErrorController { + + @RequestMapping(value = "500Error", method = RequestMethod.GET) + public void throwRuntimeException() { + throw new NullPointerException("Throwing a null pointer exception"); + } + + @RequestMapping(value = "errors", method = RequestMethod.GET) + public ModelAndView renderErrorPage(HttpServletRequest httpRequest) { + ModelAndView errorPage = new ModelAndView("errorPage"); + String errorMsg = ""; + int httpErrorCode = getErrorCode(httpRequest); + + switch (httpErrorCode) { + case 400: { + errorMsg = "Http Error Code : 400 . Bad Request"; + break; + } + case 401: { + errorMsg = "Http Error Code : 401. Unauthorized"; + break; + } + case 404: { + errorMsg = "Http Error Code : 404. Resource not found"; + break; + } + // Handle other 4xx error codes. + case 500: { + errorMsg = "Http Error Code : 500. Internal Server Error"; + break; + } + // Handle other 5xx error codes. + } + errorPage.addObject("errorMsg", errorMsg); + return errorPage; + } + + private int getErrorCode(HttpServletRequest httpRequest) { + return (Integer) httpRequest + .getAttribute("javax.servlet.error.status_code"); + } +} diff --git a/spring-mvc-xml/src/main/webapp/WEB-INF/view/errorPage.jsp b/spring-mvc-xml/src/main/webapp/WEB-INF/view/errorPage.jsp new file mode 100644 index 0000000000..ba8a836285 --- /dev/null +++ b/spring-mvc-xml/src/main/webapp/WEB-INF/view/errorPage.jsp @@ -0,0 +1,10 @@ +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> +<%@ page session="false"%> + + + Home + + +

${errorMsg}

+ + diff --git a/spring-mvc-xml/src/main/webapp/WEB-INF/web.xml b/spring-mvc-xml/src/main/webapp/WEB-INF/web.xml index 29608a17ef..2240ac0a22 100644 --- a/spring-mvc-xml/src/main/webapp/WEB-INF/web.xml +++ b/spring-mvc-xml/src/main/webapp/WEB-INF/web.xml @@ -43,4 +43,7 @@ index.jsp + + /errors + \ No newline at end of file