/* AddData.java: DBMSにアクセスし、テーブルの更新や問い合わせ を実行するサーブレット */ import java.io.*; import java.text.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; import java.sql.*; public class AddData extends HttpServlet { // コネクションハンドラの宣言 private Connection con_handler; // initメソッド public void init() throws ServletException { String dbmsUser = "postgres"; // postgres管理者 String dbmsPasswd = "xxxxxx"; // パスワード String dbmsUrl = "jdbc:postgresql://localhost/test01"; // PostgreSQL用のJDBCドライバをロード try { Class.forName("org.postgresql.Driver"); // データベースに接続 con_handler = DriverManager.getConnection(dbmsUrl, dbmsUser, dbmsPasswd); } catch (ClassNotFoundException e) { throw new ServletException("Failed to load the JDBC driver."); } catch (SQLException e) { throw new ServletException("Failed to connect to PostgreSQL."); } } // doPostメソッド public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { // 応答のコンテンツタイプを設定 response.setContentType("text/html; charset=euc-jp"); // 出力ストリームの設定 PrintWriter out = response.getWriter(); // フォームに入力されたデータの取得 String entry_name = request.getParameter("entry_name"); String entry_text = request.getParameter("entry_text"); try { // SQL INSERT文の作成 Statement statement1 = con_handler.createStatement(); String update = "insert into test_table " + " (entry_date, entry_name, entry_text) " + " values " + " ('NOW'," + "'" +entry_name +"',"+ "'" +entry_text +"'"+")"; // SQL INSERT文を実行 int Count = statement1.executeUpdate(update); // INSERT文の実行に失敗した場合 if (Count != 1) { // エラー表示 out.println("" +"error" + "" + "

INSERTエラー " + ""); return; } // SQL SELECT文の作成 Statement statement2 = con_handler.createStatement(); String query = "SELECT * FROM test_table"; // 問い合わせを実行 ResultSet rs = statement2.executeQuery(query); out.println("" + "" + "" + "" + "Success" + "\n" + "

新しいメッセージを追加しました。
" ); out.println(""); out.println(""); out.println(""); out.println(""); // 問い合わせ結果を1行ずつ処理して表示 while (rs.next()) { String e_date = rs.getString("entry_date"); String name = rs.getString("entry_name"); String text = rs.getString("entry_text"); // 日本語データはUnicodeに変換。これがないと文字化けする! String e_name = new String(name.getBytes("8859_1")); String e_text = new String(text.getBytes("8859_1")); out.println("" + "" + "" + "" + ""); } out.println("
登録日時名前メッセージ
" + e_date + "" + e_name + "" + e_text + "
"); out.println(""); } // 例外処理 catch(Exception e) { out.println("" +"error" + "" + "

その他のエラー " + ""); return; } } }