HTMLフォームでデータを送る
フォームに入力されたデータをサーバに送信しましょう.formタグを用います.
<form action="testServlet" = method="POST">
<textarea name="text"></textarea>
<input type="submit", value="送信">
</form>
action ・・・ 送り先(つまりServelt)のURL
method ・・・ 送信方法(POST または GET).POSTの利用をお勧めします.
このとき,各部品の名前(name)をきちんとつけておきましょう.methodは,GETかPOSTです.
Servletでデータを受け取る
Servletでは,クライアントからの送信方法(メソッド)に合わせてdoGetやdoPostメソッドが最初に起動します.
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String text = request.getParameter("text");
}
これらの引数には,HttpServletRequestクラスと,HttpServletResponse クラスがあり,送られてきたデータはHttpServletRequestクラスに入っています.これのgetParameterメソッドを用います.引 数に,送信されたフォームの部品の名前を指定します(上記の場合はtext).するとStringクラスとしてデータが返されます.
日本語処理の注意事項!
日本語を表示したり、2バイトコードが送信されている場合は下記の点について注意が必要です.
文字コードは何か?
近年のソフトウェアアプリケーションの世界では、文字コードはUTF-8が一般的です。実際に書かれているデータにUTF-8以外の文字コードが使われていたりすると文字化けを起こすことになります。具体的には、
HTMLファイルの文字コード指定
HTMLファイルに実際に記述されている文字コード
Javaのソースコード内に書かれている文字コード
などに齟齬があると文字化けが発生します。
受信文字列の設定
次のように設定しないと文字化けをおこす場合があります。
Servlet API 2.3(J2EE 1.3)以降の場合
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");
とすることで,全てのデータが変換されます.
Servlet API 2.2以前の場合(古い情報なのでここは無視して良い)
String = new String(request.getParameter(name).getBytes("8859_1"),"JISAutoDetect")
という処理を,それぞれの変数に行ってください.
ContentTypeを設定する
response.setContentType("text/html;charset=Shift_JIS");
charsetの部分には,JISあるいは、EUCの場合には、charsetをそれぞれiso-2022-jp 、euc-jp としてください。
ソースファイルの文字コードを確認する
上記の設定をしても文字化けが起きたりする場合は、書いているソースファイルの文字コードがおかしい可能性があります。EclipseはWindowsの場合に標準でMS932という文字コードでファイルを作成しています。これをUTF-8 にしておくといいでしょう。設定変更の詳細はこちら。