検索
連載

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

今回は、前回作成したServletをJSPに書き直してみよう。しかし、HTML+JSPだけでは十分な柔軟性が得られない。JavaBeansを組み合わせれば、コンテンツの変更や運用にも柔軟に対応できるシステムになる。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
前のページへ |       

Appendix

 本文で使用したリストです。また、リスト下部のリンクをクリックすることで行番号なしのテキストファイルをダウンロードできます。ファイルはシフトJISになっていますので、漢字コードを適宜変更してご利用ください。また、このページ最下部には第8〜10回で紹介した全リストのアーカイブを用意しました。

 1  <%@ page import="java.net.*,java.sql.*" 
 2           contentType="text/html; charset=EUC_JP" %> 
 3 
 4  <HTML> 
 5  <HEAD> 
 6  <TITLE>JSPからの接続</TITLE> 
 7  </HEAD> 
 8  <BODY> 
 9 
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          try{ 
19              //ドライバーのロード 
20              Class.forName("org.gjt.mm.mysql.Driver"); 
21 
22              //MySQLサーバーへの接続 
23              con = DriverManager.getConnection(url,user,pass); 
24 
25              //Statementオブジェクトの生成 
26              Statement stmt = con.createStatement(); 
27              //漢字を含んだSQL文 
28              String sql_str = "INSERT INTO list (name,memo) VALUES ('5番目','JSPからのテスト')"; 
29              stmt.executeUpdate(sql_str); 
30  %> 
31  漢字を含んだレコードの挿入成功です! 
32  <% 
33              //切断 
34              con.close(); 
35              stmt.close(); 
36          }catch(SQLException e) { 
37  %> 
38  接続失敗です〜 
39  <% 
40          }finally{ 
41              try{ 
42                  //切断 
43                  con.close(); 
44              }catch(Exception e){} 
45          } 
46  %> 
47 
48  </BODY> 
49  </HTML>
リスト9 Example1.jsp(リスト9のテキストファイル版
 1  <%@ page import="java.net.*,java.sql.*" 
 2           contentType="text/html; charset=EUC_JP" %> 
 3 
 4  <jsp:useBean id="loginbean" scope="page" class="LoginBean" /> 
 5  <jsp:setProperty name="loginbean" property="id" param="id" /> 
 6  <jsp:setProperty name="loginbean" property="pass" param="pass" /> 
 7 
 8  <HTML> 
 9  <BODY> 
10 
11  <% 
12      if(loginbean.confirm()){ 
13  %> 
14  <jsp:forward page="welcome.html" /> 
15  <% 
16      }else{ 
17  %> 
18  <jsp:forward page="login.html" /> 
19  <% 
20      } 
21  %> 
22 
23  </BODY> 
24  </HTML>
リスト10 login.jsp(リスト10のテキストファイル版
<HTML> 
<HEAD> 
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=x-euc-jp"> 
    <TITLE>JSPとJavaBeansの連携 「成功!」</TITLE> 
</HEAD> 
<BODY BGCOLOR="white"> 
<CENTER> 
<P> 
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" WIDTH="408"> 
    <TR> 
        <TD WIDTH="208"><IMG SRC="welcome.gif" WIDTH="208" 
HEIGHT="50" ALIGN="BOTTOM" BORDER="0"></TD> 
        <TD WIDTH="200"> </TD> 
    </TR> 
    <TR> 
        <TD VALIGN="MIDDLE"  NOWRAP ROWSPAN="2" COLSPAN="2"
 BGCOLOR="#F4A5AA"> 
            <P ALIGN="RIGHT"><BR> 
            <BR> 
            <P ALIGN="CENTER">認証に成功しました。ようこそ! 
 
            <P ALIGN="RIGHT"><BR> 
        </TD> 
    </TR> 
    <TR> 
    </TR> 
    <TR> 
        <TD HEIGHT="45" VALIGN="MIDDLE"  NOWRAP COLSPAN="2"
 BGCOLOR="#F4A5AA"> 
            <P ALIGN="RIGHT"><IMG SRC="it.gif" WIDTH="136" 
HEIGHT="63" ALIGN="BOTTOM" BORDER="0"> 
        </TD> 
    </TR> 
</TABLE> 
</CENTER> 
<P> 
</BODY> 
</HTML>
リスト11 welcome.html(リスト11のテキストファイル版
 1  public class LoginBean { 
 2 
 3      //各変数(プロパティ) 
 4      private String id; 
 5      private String pass; 
 6 
 7      //コンストラクタ 
 8      //LoginBeanオブジェクト作成の場合に1度だけ呼び出される 
 9      public LoginBean() { 
10           id = ""; 
11           pass = ""; 
12      } 
13 
14      //IDとパスワードの確認 
15      public boolean confirm(){ 
16          if(id.equals("test") && pass.equals("test2001")){ 
17              return true; 
18          }else{ 
19              return false; 
20          } 
21      } 
22      //プロパティを返す 
23      public String getId() { 
24          return id; 
25      } 
26 
27      //プロパティをセット 
28      public void setId(String newId) { 
29          id = newId; 
30      } 
31      public void setPass(String newPass) { 
32          pass = newPass; 
33      } 
34  }
リスト12 LoginBean.java(リスト12のテキストファイル版
 1  import java.io.*; 
 2  import java.net.*; 
 3  import java.sql.*; 
 4 
 5  public class LoginBean2 { 
 6 
 7      //各変数(プロパティ) 
 8      private String id; 
 9      private String pass; 
10      private String server   = "localhost"; //MySQLサーバ 
11      private String db       = "ATMARKIT";  // 
12      private String db_user     = "test";      //ユーザー名 
13      private String db_pass     = "test2001";  //パスワード 
14      private String db_url      = "jdbc:mysql://" + server + "/" + db + "?useUnicode=true&characterEncoding=EUC_JP"; 
15      private Connection con  = null; 
16 
17 
18      //コンストラクタ 
19      //LoginBeanオブジェクト作成の場合に1度だけ呼び出される 
20      public LoginBean2() { 
21           id = ""; 
22           pass = ""; 
23      } 
24 
25      //IDとパスワードの確認 MySQLサーバ問い合わせ機能付き 
26      public boolean confirm(){ 
27          try{ 
28              //ドライバのロード 
29              Class.forName("org.gjt.mm.mysql.Driver"); 
30 
31              //MySQLサーバへの接続 
32              con = DriverManager.getConnection(db_url,db_user,db_pass); 
33 
34              //Statementオブジェクトの生成 
35              Statement stmt = con.createStatement(); 
36              //SQL文 
37              String sql_str = "SELECT * FROM login WHERE id =\"" + id + "\" AND pass = password(\"" + pass + "\")"; 
38 
39              //SQL文の実行とResultSetオブジェクトの取得 
40              ResultSet rs = stmt.executeQuery(sql_str); 
41 
42              //検索結果の抽出 
43              if(rs.next()){ 
44                  //切断 
45                  con.close(); 
46                  stmt.close(); 
47                  return true; 
48              }else{ 
49                  //切断 
50                  con.close(); 
51                  stmt.close(); 
52                  return false; 
53              } 
54 
55          }catch(SQLException e) { 
56              return false; 
57          }catch(Exception e){ 
58              e.printStackTrace(); 
59              return false; 
60          } 
61      } 
62 
63      //プロパティを返す 
64      public String getId() { 
65          return id; 
66      } 
67 
68      //プロパティをセット 
69      public void setId(String newId) { 
70          id = newId; 
71      } 
72      public void setPass(String newPass) { 
73          pass = newPass; 
74      } 
75  } 
リスト13 LoginBean2.java(リスト13のテキストファイル版
 1  <%@ page import="java.net.*,java.sql.*" 
 2           contentType="text/html; charset=EUC_JP" %> 
 3 
 4  <jsp:useBean id="loginbean" scope="page" class="LoginBean2" /> 
 5 
 6  <% 
 7      try{ 
 8          loginbean.setId(session.getAttribute("id").toString()); 
 9          loginbean.setPass(session.getAttribute("pass").toString()); 
10      }catch(Exception e){ 
11          loginbean.setId(""); 
12          loginbean.setPass(""); 
13      } 
14      if(loginbean.confirm()){ 
15  %> 
16  <HTML> 
17  <HEAD> 
18      <META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=x-euc-jp"> 
19      <TITLE>JSPとJavaBeansの連携 「成功!」</TITLE> 
20  </HEAD> 
21  <BODY BGCOLOR="white"> 
22  <CENTER> 
23  <P> 
24  <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" WIDTH="408"> 
25    <TR> 
26        <TD WIDTH="208"><IMG SRC="welcome.gif" WIDTH="208" HEIGHT="50" ALIGN="BOTTOM" BORDER="0"></TD> 
27        <TD WIDTH="200"> </TD> 
28    </TR> 
29    <TR> 
30        <TD VALIGN="MIDDLE"  NOWRAP ROWSPAN="2" COLSPAN="2" BGCOLOR="#F4A5AA"> 
31            <P ALIGN="RIGHT"><BR> 
32            <BR> 
33            <P ALIGN="CENTER">認証に成功しました。ようこそ! 
34            <P ALIGN="RIGHT"><BR> 
35        </TD> 
36    </TR> 
37    <TR> 
38    </TR> 
39    <TR> 
40        <TD HEIGHT="45" VALIGN="MIDDLE"  NOWRAP COLSPAN="2" BGCOLOR="#F4A5AA"> 
41            <P ALIGN="RIGHT"><IMG SRC="it.gif" WIDTH="136" HEIGHT="63" ALIGN="BOTTOM" BORDER="0"> 
42        </TD> 
43    </TR> 
44  </TABLE> 
45  </CENTER> 
46  <P> 
47  </BODY> 
48  </HTML> 
49  <% 
50      }else{ 
51  %> 
52  <jsp:forward page="login2.html" /> 
53  <% 
54      } 
55  %> 
リスト14 welcome2.jsp(リスト14のテキストファイル版

Application.tgz(約1.23Kbytes)第8回全リスト
Servlet.tgz(約2.1Kbytes)   第9回全リスト
JSP.tgz(約12.5Kbytes)    第10回全リスト&画像


Copyright © ITmedia, Inc. All Rights Reserved.

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