2014-10-01 3 views
0

У меня есть приложение, и поэтому web.xml. В web.xml я настроил страницу ошибки, как показано нижетег error-page не отображается соответствующая страница ошибки, когда запрос поступает как forward

<error-page> 
    <error-code>404</error-code> 
    <location>/error/err404.jsp</location> 
</error-page> 

выше вещь работает отлично для URI, который не существует в web.xml.

For Eg: 
1. localhost:8080/appName/testServlet (Exists in web.xml) 

2. localhost:8080/appName/testServletXXX (Not exists) 

Оба URLs работают отлично (первый URL предоставляет актуальную страницу, второй URL делает err404.jsp), когда я вхожу URLs непосредственно в браузере.

Когда я перенаправляю запрос на uri «testServlet», он отлично работает, поскольку он существует в web.xml. Проблема возникает, когда uri (testServletXXX) не существует в web.xml. Если Ури не существует в web.xml, он не делает err404.jsp ошибку вместо этого она рендеринга:

HTTP Status 404 - /appName/xxxx 

type Status report 

message /appName/xxxx 

description The requested resource is not available. 
Apache Tomcat/7.0.32 

, который от кота.

Ниже приведен код для запроса на пересылку.

ServletContext scRoot = getServletConfig().getServletContext().getContext("/appName");  

     rd = scRoot.getRequestDispatcher("testServlet"); 

     rd.forward(request, response); 

Почему ошибка-страница не делает err404 страницы для Ури, не существует в web.xml. Это происходит особенно в случае пересылки. Я не могу это понять. Я пропустил любую концепцию/логику. Цените любую помощь. Заранее спасибо.

+0

Не могли бы вы показать пример такого URL-адреса (абсолютный или относительный?) –

+0

Спасибо за ответ Serge, теперь я отредактировал сообщение. Просто проверьте это. Благодарю. – venky

+0

Не уверен, что этого достаточно, но javadoc для ServletContext говорит: * Путь должен начинаться с/и интерпретируется как относительно текущего корня контекста *: попробуйте использовать ''/testServlet ''. Если у вас не более одного ServletContext, 'ServletContext scRoot = getServletConfig(). GetServletContext();' должно быть достаточно. И вы должны проверить, что 'rd' не равно null. –

ответ

0

Да, я нашел решение самостоятельно. На самом деле, мое приложение имеет несколько компонентов и каждый компонент рассматривается как webapp. Таким образом, каждый компонент имеет собственный web.xml. Теперь, что я делаю, я посылаю запрос от одного компонента к другому. Скажем, пересылка из App1 в App2. Я указал информацию тега error-страницы только в App2 web.xml. Но не в App1. Когда я добавляю такую ​​же информацию тега error-страницы в App1 web.xml (откуда отправляется запрос на отправку в App2), тогда все работает нормально. Спасибо, Серж Балеста, за то, что ты помог мне. Думаю, мой вопрос не дает достаточной информации для ответа. Я отправляю ответ, чтобы помочь кому-то, кто собирается столкнуться с такой же ситуацией.

 Смежные вопросы

  • Нет связанных вопросов^_^