わかってるような、わかってないような駆け足学習。
学校で習っているのはJavaのはず。
しかし連日自宅でいじっているのは、Java以外。
これいかに?(小首をかしげる)
なにはともあれ、久々にJavaへなちょこメモです(^^;
もっといろんなパターンで自習しないと、
全体的に感覚が肌に染みてこないので
今は独語で言うなら wissen(知ってる)程度。
決して、beherrschen(マスターした)とか
kennen、erfahren(体験して知っている)ではないと思う。(キッパリ)
JavaのGUIをXMLから生成する gui4j 1.1公開
面白そうだよぉう。いじりたいけど、他にやる事いっぱいだー。
・コレクション・フレームワーク
どう言ったらいいのか、わからんです(笑)
とりあえず、perl野郎あに山としては、
「コレクションて、配列とかハッシュみたいな感じで
値の集合体(?)みたいな型っぽいなぁ」と
自信なさげにボンヤリ思ってます(汗)
じゃばじゃばさん所に詳しい解説があるです。
で、配列みたいなヤツ。
ArrayList list = new ArrayList();
list.add( "aaa" );
System.out.println( list.get( 0 ) ); // aaa と表示
→perlなら
my @list = ();
push @list, "aaa";
print $list[0]; # aaa と表示
→PHPなら
$list = array();
array_push( $list, "aaa" );
echo $list[0]; // aaa と表示
・HashMap
そして、ハッシュみたいなヤツ。
HashMap hash = new HashMap();
hash.put( "a", "aaa" );
System.out.printlin( hash ); // {a=aaa} と表示
→perlなら
my %hash = ();
$hash = ( a => "aaa" );
print join "=", each %hash; # a=aaa と表示
→PHPなら
$hash = array( "a" => "aaa" );
list( $key, $value ) = each( $hash );
echo "${key}=${value}"; // a=aaa と表示
簡単に言うと、webアプリケーション用のJava。
MVCで言うなら、Cにあたるものらしい。
必ず HttpServletクラスを継承しないといけないらしい。
Javaアプリケーションでは、main()が最初の実行メソッドだったけど
サーブレットでは、doGet と doPost などが起点になるらしい。
(本当はその前に service() が実行されているけど)
例えば、
<form method="get"> で送られた値には doGet が対応し、
<form method="post"> で送られた値には doPost が対応する。
ついで。
・JSP
簡単に言うと、これまたwebアプリケーション用のJava。
MVCで言うなら、Vにあたるものらしい。
HTMLソースん中に、スクリプトを書けちゃうんで、
まるでPHPのような作りです。
<%! うんぬん %> スクリプト宣言 - 変数の宣言とかするところ、でもあんま使わない
<%@ うんぬん %> ディレクティブタグ - JSP独特の命令
<% うんぬん %> スクリプトレット - Javaのソースを書くところ
<%= うんぬん %> スクリプト式 - 値や式を表示させるところ
<%-- うんぬん --%> スクリプト式 - 値や式を表示させるところ
普通のHTMLとか書いてある部分 テンプレート - Javaと関係ないところ
ところで、これを習った後で
PHPいじってたら、PHPにもスクリプト式と同じ書き方がある事を発見。
<?= $変数 ?>
こう書けば、<? echo $変数 ?> と同じ意味になるそうな。
知らなかったような、単に忘れただけなような(笑)
Apache のようなもの。
Tomcat だけで使ってもいいけど、Apacheと連動する手もあるらしい。
JavaでHello World さんの所を参考にするといいかと。
・話を戻して、JavaアプリケーションでDBへの接続
ただ、DB接続時のハンドルは違和感ないんだけど、
DBへのSQL送信用のオブジェクト(Statement)や、
DBからの応答をキャッチするオブジェクト(ResultSet)を
用意しないとアカンのが、ちょっと手間かかるなーという感想。
あ、import java.sql.*; を書くのを忘れずに。
MySQLの場合
public static void main(String[] args) {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:MySQL://localhost:3306/DB名";
String user = "ユーザー名";
String pass = "パスワード";
Connection con = null;
Statement st = null;
ResultSet rs = null;
try {
Class.forName( driver );
} catch ( Exception e ) {
e.printStackTrace();
}
try {
con = DriverManager.getConnection( url, user, pass );
st = con.createStatement();
String sql = "select * from テーブル名";
rs = st.executeQuery( sql );
while ( rs.next() ) {
String data = rs.getString( "項目名" );
System.out.println( data );
}
} catch( SQLException e ) {
e.printStackTrace();
} catch( Exception e ) {
e.printStackTrace();
} finally {
try { rs.close(); } catch( Exception e ) {}
try { st.close(); } catch( Exception e ) {}
try { con.close(); } catch( Exception e ) {}
}
PostgreSQLの場合
public static void main(String[] args) {
String driver = "org.postgresql.Driver";
String url = "jdbc:postgresql://localhost:5432/DB名";
String user = "ユーザー名";
String pass = "パスワード";
Connection con = null;
Statement st = null;
ResultSet rs = null;
try {
Class.forName( driver );
} catch ( Exception e ) {
e.printStackTrace();
}
try {
con = DriverManager.getConnection( url, user, pass );
st = con.createStatement();
String sql = "select * from テーブル名";
rs = st.executeQuery( sql );
while ( rs.next() ) {
String data = rs.getString( "項目名" );
System.out.println( data );
}
} catch( SQLException e ) {
e.printStackTrace();
} catch( Exception e ) {
e.printStackTrace();
} finally {
try { rs.close(); } catch( Exception e ) {}
try { st.close(); } catch( Exception e ) {}
try { con.close(); } catch( Exception e ) {}
}
}