Перенаправление пользователя на другую страницу при ошибке.

Рейтинг: 0Ответов: 1Опубликовано: 12.05.2011

Здравствуйте.
Как при ошибке сервера, когда пользователю на страницу выдается такого рода ошибка
alt text

выводить пользователю свою собственную, другую страницу. Причем при ошибках какого-то определенного рода, - одну страницу; а при ошибках другого рода - другую. И как отлавливать такие исключительные ситуации, чтобы перенаправить пользователя на другую страницу?
Больше всего интересует, как отлавливать ошибки, когда сессия на сервере была уничтожена.
Использую JSF 2.0

Ответы

▲ 3Принят

Стандартную страницу ошибки можно прописать в web.xml:

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

Если речь идёт о какой-то конкретной ошибке, то вы можете использовать Servlet Filter (пример), в котором сможете проверять, есть ли у пользователя сессия или нет. И если нет, то слать redirect на любую вашу страницу.

Что-то наподобие этого:

public class LoginFilter implements Filter { 
   // ...
   public void doFilter (ServletRequest request, ServletResponse response, 
                         FilterChain chain) throws IOException,
                                                   ServletException { 
          if (request.getSession(false) == null) {
              response.sendRedirect("/errors/my-error-page");
              return;
          }
          chain.doFilter(request, response); 
   } 
   //...........................
}

UPD

Если вы хотите отловить какое-то конкретное исключение, которое может выпасть на вашей странице, то вы можете обернуть строку chain.doFilter(request, response); в блок try/catch и в catch попытаться что-то предпринять.