アフィリエイト広告を利用しています


スキル無しのシステムインストラクターから、システムエンジニアへの転身日記。
◇◆◇ 2013年取得資格
LPICレベル1
LPICレベル2
LPICレベル3 Core
LPICレベル3 Speciality 302
LPICレベル3 Speciality 303
LPICレベル3 Speciality 304

Cisco CCENT
Cisco CCNA

Java SE 7 Silver
Java SE 7 GOLD

OSS-DB Silver

◇◆◇ 2014年取得資格
HTML5 Professional レベル1

広告

posted by fanblog

Webアプリケーションを作りましょう! その6 データベースとの連携

さて、データベースの環境も整いまして、
データベースのデータを引っ張り出してウェブページに表示したいと思います。

JSPを用意して、DBに接続するコードを書いて、そのあとに情報を引っ張り出す。
という風に一つに処理を書いてもいいのですが、
また新たなJSPを作るときに、また接続のためのコードを頭から書かなければいけません。

逆に、DBに接続するクラスを一つ用意して、
データベースに接続して情報を表示するだけのJSPを用意するようにすれば、
今後JSPをいくつ量産しても、そのDB接続用のクラスを使いまわせばいいので、
コードに無駄がありません。

それでは、最初に、DBに接続するためのクラスを用意します。

1.DBに接続するクラスを用意


Eclipse→新規→クラス→「ConnctorManager」(名前は適当)

package testWeb;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectorManager {
final static String DRIVER = "com.mysql.jdbc.Driver";
final static String URL ="jdbc:mysql://localhost/webapp";
final static String USER ="root";
final static String PASS ="pass";

public static Connection getConnection() throws SQLException{

try{
Class. forName(DRIVER);
} catch (ClassNotFoundException e){
e.printStackTrace();
throw new IllegalStateException("クラスのロードに失敗しました: "+e.getMessage());
}
Connection con = DriverManager. getConnection(URL,USER, PASS);
return con;

}
}


はい、残念なことにいろいろと解説しなければならないですね。

まず、import文で、下記3つを用意しています。
データベースに、url,user,passwordを持たせて接続するために必要とだけ思ってもらえれば。
import java.sql.Connection;
import java.sql.DriverManager; 
import java.sql.SQLException;

そして、try-catch これは例外処理で、tryで囲った部分を試して、
catchで指定したエラーが返ってきたら、catchで囲った内容を実施してね。
といったものです。あらかじめ発生する可能性のある例外処理を記載しておくのです。

なので、難しそうではありますが、ConnctorManagerのgetConnectionが呼ばれたら、
例外でなければ、DriverManager. getConnection( URL, USER, PASS );の値を呼び出したプログラムに
渡してね。といった内容。

つまり、DBの場所と、ユーザー名とパスワードを定義しているだけなんですね。

2.JSPからDBの内容を表示する

JSPを作成します。

accountinfo.jsp

<%@page contentType="text/plain; charset=UTF-8" %>
<%@page import= "testWeb.ConnectorManager,java.sql.*" %>>

<%
try{
Connection con = ConnectorManager.getConnection();
Statement smt = con.createStatement();
ResultSet rs = smt.executeQuery("select * from testaccount");
while(rs.next()){
out.println( "ID:" +rs.getString("USERID" ) +",NAME:"+rs.getString("USERNAME" )+",PASS:" +rs.getString("USERPASS"));
}
smt.close();
con.close();

}catch (SQLException e){
e.printStackTrace();
}
%>


JSPでもAPIのインポートは実施できます。
<%@ page import= "testWeb.ConnectorManager,java.sql.*" %>>行で、
ConnectorManagerクラスと、java.sql.*をインポートしました。

Statement … データベースにSQL文を送信するためのStatementオブジェクトを生成。
ResultSet … 指定されたSQLを実行

この2つの中身がどうやって動いているかまでは理解しなくても、
Connectionで接続して、Statementでオブジェクトを生成して、ResultsetでSQL文を実行。
といった順番で処理を行っているのはわかります。

そして、
while (rs.next()){
out.println( "ID:" +rs.getString("USERID" ) +",NAME:" +rs.getString("USERNAME" )+",PASS:" +rs.getString( "USERPASS"));
にて、テーブルの行一つ一つを最終行まで、ループさせて、そのつどテーブルの中身をプリントしています。

そして、http://localhost/testWeb/accountinfo.jspを実行すると、

このように、select * from testaccount が実行され、
その中身の1行1行がプリントされました。

WCP_06.jpg

このようにjsp(サーブレット)ではテーブルの中身を表示させることができます。
お分かりかと思いますが、
ResultSet rs = smt.executeQuery( "select * from testaccount");
この行のSQL文でINSERT INTOのような追加分を発行すれば、DBのデータを上書きすることができます。
こういったやり取りで、入力出力をDBとの連携させて行うことができ、
その結果をWEBに表示することで動的なページを生成しているわけです。

あとは、この応用で動的なページはどうにでも作れるかと思います。

いったん、Webアプリケーションを作ってみよう!は、休憩しましょうか。
1記事1記事にすごい時間がかかるww




トラックバック

この記事へのトラックバックURL
※ブログオーナーが承認したトラックバックのみ表示されます。
https://fanblogs.jp/tb/2151555

コメント

お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのコメント

I want to to thank you for this good read!! I definitely enjoyed every little bit of it. I’ve got you book-marked to look at new stuff you post…
https://totoright.com/
totoright|2022年07月26日(Tue) 10:53
After study several of the blogs with your website now, i truly much like your strategy for blogging. I bookmarked it to my bookmark web site list and will be checking back soon. Pls look at my internet site at the same time and make me aware if you agree.
https://totovi.com/
totovi|2022年07月26日(Tue) 10:52
Excellent blog here! Also your site loads up very fast! What host are you using? Can I get your affiliate link to your host?
https://totoguy.com/ = &#53664;&#53664;&#49324;&#51060;&#53944;
&#53664;&#53664;&#49324;&#51060;&#53944;|2022年07月26日(Tue) 10:51
Heya i am for the first time here. I came across this board and I find It really useful & it
helped me out much. I hope to give something back and help others like
you aided me.
https://www.totosafedb.com

TOTOSAFEDB33|2022年03月23日(Wed) 15:55
I tell everyone how amazing you are. You have the best laugh.
Wonderful article! That is the kind of info that are supposed to be shared around the internet.
I used to be able to find good info from your
blog posts.
https://www.19guide03.com
GUIDE1903|2022年03月23日(Wed) 15:54
I precisely wished to appreciate you again. I’m not certain what I would’ve created in the absence of these thoughts shared by you over my situation. It was before a very hard scenario in my opinion, nevertheless coming across your professional manner you treated it forced me to cry with joy. I’m just happy for this advice as well as sincerely hope you comprehend what an amazing job you’re putting in educating many others by way of a site. More than likely you haven’t met all of us.
https://www.totositeweb.com
TOTOSITEWEB33|2022年03月23日(Wed) 15:53
Excellent post. I was checking constantly this website and I am impressed!
Very helpful info particularly the last part &#128578; I take care of such
information much. I used to be seeking this particular info for
a long time. Thanks a lot and better of luck.
https://www.gostopsite.com
GOSTOPSITE33|2022年03月23日(Wed) 15:52
はじめまして、情報処理の勉強をしている者です。

Web-DB連携システム、ぜひともマスターしたいものです!
師子乃|2016年01月25日(Mon) 23:27
   
×

この広告は30日以上新しい記事の更新がないブログに表示されております。