import java.io.*; import javax.servlet.*; import javax.servlet.http.*; /** <<フォームとサーブレットの学習用プログラム>> 研究会のサブゼミ演習用。 ブラウザのフォームからリクエスト(投稿者名とコメント内容)を受け取り、 日付をつけてレスポンスデータを返す。 **/ public class FormToServlet extends HttpServlet { /** doGet() メソッドは、GETリクエストが来たときに 呼び出されるメソッドである。 **/ public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { //*フォームからの入力内容を、プログラミングに利用できるようにする*// //HTTPリクエストから、パラメータを取得して変数に格納する String text=request.getParameter("text"); String comment=request.getParameter("comment"); //フォームで入力された文字を正しい文字形式(Unicode)に変換する //フォームで日本語が入力された場合、これを行わないと出力結果が文字化けする text=getUnicode(text); comment=getUnicode(comment); //**出力の準備を行う**// //出力を日本語形式にして、ブラウザでの文字化けを解消する。 response.setContentType("text/html;charset=iso-2022-jp"); //データの出力に必要なPrintWriterを作成する。 PrintWriter out = response.getWriter(); //**HTMLと結合し、出力する**/ out.println(""); out.println(""); out.println("

GETが指定されました。

"); out.println("
"); //入力された投稿者と現在の日付を出力する。 out.print("

"+text+"さんのコメント (投稿時刻:"+ new java.util.Date() + ")

"); //コメント内容を出力する。 out.println("

"+comment+"


"); out.println(""); out.println(""); } /** doPost() メソッドは、POSTリクエストが来たときに 呼び出されるメソッド。今回ソースの内容はdoGetと同じである。 **/ public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String text=request.getParameter("text"); String comment=request.getParameter("comment"); text=getUnicode(text); comment=getUnicode(comment); response.setContentType("text/html;charset=iso-2022-jp"); PrintWriter out = response.getWriter(); out.println(""); out.println(""); out.println("

POSTが指定されました。

"); out.println("
"); out.print("

"+text+"さんのコメント (投稿時刻:"+ new java.util.Date() + ")

"); out.println("

"+comment+"


"); out.println(""); out.println(""); } /** 以下はフォームから入力された日本語を、正しく表示させる為のメソッドである。 **/ private String getUnicode(String s) throws UnsupportedEncodingException{ return new String(s.getBytes("8859_1"),"JISAutoDetect"); } }