In Spring Boot, configuring custom error pages is a common requirement that enhances user experience by handling errors and exceptions with user-friendly error pages. Spring Boot offers multiple ways to customize error handling, including error view resolution, controllers, and using ErrorController. The following are several methods to configure custom error pages:
1. Using ErrorController
You can create a custom error handling controller by implementing the ErrorController interface. This allows you to execute custom logic when errors occur.
javaimport org.springframework.boot.web.servlet.error.ErrorController; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class MyErrorController implements ErrorController { @RequestMapping("/error") public String handleError() { // Add logic to handle different error status codes return "errorPage"; // Redirect to a custom error view name } @Override public String getErrorPath() { return "/error"; } }
In this example, the handleError() method is used to handle all errors and redirect the user to a view named errorPage (such as an HTML page or Thymeleaf template).
2. Using application.properties
Configuring error pages in application.properties or application.yml is also possible. This method is simpler but less flexible than using controllers. For example, you can specify an error page to handle all 404 errors.
propertiesserver.error.whitelabel.enabled=false # Disable white-label error server.error.path=/error
3. Using Spring MVC Exception Handling
You can also leverage the @ExceptionHandler annotation in Spring MVC to handle specific exceptions thrown in controllers. Combined with @ControllerAdvice, it can handle exceptions globally.
javaimport org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.servlet.ModelAndView; @ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(value = Exception.class) // Specify more specific exceptions public ModelAndView defaultErrorHandler(Exception e) { ModelAndView mav = new ModelAndView("errorPage"); mav.addObject("message", e.getMessage()); return mav; } }
In this example, any exception is caught by the defaultErrorHandler method, and the user is redirected to the errorPage view with the exception message passed.
Conclusion
These methods can be chosen and combined based on specific needs. Implementing ErrorController provides the greatest flexibility and control, while configuring with property files is the simplest approach. Regardless of the method chosen, configuring custom error pages is a good way to enhance the user experience of the application.