tomcat 5.0.9 переопределить объявление страницы ошибки 404 без доступа к серверу - нужно специальное сообщение 404 - PullRequest
3 голосов
/ 25 марта 2012

Прежде всего, позвольте мне сказать, что я не программист на Java или не очень хорошо знаком с Tomcat, поэтому, пожалуйста, потерпите меня :) Я работаю с SaaS-приложением, работающим на Apache Tomcat 5.0.9. У меня нет доступа к файлам конфигурации сервера, и я не могу добавлять файлы .jsp.

Я нахожусь в ситуации, когда у меня есть скрипт, работающий в среде Mozilla Rhino, и у меня есть доступ к следующим двум объектам:

org.apache.coyote.tomcat5.CoyoteRequestFacade org.apache.coyote.tomcat5.CoyoteResponseFacade

Мне нужно установить статус SC_NOT_FOUND (404) и предоставить собственное сообщение. Проблема заключается в том, что независимо от того, что я делаю, если статус 404, я получаю «некрасивое» сообщение об ошибке 404, как установлено поставщиком. Я попытался использовать "sendError", "setStatus", я попытался получить диспетчер и перенаправить на другую страницу, а также установить статус на 404, я пробовал упаковщик, но не уверен, что я делаю, и я ' Я видел информацию о фильтрах, но не знаю, как применять ее в этой ситуации или даже если это правильный подход.

Опять же, кажется, что, как только 404 настроен, веб-сервер обслуживает свою собственную страницу. Я предполагаю, что это «объявление страницы ошибки», которое я не могу переопределить. Я прочитал этот вопрос Как получить сообщение на пользовательской странице ошибки (Tomcat)? (и многие другие), но я не понимаю этого достаточно, чтобы перевести информацию в мою конкретную ситуацию.

Итак, возможно ли программно "переопределить" объявление страницы с ошибкой? Или как я могу вернуть ошибку 404 и пользовательскую страницу ошибки, учитывая ограничения среды, в которой я нахожусь? Я бы согласился, на данный момент, просто текст - не должно быть фантазии. Мне просто нужен какой-то способ использовать статус 404 и отображать «удобное для пользователя» сообщение.

Любая помощь будет принята с благодарностью!

P.S. Я должен отметить, что причина этого подхода в том, что рассматриваемая страница будет потребляться (потенциально) как поисковой системой, так и людьми. Мне нужно 404, чтобы поисковая система удаляла страницу из своего кеша, а мне нужно «красивое» сообщение, чтобы сказать человеческому вистору, какие шаги ему нужно предпринять из-за недоступной страницы.

1 Ответ

2 голосов
/ 25 марта 2012

Tomcat интерпретирует ваш статус 404 и отображает стандартную страницу ошибки с вашим сообщением об ошибке или трассировкой стека.

Если использование response.sendError(404, "Your error message here") не работает для вас, тогда вам нужно посмотреть на использование пользовательских страниц ошибок - http://wiki.apache.org/tomcat/FAQ/Miscellaneous#Q6,, но это зависит от того, что вы можете изменить web.xml - то, что вы сказали вам не в состоянии сделать.

Теперь вы можете вернуть нормальный код состояния HTTP (200) и довольно отформатированное содержимое ошибки, которое будет отображаться

если клиент, принимающий ответ, - это просто браузер с прикрепленным человеком, то он не будет мудрее.

С другой стороны, если клиент, потребляющий это какой-то компьютер (скрипт, другая программа и т. Д.), И он выполняет логику, основанную на коде ответа, это не является хорошим решением для вас, так как возвращая 200 код состояния, вы говорите, что все прошло нормально (а не код ошибки - 4xx или 5xx)

...