如何在结尾处创建带参数和“/”的servlet?

时间:2013-02-08 10:21:46

标签: java servlets

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

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

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

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

我的第二个解决方案是: http://domain.com/param1/param2/ 我可以用“/”拆分请求的URL,我会得到我的2个参数。但它不是那么好......

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

2 个答案:

答案 0 :(得分:1)

我认为这是不可能的。正如它在HTTP RFC中定义的那样     “http:”“//”host [“:”port] [abs_path [“?”查询]] 在第一个“?”之后有查询部分。所以在你的例子中     http://domain.com/?param1=something&param2=anything/ 这意味着param2值是任何/(最后用斜线)

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

结尾

答案 1 :(得分:1)

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

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

所以你可以拥有没有查询部分的参数。

但缺点是:

  • 您希望实现的目标不是该功能的预期用例。
  • 除了查询参数之外,对段参数没有API支持。所以你必须自己解析参数。