0

私のサーブレットは、応答するために 2 つのパラメーターを受け取る必要があります。

私のお気に入りの解決策(ただし、私のコンテキストでは機能しません):

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

理由: URL が「/」で終わる必要がある別のアプリケーションがあります。しかし、最後に「 http://domain.com/?param1=something¶m2=anything/」 <<- / のような URL を受け入れるサーブレットを作成できません。

私の 2 番目の解決策は次 のとおりです。 http://domain.com/param1/param2/ 要求された URL を「/」で分割すると、2 つのパラメーターが得られます。でもそんなにかっこよくない..

2 つのパラメーターを通過させ、"/" で終わる URL を持つより良い方法はありますか?

4

2 に答える 2

1

RFC 3986 のセクション 3.3によれば、次のように各パス セグメントに一連のパラメータを割り当てることができます。

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

したがって、クエリ部分なしでパラメーターを使用できます。

しかし、欠点は次のとおりです。

  • あなたが達成したいのは、その機能の意図したユースケースではないかもしれません。
  • クエリ パラメータ以外に、セグメント パラメータの API サポートはありません。そのため、自分でパラメーターを解析する必要があります。
于 2013-02-08T16:53:46.640 に答える
1

ありえないと思います。HTTP RFC で定義されているとおり "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]] 最初の「?」の後 クエリ部分があります。したがって、あなたの例で はhttp://domain.com/?param1=something¶m2=anything/ つまり、param2の値は何でも/です(最後にスラッシュがあります)

もちろん、サーブレットを /* url-pattern にバインドし、ServletRequest.getParameter() を使用してサーブレットのパラメーターを処理できます。ただし、param2 が / で終わることを忘れないでください。

于 2013-02-08T10:39:19.853 に答える