Когда ServletContext возвращает нулевой RequestDispatcher? - PullRequest
4 голосов
/ 28 сентября 2010

API для ServletContext # getRequestDispatcher () говорит:

Этот метод возвращает значение NULL, если ServletContext не может вернуть RequestDispatcher.

и

Возвращает: объект RequestDispatcher, который действует как оболочка для ресурса по указанному пути, или ноль, если ServletContext не может вернуть RequestDispatcher

По какой причине ServletContext не сможет вернуть RequestDispatcher?Сначала я подумал, что это будет, если был передан неверный путь, но он не возвращает ноль, это приводит к 404 в браузере.

Я проверяю на ноль перед вызовом метода forward () и вВ журналах я вижу, что время от времени RequestDispatcher имеет значение null, но я не знаю, почему, и я не могу выяснить, как его дублировать.

Спасибо

Обновление

Как предложил Фазал, я попытался создать RequestDispatcher для 'http://www.google.com/', чтобы посмотреть, что произойдет.Это вызвало IllegalArgumentException

java.lang.IllegalArgumentException: путь http://www.google.com/ не начинается с символа "/"

Исключение было обнаружено в моемблок try / catch, поэтому у меня никогда не было возможности проверить, был ли RequestDispatcher равен null, или вызвать метод forward ().

Таким образом, у метода ServletContext # getRequestDispatcher () должен быть другой способ вернуть ноль без исключения Exception?

Ответы [ 2 ]

1 голос
/ 28 сентября 2010

Tomcat возвращает null для пути вне текущего контекста, например, /../foo (но Jetty этого не делает, поэтому зависит от реализации).

1 голос
/ 28 сентября 2010

Я видел эту проблему периодически. Но для меня это происходит только в том случае, если вы пытаетесь перейти к действительному патчу, который не находится в корне документа. Например. Ваш сервер работает на http://localhost/ и я переадресовываю на URL-адрес типа http://www.google.com. Не уверен, если вы столкнетесь с этой проблемой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...