frei

旧「anney's room」からブログ「frei」だけ引っ越し&残しました

わかってるような、わかってないような駆け足学習。

学校で習っているのはJavaのはず。

しかし連日自宅でいじっているのは、Java以外。

これいかに?(小首をかしげる)

なにはともあれ、久々にJavaへなちょこメモです(^^;

もっといろんなパターンで自習しないと、

全体的に感覚が肌に染みてこないので

今は独語で言うなら wissen(知ってる)程度。

決して、beherrschen(マスターした)とか

kennen、erfahren(体験して知っている)ではないと思う。(キッパリ)

おまけ。

JavaのGUIをXMLから生成する gui4j 1.1公開

面白そうだよぉう。いじりたいけど、他にやる事いっぱいだー。

・コレクション・フレームワーク

どう言ったらいいのか、わからんです(笑)

とりあえず、perl野郎あに山としては、

「コレクションて、配列とかハッシュみたいな感じで

値の集合体(?)みたいな型っぽいなぁ」と

自信なさげにボンヤリ思ってます(汗)

じゃばじゃばさん所に詳しい解説があるです。

ArrayList

で、配列みたいなヤツ。

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 が対応する。

ついで。

perlでのformの受け取り方

PHPでのformの受け取り方

JSP

簡単に言うと、これまたwebアプリケーション用のJava

MVCで言うなら、Vにあたるものらしい。

HTMLソースん中に、スクリプトを書けちゃうんで、

まるでPHPのような作りです。

<%! うんぬん %> スクリプト宣言 - 変数の宣言とかするところ、でもあんま使わない

<%@ うんぬん %> ディレクティブタグ - JSP独特の命令

<% うんぬん %> スクリプトレット - Javaのソースを書くところ

<%= うんぬん %> スクリプト式 - 値や式を表示させるところ

<%-- うんぬん --%> スクリプト式 - 値や式を表示させるところ

普通のHTMLとか書いてある部分 テンプレート - Javaと関係ないところ

ところで、これを習った後で

PHPいじってたら、PHPにもスクリプト式と同じ書き方がある事を発見。

<?= $変数 ?>

こう書けば、<? echo $変数 ?> と同じ意味になるそうな。

知らなかったような、単に忘れただけなような(笑)

Tomcat

とりあえず、サーブレットやらJSPを扱える

Apache のようなもの。

Tomcat だけで使ってもいいけど、Apacheと連動する手もあるらしい。

JavaでHello World さんの所を参考にするといいかと。

・話を戻して、JavaアプリケーションでDBへの接続

当たり前だけど、perlPHPとやってる事は同じ。

ただ、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 ) {}

}

}