【问题标题】:how do I create a servlet with parameters and a "/" at the ending?如何创建一个带有参数和结尾的“/”的servlet?
【发布时间】:2013-02-08 10:21:46
【问题描述】:

我的 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 个参数并有一个以“/”结尾的 url?

【问题讨论】:

    标签: java servlets


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      根据RFC 3986, section 3.3,可以像这样为每个路径段分配一组参数:

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

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

      但缺点是:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-23
        • 2019-03-09
        • 2018-12-14
        • 2021-06-20
        • 1970-01-01
        • 2020-05-09
        • 1970-01-01
        • 2021-04-09
        相关资源
        最近更新 更多