【问题标题】:How to catch non exist requested URL in Java servlet?如何在 Java servlet 中捕获不存在的请求 URL?
【发布时间】:2011-02-13 00:12:16
【问题描述】:

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

在我的 nmjava.com 网站上,我可以将它们放在一个名为“Dir_My_App/Dir_ABC/”的目录中

在 Google App Engine 数据存储中

当我的 Java 应用程序运行时,它会检查对象的两个位置,我设计了该应用程序,以便它尝试从 Url 获取对象,它不关心它是目录中的对象还是由 a 返回的对象小服务程序。

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”[忽略目录]并从数据存储中返回对象。

现在我明白了:

错误:未找到

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

在我的 servlet 中的什么位置以及如何检测对这个不存在的 Url 的请求?

【问题讨论】:

    标签: java url servlets


    【解决方案1】:

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

    【讨论】:

    猜你喜欢
    • 2017-06-10
    • 2013-01-05
    • 2011-05-01
    • 1970-01-01
    • 2013-05-06
    • 2022-11-14
    • 2018-07-31
    相关资源
    最近更新 更多