ответ sendRedirect дает ошибку 404 - PullRequest
0 голосов
/ 28 марта 2011

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

Так что я использую weblogic 10.x в качестве сервера приложений.Я развертываю приложения непосредственно на управляемых серверах с помощью консоли.

Так что в основном я собираю их как файлы .war и развертываю как веб-приложения.

   public void doGet (HttpServletRequest request, HttpServletResponse response)
      throws IOException , ServletException
   {
      try
       {
                  throw new Exception("503_Exception") ;                 
        }
        catch(Exception e)
        {
                  response.sendRedirect(response.encodeRedirectURL(HandleError.handle(e, request)));
       }
   }   


public class HandleError{
    public static String handle(Throwable t, javax.servlet.http.HttpServletRequest request)
    { 
         String sErrorMsg = t.getMessage();

         if (sErrorMsg.equals("503_Exception")) {
            request.setAttribute("msg", "INVALID SESSION");
            return "/jsp/error/custom.html";
         }
         return "/default_error.html";
    }
}

структура файла войны

->jsp->error->custom.html
->web-inf
->web-inf->classes->project2->Class1.class

http://machineNAME:3030/Application3-Project2-context-root -> перенаправляет на -> http://machineNAME:3030/jsp/error/custom.html - >>, где отсутствует фактический корень контекста..

Ошибка 404 - не найдена из RFC 2068 Протокол передачи гипертекста - HTTP / 1.1: 10.4.5 404 не найден

Сервер не нашел ничего, соответствующего запросу-uri.Не указывается, является ли условие временным или постоянным.

Если сервер не хочет предоставлять эту информацию клиенту, вместо этого можно использовать код состояния 403 (Запрещено).Код состояния 410 (Унесенные) СЛЕДУЕТ использовать, если сервер знает через некоторый внутренне конфигурируемый механизм, что старый ресурс постоянно недоступен и не имеет адреса пересылки.

Но если я дам - ​​

response.sendRedirect(response.encodeRedirectURL(request.getContextPath() + HandleError.handle(e, request)));

я получаю Ошибка 310 (net :: ERR_TOO_MANY_REDIRECTS): в Chrome и в FF ошибка говорит слишком много перенаправлений .

Можеткто-нибудь поможет мне?заранее спасибо.:)

1 Ответ

2 голосов
/ 28 марта 2011

Добавление request.getServletContext().getContextPath() в начале - прекрасный способ сделать это.Но вы явно входите в бесконечный цикл перенаправления.Не забудьте записать свои исключения.Таким образом, вы сможете увидеть, в чем проблема.

...