連載
Servlet/JSP+MySQLでアプリケーションサーバ その3:快速MySQLでデータベースアプリ!(10)(3/3 ページ)
今回は、前回作成したServletをJSPに書き直してみよう。しかし、HTML+JSPだけでは十分な柔軟性が得られない。JavaBeansを組み合わせれば、コンテンツの変更や運用にも柔軟に対応できるシステムになる。
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.