最初にユーザー送信インターフェイスを例として使用します(テキストボックス、パスワードボックス、選択、ドロップダウンフォームなど)、効果は次のとおりです。
<!doctype html public " - // w3c // dtd html 4.01 transitional // en" "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <head> <meta http-equiv =" content-type "=" = "/html; charset = utf-8 "> <title>ユーザー登録</title> </head> <body> <! - ユーザー登録 - > <form action ="/requesttest/request5 "method =" get "> <table> <! - テキスト入力ボックス - > <tr> <td> username </td> <td> <入力タイプ=" box-> <tr> <td>パスワード</td> <td> <入力タイプ= "パスワード" name "name =" password "/> </td> </tr> <! - ラジオボタンラジオ - > <tr> <td>ジェンダー</td> <td>女性</td> </tr> <! - チェックボックス - > <tr> <td>ホスト</td> <td> <td> <td> <input type = "checkbox" name = "hobby" balue "balue"/> sports <input type = "checkbox" name = "balue" value = "music"/>> music <input type "チェックボックス"チェック= box-> <tr> <td> city </td> <select name = "city"> <option value = "beijing"> beijing </option> <option value = "shanghai"> option> <option value = "shenzhen"> shenzhen </option> </select>プロファイル</td> <td> <textarea rows = "5" cols = "60" name = "introfus"> </textarea> </td> </tr> <td colspan = "2"> <input Type = "submit" value = "register"/> </td> </tr </table> </form </body> </html>
注:html <form>タグの定義と使用法は次のとおりです。
<! - 必須アクション属性フォームを送信するときにフォームデータを送信する場所を指定します。 - > <form action = "value">
属性値はURLであり、フォームデータをどこで送信するかを示します。その可能な値:
Absolute URL -他のサイトを指します(src =” www.example.com/example.htm”など)
相対URL -サイト内のファイルを指します(src =” embler.htmなど)
たとえば、次のフォームには2つの入力フィールドと送信ボタンがあります。フォームを送信すると、フォームデータは「form_action.asp」という名前のページに送信されます。
<form action = "form_action.asp" method = "get"> <p>名:<入力タイプ= "text" name "fname" /> < /p> <p>姓:<入力タイプ= "テキスト" name = "lname" /> < /p> <入力タイプ= "submmen
メソッドが取得されるため、情報はサーブレットのdogetメソッドで取得されます
public class requestservlet5はhttpservlet {public void doget(httpservletrequest request、httpservletresponse応答)を拡張しますservletexception、ioexception、ioexception {// request.setcharacterencoding( "utf-8"); // request.getParameter( "username"); system.out.println(username); // valueを取得する//文字盤のコードを取得する(たとえば、中国語の入力) // utf-8 username = new String(username.getBytes( "ISO-8859-1")、 "utf-8")でデコードする; System.out.println(username); //非null検証if(username!= null && username.trim()デフォルトでは、最初のデータのみを取得できます。 string hobby = request.getParameter( "Hobby"); //複数チェックボックスsystem.out.println(趣味); //チェックボックスのすべての送信データを取得--- getParametervaluesstring []趣味= request.getParameterValues("hobby");System.out.println(Arrays.toString(hobbies));System.out.println("------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- request.getParameternames(); Arrays.toString(request.getParameterValues(name)));}System.out.println("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- parametermap.keyset(); for(string key:keys){// keyはparameter namessystem.out.println(key + ":" + arrays.tosttring(parametermap.get(key));}} public void dopost(httpservletrequest request、httpservletresponseponse dopost request)servexception) 応答);}}文字化けパラメーターの理由
URLエンコーディングは、ブラウザがフォーム入力をパッケージ化するために使用される形式です。ブラウザは、フォームからすべての名前と値を取得し、URLの一部として名前/値パラメーター(転送できない文字を削除したり、データをランク付けしたり)でエンコードしたり、サーバーに個別に送信したりします。
異なる要求方法は、異なるソリューションに対応しています:
投稿 - request.setcharacterencoding( "クライアントエンコードセット");
Get Carled Codeは手動で解決します
username = urlencoder.encode(username、 "iso-8859-1"); // encode username = urldecoder.decode(username、 "utf-8"); // UTF-8でデコードします
上記の書き込み方法を簡素化:username = new String(username.getBytes( "ISO-8859-1")、 "utf-8");
GET CARBLED Configuration Tomcatデフォルトデコードされた文字セットを取得します
tomcat/conf/server.xmlで
コネクタにプロパティuriencoding = "utf-8"を追加します
結論:開発中に、Tomcatのデフォルトのデコードセットを変更しないようにしてください。リクエストを送信するために、できるだけ投稿を使用してみてください。 Getを使用する必要がある場合は、手動でエンコードしてください。