Обработка исключений в Spring MVC 3 для отображения пользовательской страницы ошибок для недействительного URL - PullRequest
1 голос
/ 23 марта 2012

Я использую @ExceptionHandler в приложении Spring mvc 3 для обработки исключений, и я написал контроллер следующим образом:

@Controller
public class ExceptionsController {

    private static final Logger logger = Logger.getLogger(ExceptionsController.class);


    @ExceptionHandler(IOException.class)
    public ModelAndView handleIOException(IOException ex) {

        logger.info("handleIOException - Catching: " + ex.getClass().getSimpleName());
        return errorModelAndView(ex);
    }


    private ModelAndView errorModelAndView(Exception ex) {
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("error");
        modelAndView.addObject("name", ex.getClass().getSimpleName());

        return modelAndView;
    }

    @ExceptionHandler({NullPointerException.class, NoSuchRequestHandlingMethodException.class})
    public ModelAndView handleExceptionArray(Exception ex) {

        logger.info("handleExceptionArray - Catching: " + ex.getClass().getSimpleName());
        return errorModelAndView(ex);
    }


    @ExceptionHandler(DataFormatException.class)
    @ResponseStatus(value = HttpStatus.NOT_FOUND, reason = "My Response Status Change....!!")
    public ModelAndView handleDataFormatException(DataFormatException ex, HttpServletResponse response) {
        logger.info("Handlng DataFormatException - Catching: " + ex.getClass().getSimpleName());
        return errorModelAndView(ex);
    }

Для этого я настроил XML-файл весеннего сервлета с объявлением bean-компонента AnnotationMethodHandlerExceptionResolver

Я хочу, чтобы, когда пользователь изменял URL-адрес, исключение PageNotFound должно обрабатываться @ExceptionHandler.

Мой сценарий в браузере, когда пользователь вручную изменяет URL-адрес, который является неправильным, в этом случае сервер отображает страницу 404, вместо этого я хочу показать страницу ошибки, как она появляется в Facebook

1 Ответ

4 голосов
/ 23 марта 2012

Вам не нужно использовать Spring для этого. 404 создан вашим сервером приложений (например, Tomcat). В зависимости от того, как настроен ваш DispatcherServlet, вы можете просто добавить это в ваш web.xml, чтобы получить пользовательскую страницу:

<error-page>
    <error-code>404</error-code>
    <location>/error.html</location>
</error-page>

Просто убедитесь, что /error.html либо обслуживается вашим сервером приложений (а не DispatcherServlet), либо в качестве прохода из файла Spring.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...