0

URLエンコーディングとは何か知りたいです。2 つの jsp ページと 1 つのサーブレットがあります。アプリケーションを実行すると、表示される URL は次のとおりです。

http://localhost:8080/myproject/index.jsp

どこ

index.jsp:

<form action="Myservlet" method="post">
    <input type="text" name="mytext" id="mytext"/>
    <input type="submit" value="submit"/>
</form>

送信ボタンをクリックすると、次の URL が表示されます。

http://localhost:8080/myproject/Myservlet

URL エンコーディングの意味は何ですか? URLをエンコードするにはどうすればよいですか?

からindex.jspMyservletから へresult.jsp

Myservet#doPost // ここで URL エンコードを行う必要がありますか? はいの場合、どのように?

  fetching data from db.......
  ....................
  String nextJSP = "/result.jsp";
  RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(nextJSP);
  dispatcher.forward(request,response);

結果.jsp

displays data here

4

3 に答える 3

7

エンコーディングには、 HTML フォーム エンコーディングURL 書き換えの2 種類があります。

フォーム エンコーディングでは、URL 文字列がインターネット対応の有効な ASCII 形式に変換されます。URLEncoder.encode(String, String)ドキュメントから:

特定のエンコード方式を使用して、文字列を application/x-www-form-urlencoded 形式に変換します。このメソッドは、指定されたエンコード方式を使用して、安全でない文字のバイトを取得します。

2 番目の種類は、URL の書き換えです。クライアント ブラウザーが Cookie またはセッション トラッキングをサポートしていない (または無効にしている) 場合に備えて、URL 文字列はセッション ID でエンコードされます。HttpServletResponse.encodeURL(String)ドキュメントから:

セッション ID を含めて指定された URL をエンコードします。エンコードが不要な場合は、URL を変更せずに返します。このメソッドの実装には、URL でセッション ID をエンコードする必要があるかどうかを判断するロジックが含まれています。たとえば、ブラウザが Cookie をサポートしている場合、またはセッション トラッキングがオフになっている場合、URL エンコードは不要です。

于 2012-04-23T08:16:24.633 に答える
2

あなたはここで誤解していると思います。あなたが達成したいことのためでHTML Form Encodingもありません。URL Re-writing

のように達成したい場合。

例: http://localhost:8080/search.jsp?xxxと入力する代わりに、ユーザーには http:/localhost:8080/search?xxxが表示されます。

次のようにサーブレット マッピングを作成できます。

<servlet-mapping>
   <servlet-name>MappingServlet</servlet-name>
   <url-pattern>path/*</url-pattern>
 </servlet-mapping>

必要に応じて url-pattern を編集する必要があります。もちろん、URL を実際の jsp にマップするには、サーブレットを作成する必要があります。この手法は、ほとんどの MVC フレームワークで使用されています。

MVC パターンを使用して JSP/サーブレット Web アプリを開発する方法の詳細を 参照してください。

于 2012-04-23T08:54:57.583 に答える
1

エンコードする文字列はjava.net.URLEncoder.encode(s, "UTF-8")where isを使用します。s

これは、テキストをパス セグメント、クエリ文字列引数などとして送信するときに必ず必要です。

例:ドキュメントを参照してください

于 2014-07-10T22:42:02.087 に答える