0

我的 servlet 需要接收 2 个参数才能响应。

我最喜欢的解决方案(但在我的上下文中不起作用):

http://domain.com/?param1=something&param2=anything

因为:我有另一个应用程序要求 url 以“/”结尾。但我无法创建一个 servlet,它最后接受像“ http://domain.com/?param1=something¶m2=anything/”<<-/这样的 URL 。

我的第二个解决方案是: http ://domain.com/param1/param2/ 我可以用“/”分割请求的 url,我会有我的 2 个参数。不过没那么好看。。

有没有更好的方法来传递 2 个参数并有一个以“/”结尾的 url?

4

2 回答 2

1

我认为这是不可能的。正如在 HTTP RFC "http:" "//" host [ ":" port ] [ abs_path [ "?" 查询]]在第一个“?”之后 有查询部分。因此,在您的示例中 http://domain.com/?param1=something¶m2=anything/ 这意味着 param2 值是任何/(最后带有斜杠)

当然,您可以将您的 servlet 绑定到 /* url-pattern 并使用 ServletRequest.getParameter() 处理 servlet 中的参数。但不要忘记您的 param2 将以 / 结尾

于 2013-02-08T10:39:19.853 回答
1

根据RFC 3986 第 3.3 节,可以为每个路径段分配一组参数,如下所示:

http://domain.com/path;param1=value1;param2=value2/subpath/subsubpath/

因此,您可以在没有查询部分的情况下使用参数。

但缺点是:

  • 您想要实现的可能不是该功能的预期用例。
  • 除了查询参数,没有 API 支持段参数。所以你必须自己解析参数。
于 2013-02-08T16:53:46.640 回答