検索
連載

Servlet/JSP+MySQLでアプリケーションサーバ その2快速MySQLでデータベースアプリ!(9)(3/3 ページ)

JavaでMySQLを操作する方法が分かったところで、今度はServletに挑戦しよう。前回の内容を理解していれば、Servletのコーディングは簡単だ。

PC用表示
Share
Tweet
LINE
Hatena
前のページへ |       

Appendix

 本文で使用したリストです。また、リスト下部のリンクをクリックすることで行番号なしのテキストファイルをダウンロードできます。ファイルはシフトJISになっていますので、漢字コードを適宜変更してご利用ください。

 1  import java.io.*; 
 2  import javax.servlet.*; 
 3  import javax.servlet.http.*; 
 4  public class Sample extends HttpServlet 
 5  {  
 6      public void doGet (HttpServletRequest request,HttpServletResponse response)  
 7          throws ServletException, IOException 
 8      { 
 9          PrintWriter out; 
10          response.setContentType("text/html"); 
11          out = response.getWriter(); 
12          out.println("<HTML>"); 
13          out.println("<BODY bgcolor=\"#FFFFFF\">"); 
14          out.println("<H1>HTML</H1>"); 
15          out.println("</BODY></HTML>"); 
16          out.close(); 
17      } 
18  } 
リスト5 Sample.java
 1  import java.io.*; 
 2  import javax.servlet.*; 
 3  import javax.servlet.http.*; 
 4  import java.net.*; 
 5  import java.sql.*; 
 6   
 7  public class ServletExample1 extends HttpServlet{ 
 8      public void doGet (HttpServletRequest request,HttpServletResponse response)  
 9          throws ServletException, IOException{ 
10   
11          String server   = "localhost"; //MySQLサーバ 
12          String db       = "ATMARKIT";  // 
13          String user     = "test";      //ユーザー名 
14          String pass     = "test2001";  //パスワード 
15          String url      = "jdbc:mysql://" + server + "/" + db + "?useUnicode=true&characterEncoding=EUC_JP"; 
16          Connection con  = null; 
17           
18          //HTML表示のため 
19          PrintWriter out; 
20          response.setContentType("text/html; charset=EUC_JP"); 
21          out = response.getWriter(); 
22          out.println("<HTML><HEAD><TITLE>servletからの接続1</TITLE></HEAD><BODY>"); 
23           
24          try{ 
25              //ドライバのロード 
26              Class.forName("org.gjt.mm.mysql.Driver"); 
27               
28              //MySQLサーバへの接続 
29              con = DriverManager.getConnection(url,user,pass); 
30               
31              //Statementオブジェクトの生成 
32              Statement stmt = con.createStatement(); 
33              //漢字を含んだSQL文 
34              String sql_str = "INSERT INTO list (name,memo) VALUES ('4番目','サーブレットからのテスト')"; 
35              stmt.executeUpdate(sql_str); 
36              out.println("漢字を含んだレコードの挿入成功です!"); 
37               
38              //切断 
39              con.close(); 
40              stmt.close(); 
41              out.close(); 
42          }catch(SQLException e) { 
43              out.println("接続失敗です〜<br>\n理由:" + e.toString()); 
44          }catch(Exception e){ 
45              e.printStackTrace(); 
46          }finally{ 
47              try{ 
48                          //切断 
49                  con.close(); 
50              }catch(Exception e){} 
51          } 
52      } 
53       
54  }  
リスト6 ServletExample1.java
 1  import java.io.*; 
 2  import javax.servlet.*; 
 3  import javax.servlet.http.*; 
 4  import java.net.*; 
 5  import java.sql.*; 
 6   
 7  public class ServletExample2 extends HttpServlet{ 
 8      public void doPost (HttpServletRequest request,HttpServletResponse response)  
 9          throws ServletException, IOException{ 
10   
11          String server   = "localhost"; //MySQLサーバ 
12          String db       = "ATMARKIT";  // 
13          String user     = "test";      //ユーザー名 
14          String pass     = "test2001";  //パスワード 
15          String url      = "jdbc:mysql://" + server + "/" + db + "?useUnicode=true&characterEncoding=EUC_JP"; 
16          Connection con  = null; 
17           
18          //HTML表示のため 
19          PrintWriter out; 
20          response.setContentType("text/html; charset=EUC_JP"); 
21          out = response.getWriter(); 
22          out.println("<HTML><HEAD><TITLE>servletからの接続2</TITLE></HEAD><BODY>"); 
23          //フォームの値を取得 JIS, コードの自動検出を使用 
24          String name = new String(request.getParameter("name").getBytes("8859_1"),"JISAutoDetect"); 
25          String memo = new String(request.getParameter("memo").getBytes("8859_1"),"JISAutoDetect"); 
26          //入力条件が満たされている場合 
27          if( !name.equals("") && !memo.equals("")){ 
28              try{ 
29                  //ドライバのロード 
30                  Class.forName("org.gjt.mm.mysql.Driver"); 
31                   
32                  //MySQLサーバへの接続 
33                  con = DriverManager.getConnection(url,user,pass); 
34                   
35                  //Statementオブジェクトの生成 
36                  Statement stmt = con.createStatement(); 
37                   
38                  //漢字を含んだSQL文 
39                  String sql_str = "INSERT INTO list (name,memo) VALUES ('"+name+"','"+memo+"')"; 
40                  stmt.executeUpdate(sql_str); 
41                  out.println("フォームからのレコードの挿入成功です!<br>"); 
42                   
43                  //切断 
44                  con.close(); 
45                  stmt.close(); 
46                  out.close(); 
47              }catch(SQLException e) { 
48                      out.println("接続失敗です〜<br>\n理由:" + e.toString()); 
49              }catch(Exception e){ 
50                  e.printStackTrace(); 
51              }finally{ 
52                  try{ 
53                      //切断 
54                      con.close(); 
55                  }catch(Exception e){} 
56              } 
57          }else{ 
58              out.println("<br>入力項目が足りません<br>"); 
59              out.close(); 
60          } 
61      } 
62  } 
リスト7 ServletExample2.java
 1  import java.io.*; 
 2  import javax.servlet.*; 
 3  import javax.servlet.http.*; 
 4  import java.net.*; 
 5  import java.sql.*; 
 6   
 7  public class ServletExample3 extends HttpServlet{ 
 8      public void doPost (HttpServletRequest request,HttpServletResponse response)  
 9          throws ServletException, IOException{ 
10   
11          String server   = "localhost"; //MySQLサーバ 
12          String db       = "ATMARKIT";  // 
13          String user     = "test";      //ユーザー名 
14          String pass     = "test2001";  //パスワード 
15          String url      = "jdbc:mysql://" + server + "/" + db + "?useUnicode=true&characterEncoding=EUC_JP"; 
16          Connection con  = null; 
17          String where_query = ""; 
18          //HTML表示のため 
19          PrintWriter out; 
20          response.setContentType("text/html; charset=EUC_JP"); 
21          out = response.getWriter(); 
22          out.println("<HTML><HEAD><TITLE>servletからの接続3</TITLE></HEAD><BODY>"); 
23          //フォームの値を取得 JIS, コードの自動検出を使用 
24          String name = new String(request.getParameter("name").getBytes("8859_1"),"JISAutoDetect"); 
25          String memo = new String(request.getParameter("memo").getBytes("8859_1"),"JISAutoDetect"); 
26          //SQLクエリーのwhere節を作成 
27          if( !name.equals("") ) 
28              where_query = where_query + " and name like '%"+name+"%'"; 
29          if( !memo.equals("") ) 
30              where_query = where_query + " and memo like '%"+memo+"%'"; 
31               
32          //入力条件が満たされている場合 
33          if(!where_query.equals("") && where_query.startsWith(" and")){ 
34               
35              //頭の" and"を削除 
36              where_query = " WHERE"+where_query.substring(4,where_query.length()); 
37   
38              try{ 
39                  //ドライバのロード 
40                  Class.forName("org.gjt.mm.mysql.Driver"); 
41                   
42                  //MySQLサーバへの接続 
43                  con = DriverManager.getConnection(url,user,pass); 
44                   
45                  //Statementオブジェクトの生成 
46                  Statement stmt = con.createStatement(); 
47                   
48                  //SQL文 
49                  String sql_str = "SELECT * FROM list" + where_query; 
50   
51                  //SQL文の実行とResultSetオブジェクトの取得 
52                  ResultSet rs = stmt.executeQuery(sql_str); 
53                   
54                  //検索結果の抽出 
55                  while(rs.next()){ 
56                      int rs_id = rs.getInt("id"); 
57                      String rs_name = rs.getString("name"); 
58                      String rs_memo = rs.getString("memo"); 
59   
60                      out.println("<p>----------------<br>"); 
61                      out.println("<br>id:" + rs_id); 
62                      out.println("<br>name:" + rs_name); 
63                      out.println("<br>memo:" + rs_memo); 
64                  } 
65                   
66                  out.println("<br>"+sql_str+"<br>検索結果は以上です<br>"); 
67                   
68                  //切断 
69                  rs.close(); 
70                  con.close(); 
71                  stmt.close(); 
72                  out.close(); 
73               
74              }catch(SQLException e) { 
75                  out.println("接続失敗です〜\n理由:" + e.toString()); 
76                  out.close(); 
77              }catch(Exception e){ 
78                  e.printStackTrace(); 
79              }finally{ 
80                  try{ 
81                      //切断 
82                      con.close(); 
83                  }catch(Exception e){} 
84              } 
85          }else{ 
86              out.println("<br>検索項目が足りません<br>"); 
87              out.close(); 
88          } 
89      }    
90  } 
リスト8 ServletExample3.java

Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る