2

次のようなサーブレットのdoGet()メソッドに渡すqueryStringがあります。

count = 9&preId0 = -99&objId0 = -99&preId1 = -99&objId1 = -99&preId2 = 69&objId2 = 16#!78&preId3 = -99&objId3 = -99&preId4 = -99&objId4 = -99&preId5 = -99&objId5 = -99&preId6 = -99&obj -99&preId8 = -99&objId8 = -99

#の後にすべてを含めるとすべてがnullになるため、#には特別な意味があると思います。これは本当ですか?そして、これを行う他のそのようなキャラクターはありますか?

4

4 に答える 4

4

はい、#はハッシュを示します。これは、たとえば、ページ内のアンカータグにジャンプするために使用されます。データをURLに入れるときはいつでも、それをURLエンコードする必要があります。JavaScriptでは、を使用できますencodeURIComponent()。他の言語では、ドキュメントを検索する必要があります。

于 2010-06-02T03:54:31.577 に答える
2

は、URLの#アンカー部分を示します。これは、URLの残りの部分によって返されるドキュメント内の特定の位置を識別するために使用されます。これは、技術的にはURIのフラグメント部分として知られています。

に続くすべて#はその一部です。これは、ドキュメントが返され、処理された後にのみ関連するため(ここでも、そのドキュメント内の位置を表します)、クライアントにとってのみ興味深いものです。サーバーにとって意味や価値はなく、クライアントは値全体を単一の値として扱います(もちろん、値を分解してそこから追加の意味を抽出するための追加のカスタムコードを提供する場合を除きます)。

#URLの値の一部として文字を渡す必要がある場合は、次のように置き換えます。これは、 URLエンコード%23を使用してプログラムで行うことができます。これにより、すべての「特殊」文字がURI経由の転送に使用できる文字に置き換えられます。

于 2010-06-02T03:53:15.323 に答える
2

一般的な経験則として、クエリ文字列パラメータをサーバーに送信する前にURLENCODEすることをお勧めします。URLの#は、現在のアンカーを表すために使用され、サーバーに送信しようとすると問題が発生します。

URLエンコードの詳細については、http ://www.w3schools.com/tags/ref_urlencode.aspを参照してください。

于 2010-06-02T03:54:19.237 に答える
2

「#」は特殊文字です。これは、ページアンカーで一般的に使用されるハッシュを参照します。この文字%23をURLにエンコードするだけで、問題が解消されます。他の意味のある文字は?[スペース] &

于 2010-06-02T03:56:12.723 に答える