/**
   「オリジナルレシピ投稿掲示板プログラム」
            UketoriServlet.java

   ブラウザからユーザーが入力したメッセージ
   （投稿者名と料理名と作り方）を受け取り、
   そのメッセージに日付を付与し、整形して返す
**/

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

public class UketoriServlet extends HttpServlet {

//*****ここからがメッセージを受信する為の部分*****
  
  /**
     doPost() メソッドは、POSTリクエストがブラウザー
     からプログラムに発信されたときに呼び出されるメソッド
  **/
  public void doPost(HttpServletRequest request, HttpServletResponse response)
     throws IOException, ServletException
	   
    {
      /**
        送信されたメッセージが格納されたハッシュテーブルから、
        キーを指定してバリューをそれぞれの変数に格納する 
      **/
      String contributor = request.getParameter("contributor");
      //キーcontributorのバリューを取得して文字列contributorに入れる
      String title = request.getParameter("title");
      //キーtitleのバリューを取得して文字列titleに入れる
      String recipe = request.getParameter("recipe");
      //キーrecipeのバリューを取得して文字列recipeに入れる 


    /**
     変数に格納した文字をtransferUnicodメソッドを使って
     Unicodeに変換する。フォームで日本語が入力された場合、
     これを行わないと出力結果が文字化けする
    **/
   
      contributor = transferUnicode(contributor);
      title = transferUnicode(title);
      recipe = transferUnicode(recipe);
  
//*****ここまででメッセージを受信できた*****

//*****ここからがメッセージを表示する為の部分*****
      
      //出力を日本語形式に指定して、ブラウザでの文字化けを解消する。
      response.setContentType("text/html;charset=Shift_JIS");
      
      //データの出力に必要なPrintWriterを作成する。
      PrintWriter out = response.getWriter();
      

      //**HTMLタグと受信したメッセージを出力する**/
      out.println("<html>");
      out.println("<body bgcolor=\"#33CCFF\" text=\"#000000\">");
      out.println("<hr>");

      //投稿者と現在の日付を出力する。
      out.print("<b><font size=4><p>"+contributor+"さんオリジナル</font></b>");
      out.print("(投稿時刻："+ new java.util.Date() + ")<BR/></p>");
      
      //料理名を出力する。
      out.println("<p><font size=5>「"+title+"」のレシピ</font> </p><hr/>");
      //作り方を出力する
      out.println(recipe+"</p><hr/>");

      out.println("</body>");
      
      out.println("</html>");
//*****ここまででメッセージを表示できた*****   
    
    }
/**
     以下はフォームから入力された日本語を、正しく表示させる為のメソッドである。
 **/

  private String transferUnicode(String s) throws UnsupportedEncodingException{
    return new String(s.getBytes("8859_1"),"JISAutoDetect");
  }

  
}



