Как поймать несуществующий запрошенный URL в сервлете Java? - PullRequest
0 голосов
/ 27 апреля 2010

Мои объекты хранятся в Интернете в двух разных местах:

<1> На моем сайте nmjava.com, где я могу поместить их в каталог с именем "Dir_My_App / Dir_ABC /"

<2> В хранилище данных Google App Engine

Когда мое приложение Java запускается, оно проверяет оба места на предмет наличия объектов. Я спроектировал приложение так, чтобы оно пыталось получить объект из URL-адреса, и ему все равно, является ли это объектом в каталоге или объектом, возвращаемым сервлет.

My_Object Get_Object(String Site_Url,String Object_Path)
{
    ... get object by the name of Object_Path from the Site_Url ...
}

Теперь URL-адрес запроса для моего веб-сайта nmjava.com может выглядеть следующим образом:

http://nmjava.com/Dir_My_App/Dir_ABC/My_Obj_123 [В каталоге]

Или в случае сервлета Google App Engine:

http://nm -java.appspot.com / Check_License / Dir_My_App / Dir_ABC / My_Obj_123 [Не существует]

"Object_Path" был сгенерирован моим приложением автоматически. Теперь он может получить объект с моего сайта описанным выше способом, например так:

My_Object Get_Object ("http://nmjava.com","/Dir_My_App/Dir_ABC/My_Obj_123");

В Google App Engine мой сервлет работает и готов обслуживать объект, если запрос поступил правильно, но так как я не хочу разрабатывать свое приложение, чтобы знать, находится ли объект в каталоге одного сайта или в хранилище данных другого сайта, мне нужно спроектировать сервлет так, чтобы он перехватывал несуществующий URL, такой как приведенный выше, и мог звонить:

My_Object Get_Object ("http://nm -java.appspot.com / Check_License ", "/ Dir_My_App / Dir_ABC / My_Obj_123");

Поэтому мой вопрос: когда запрос поступает в сервлет с несуществующим URL-адресом, как он должен перехватить его и проанализировать URL-адрес, чтобы правильно ответить, в моем случае он должен знать, что:

http://nm -java.appspot.com / Check_License / Dir_My_App / Dir_ABC / My_Obj_123

запрашивает объект "My_Obj_123" [игнорировать каталоги] и возвращает объект из хранилища данных.

Теперь я получаю это:

Ошибка: не найдена

Запрошенный URL / Check_License / Dir_My_App / Dir_ABC / My_Obj_123 не найден на этом сервере.

Где в моем сервлете и как я могу обнаружить запрос для этого несуществующего URL?

1 Ответ

0 голосов
/ 27 апреля 2010

Изначально на ум приходит создание ServletFilter (настроенного в вашем web.xml) для просмотра каждого запроса и перенаправления запроса, если он соответствует вашим конкретным критериям. См. учебник здесь.

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