如何在Java servlet中捕获不存在的请求的URL?

时间:2010-04-27 18:18:11

标签: java url servlets

我的对象存储在两个不同的地方:

&LT 1为卤素;在我的nmjava.com网站上,我可以将它们放在名为“Dir_My_App / Dir_ABC /”的目录中

&LT 2 - ;在Google 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 [在目录中]

或者就Google App Engine 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”);

所以我的问题是:当一个请求进入带有不存在的Url的servlet时,如何捕获它并分析url以便正确响应,在我的情况下它应该知道:

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

要求对象“My_Obj_123”[忽略dirs]并从数据存储区返回对象。

现在我明白了:

错误:未找到

在此服务器上找不到请求的URL / Check_License / Dir_My_App / Dir_ABC / My_Obj_123。

我的servlet中的哪个位置以及如何检测此不存在的Url的请求?

1 个答案:

答案 0 :(得分:0)

最初想到的是创建一个ServletFilter(在您的web.xml中配置)来查看每个请求并在请求满足您的特定条件时重新路由该请求。请在此处查看tutorial