2010-04-27 42 views
0

我的對象是在線存儲在兩個不同的地方:如何在Java servlet中捕獲不存在的請求URL?

< 1>在我nmjava.com的網站,在那裏我可以把它們放在一個名爲「Dir_My_App/Dir_ABC /」

< 2>在谷歌目錄App Engine數據存儲

當我的Java應用程序運行時,它檢查這兩個對象的位置,我設計了應用程序以便它試圖從Url獲​​取對象,它並不關心它是目錄中的對象還是由servlet返回的對象。

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

現在對於我的網站nmjava.com請求的URL可能看起來像這樣:

http://nmjava.com/Dir_My_App/Dir_ABC/My_Obj_123 [在目錄]

還是在谷歌應用程序引擎的servlet的情況下:

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中,如果請求正確顯示,我的servlet正在運行並準備好爲對象提供服務,但是因爲我不想設計我的應用程序以知道該對象是在一個站點的目錄還是在其他網站的數據存儲,我需要設計的servlet趕不存在的URL,比如一個上面,並能夠撥打電話:

My_Object的get_object(「http://nm-java.appspot.com/Check_License」,「/ Dir_My_App/Dir_ABC/My_Obj_123 「);

所以我的問題是:當一個請求進入的servlet與非存在的URL,它應該如何抓住它和分析,以鏈接到正確響應,在我的情況下,它應該知道:

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

正在詢問對象「My_Obj_123」[ignore the dirs]並從數據存儲中返回對象。

現在我得到這樣的:

錯誤:未找到

所請求的網址/ CHECK_LICENSE/Dir_My_App/Dir_ABC/My_Obj_123此服務器上未找到。

在我的servlet中,以及如何檢測對這個不存在的Url的請求?

回答

0

最初想到的是創建一個ServletFilter(在web.xml中配置)來查看每個請求,並在請求滿足您的特定條件時重新路由請求。請參閱tutorial

+0

謝謝,我已經看過教程,並且還發現了另一個信息源:[http://tuckey.org/urlrewrite/],第一個太簡單了,第二個太複雜了,答案是中間某個地方。如何使用過濾器將傳入的請求url從「http://nm-java.appspot。com/Check_License/Dir_My_App/Dir_ABC/My_Obj_123「改爲」http://nm-java.appspot.com/Check_License?Contact_Id=My_Obj_123「? – Frank 2010-04-27 20:42:48

相關問題