Общий механизм для работы с кодами состояния HTTP - PullRequest
6 голосов
/ 25 мая 2011

Я знаю, что вы можете указать страницы ошибок в web.xml, как показано ниже

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

Мне немного утомительно перечислять страницы для каждого кода ошибки.Мне было интересно, что будет лучшей общей практикой в ​​этой ситуации!Есть ли лучший способ автоматически сгенерировать эти страницы, например, с помощью JSP или сервлета или через Spring или Stripes?

Ответы [ 2 ]

2 голосов
/ 31 мая 2011

Если вы говорите о создании самой страницы, вы можете сопоставить код ошибки со страницей jsp, например,

<error-page>
    <error-code>404</error-code>
    <location>/errors.jsp</location>
</error-page>
<error-page>
    <error-code>500</error-code>
    <location>/errors.jsp</location>
</error-page>

, если вы говорите о самом отображении, возможное решение(хотя я бы посоветовал вам использовать стандартное сопоставление web.xml), чтобы избежать сопоставления всех кодов ошибок, стоит использовать фильтр сервлетов, который фильтрует все ресурсы, делегирует доступ к FilterChain и проверяет набор кодов ответов, если он не равен 200(или любые другие предварительно определенные приемлемые ответы, такие как 401), а затем перенаправляет на страницу errors.jsp.

Для захвата кода ответа вам нужно обернуть HttpServletResponse реализацией HttpServletResponseWrapper, которая сохраняет код ответаустановлен.

0 голосов
/ 25 мая 2011

Stripes предоставляет несколько расширяемых, но простых способов обработки исключений. На сайте полос есть хорошая запись и несколько страниц в книге Stripes .

По сути, вы либо реализуете интерфейс ExceptionHandler, либо расширяете его от DefaultExceptionHandler (что мы обычно делаем), либо для более сложных ситуаций существует DelegatingExceptionHandler.

...