////////////////////////////////////////////////////////////////////////////////
//  << sv121a.java >>
//
// サーブレット(2):フォームから入力(GET指定)
//
//  フォームの入力欄に入力されたデータを表示する。
//
// ●文字化け対策
//  日本語を含むフォームデータをgetParameterメソッドを使って受け取った場合、
//  文字コード(ISO8859_1)として受け取り、Unicodeに変換される。
//  ところが、データはSJISまたはEUC_JPなので、文字化けが起こる。
//  そこで、getBytesメソッドで変換前のISO8859_1コードに戻し、改めて、
//  SJISまたはEUC_JPコードとして受信したとしてUnicodeに変換する。
//  受信した漢字コードが分からない場合、自動的に判断できるJISAutoDetect指定に
//  しておくと便利である。
//
//   String s = request.getParameter("formタグ側のname項目");
//      String t = new String(s.getBytes("ISO8859_1"),"JISAutoDetect");
//
// ●ServletRequestインターフェースのメソッド
//  public String getParameter(String s)
//   機能:項目sに割り当てられた値を返す。
//
// ●GETとPOST
//  GETを指定すると、サーブレットのURLにデータが付加されてWebサーバに
//  送信される。従って、比較的短く機密を要しないデータの送信に用いられる。
//  他方、POST指定は、比較的長く機密を要するデータの送信に用いられる。
//
// ●起動法
//  (1)Javaファイル(sv121a.java)をコンパイルし、classファイル(sv121a.class)を
//       作成する。
//       ただし、Javaファイル(sv121a.java)は、
//       %CATALINA_HOME%\webapps\SV\WEB-INF\classes\sv121a.java
//     classファイル(sv121a.class)は、
//       %CATALINA_HOME%\webapps\SV\WEB-INF\classes\sv121a.class
//       に保存する。
//    (2)入力フォームで、
//         URL(http://localhost:8080/SV/servlet/sv121a)
//       を指定する。
//
////////////////////////////////////////////////////////////////////////////////

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class sv121a extends HttpServlet {
  public void doGet(HttpServletRequest request, HttpServletResponse response)
                    throws ServletException,IOException {

    // フォームのデータを取得。
    String s = request.getParameter("f1");
    String t="";
    if( s != null ) {
      t = new String(s.getBytes("ISO8859_1"),"JISAutoDetect");
    }

    // コンテンツタイプの指定。
    response.setContentType("text/html; charset=Shift_JIS");

    // HTML文書の出力。
    PrintWriter pw = response.getWriter();
    pw.println("<html>"
          + "<head><title>サーブレット</title></head>"
          + "<body>"
          + "<form action=http://localhost:8080/SV/servlet/sv121a method=GET>"
          + "名前を入力してください:<input type=text size=30 name=f1><br>"
          + "<input type=submit value=送信>"
          + "</form>");
    if( s != null ) { pw.println(t + "さんですね"); }
    pw.println("</body>" 
            + "</html>"); 
    pw.flush();
    pw.close();
  }
}
入力フォーム
<form action=http://localhost:8080/SV/servlet/sv121a method=GET>
  <input type=submit value=実行>
</form>
実行結果

実行後




送信後