我的servlet需要接收2个参数才能响应。
我最喜欢的解决方案(但在我的上下文中不起作用):
http://domain.com/?param1=something¶m2=anything
因为:我有另一个应用程序要求url以“/”结尾。但我无法创建一个servlet,它接受最后接受“http://domain.com/?param1=something¶m2=anything/”<< - /的网址。
我的第二个解决方案是: http://domain.com/param1/param2/ 我可以用“/”拆分请求的URL,我会得到我的2个参数。但它不是那么好......
有没有更好的方法来传递2个参数并且有一个以“/”结尾的网址?
答案 0 :(得分:1)
我认为这是不可能的。正如它在HTTP RFC中定义的那样 “http:”“//”host [“:”port] [abs_path [“?”查询]] 在第一个“?”之后有查询部分。所以在你的例子中 http://domain.com/?param1=something¶m2=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/
所以你可以拥有没有查询部分的参数。
但缺点是: