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..3da613cd56 --- /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 renderErrorPages(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..a94858c6b1 --- /dev/null +++ b/spring-mvc-xml/src/main/webapp/WEB-INF/view/errorPage.jsp @@ -0,0 +1,13 @@ +<%@ 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..3aecded8d6 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,9 @@ index.jsp + + + /errors + + \ No newline at end of file