|
| |
 |
プロパティファイル編 |
 |
◆プロパティファイルとは? |
| Javaのプロパティファイルとは「キー=値」という形式でデータを持つJavaのアプリケーションから利用されるファイルのことです。拡張子は「.properties」にします。たとえば、アプリケーションで使う値を外部のプロパティファイルから読み込むことによって、Javaのコードを変更することなしにプログラムで使用する値を変えて実行することができるようになります。 |
| ◆ここでの環境 |
| OS |
Windows XP |
| J2SE SDK |
1.4.1_01 |
|
|
|
| ◆実行環境の構築 |
| 実行環境の構築についてはアプリケーション編を参考にしてください。 |
| ◆実際のプロパティファイルを見てみよう |
| 実際にプロパティファイルの中身がどうなっているか見てみます。ここではJ2EE SDKで使われているejb.propertiesというファイルです。 |
| ejb.properties |
audit.log.file=audit.log repository.directory=repository applications.directory=applications http.port=9191
transaction.interoperability=true
transaction.jtsclient-policycheck=false |
|
| 「キー=値」という形式になってますね。 |
| |
| ◆プロパティファイルから読み込むプログラムの作成 |
| ■プロパティファイルの作成 |
| エディタでプロパティファイルを作成します。 |
| javahello.properties(ここからダウンロード) |
javahello.message=Hello World
javahello.url=http://www.hellhiro.com/ |
|
| ■プロパティファイルから値を読み込むソースの作成 |
| プロパティファイルから値を読み込んで表示するプログラムを作成します。 |
| HelloWorldGetProperties.java(ここからダウンロード) |
import java.util.*;
import java.io.*;
public class HelloWorldGetProperties {
public static void main(String[] args) {
try {
Properties prop = new Properties();
// プロパティファイルからキーと値のリストを読み込みます
prop.load(new FileInputStream("javahello.properties"));
// "javahello.message"に設定されている値を取得します
String message = prop.getProperty("javahello.message");
// "javahello.url"に設定されている値を取得します
String url = prop.getProperty("javahello.url");
// 読み込んだ値を表示します
System.out.println("メッセージ:" + message);
System.out.println("URL:" + url);
} catch (Exception e) {
e.printStackTrace();
}
}
} |
|
|
(メモ)
getProperty("key")メソッドは、指定されたキーの値が存在しない場合、nullを返却します。
getProperty("key" , "Hello World")のように2番名の引数を使用することによって、キーの値が存在しない場合に2番目の引数の値(デフォルト値)を返却するようにできます。 |
| ■コンパイルと実行 |
| コマンドプロンプト |
| C:\JavaHello\Properties>javac
HelloWorldGetProperties.java
C:\JavaHello\Properties>java
HelloWorldGetProperties
メッセージ:Hello World
URL:http://www.hellohiro.com/
C:\JavaHello\Properties> |
|
| おおおお!値が取得できましたね! |
| |
| ◆プロパティファイルに書き込むプログラムの作成 |
| プロパティファイルに「キー=値」のデータを上書きしたり新規に追加したりできます。 |
| ■プロパティファイルから値を読み込んで新しい値を書き込むソース |
| HelloWroldSetProperties.java(ここからダウンロード) |
import java.util.*;
import java.io.*;
public class HelloWorldSetProperties {
public static void main(String[] args) {
try {
Properties prop = new Properties();
// プロパティファイルからキーと値のリストを読み込みます
prop.load(new FileInputStream("javahello.properties"));
// "javahello.message"に新しい値を設定します(上書き)
prop.setProperty("javahello.message" , "Hola Mundo");
// "javahello.since"に値を設定します(新規追加)
prop.setProperty("javahello.since" , "2002/02/03");
// プロパティのリストをファイルに保存します
prop.store(new FileOutputStream("javahello.properties"), "javahello properties");
} catch (Exception e) {
e.printStackTrace();
}
}
} |
|
|
| ■コンパイルと実行 |
| コマンドプロンプト |
| C:\JavaHello\Properties>javac
HelloWorldSetProperties.java
C:\JavaHello\Properties>java
HelloWorldSetProperties
C:\JavaHello\Properties> |
|
| 実行できたのでプロパティファイルの中身を見てみましょう。 |
| javahello.properties |
#javahello properties
#Thu Nov 24 22:29:56 JST 2002
javahello.since=2002/02/03
javahello.url=http://www.hellhiro.com/
javahello.message=Hola Mundo |
|
| おおおお!"javahello.message"の値が新しい値に書き換わって、新規に"javahello.since"とういうプロパティが作られてますね! |
| |
| ◆実用性のあるプログラムの作成 |
| 実用性のあるプログラムを作成したいと思います。JDBC編、JDBC(MySQL)編、JDBC(PostgreSQL)編の全てで使用できるソースを作ります。ドライバクラス、データベースのURL、データベースに接続するユーザー名、パスワード、を外部のプロパティファイルに持ちます。こうすればデータベースが変わってもプロパティファイルだけ変更するだけで、プログラムのソースを変更して再度コンパイルしなくてもすみます。 |
| ■プロパティファイルの作成 |
| javahellojdbc.properties(ここからダウンロード) |
javahello.jdbc.driver=sun.jdbc.odbc.JdbcOdbcDriver
javahello.jdbc.url=jdbc:odbc:helloworld
javahello.jdbc.user=
javahello.jdbc.password= |
|
| ■プログラムの作成 |
| HelloWorldAJDBC(ここからダウンロード) |
import java.sql.*;
import java.io.*;
import java.util.*;
public class HelloWorldAJDBC {
public static void main(String[] args) {
try {
Properties prop = new Properties();
// プロパティファイルからキーと値のリストを読み込みます
prop.load(new FileInputStream("javahellojdbc.properties"));
// 値を取得します
String driver = prop.getProperty("javahello.jdbc.driver");
String url = prop.getProperty("javahello.jdbc.url");
String user = prop.getProperty("javahello.jdbc.user");
String password = prop.getProperty("javahello.jdbc.password");
// ドライバクラスをロード
Class.forName(driver);
// データベースへ接続
Connection con = DriverManager.getConnection(url,user,password);
// ステートメントオブジェクトを生成
Statement stmt = con.createStatement();
String sql = "SELECT * FROM HELLO_WORLD_TABLE";
// クエリーを実行して結果セットを取得
ResultSet rs = stmt.executeQuery(sql);
// 検索された行数分ループ
while(rs.next()){
// NOを取得
int no = rs.getInt("NO");
// 言語を取得
String lang = rs.getString("LANGUAGE");
// メッセージを取得
String msg = rs.getString("MESSAGE");
// 表示
System.out.println(no + " " + lang + " " + msg);
}
// データベースから切断
stmt.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
|
|
|
| ■コンパイルと実行 |
| コマンドプロンプト |
| C:\JavaHello\Properties>javac
HelloWorldAJDBC.java
C:\JavaHello\Properties>java
HelloWorldAJDBC
1 日本語 こんにちは 世界
2 英語 Hello World
C:\JavaHello\Properties> |
|
| おおお!実行されましたね! |
| |
| ■PostgreSQL用にプロパティファイルの変更 |
| プロパティファイルを以下のように変更するとソースを変更することなしにJDBC(PostgreSQL)編で使えるようになります。 |
| javahellojdbc.properties |
javahello.jdbc.driver=org.postgresql.Driver
javahello.jdbc.url=jdbc:postgresql:hellodb
javahello.jdbc.user=postgres
javahello.jdbc.password= |
|
| ■MySQL用にプロパティファイルの変更 |
| プロパティファイルを以下のように変更するとソースを変更することなしにJDBC(MySQL)編で使えるようになります。 |
| javahellojdbc.properties |
javahello.jdbc.driver=org.gjt.mm.mysql.Driver
javahello.jdbc.url=jdbc:mysql:///hellodb?useUnicode=true&characterEncoding=SJIS
javahello.jdbc.user=
javahello.jdbc.password= |
|
| 便利ですね! |
| |
■関連 JDBC編
JDBC(MySQL)編 JDBC(PostgreSQL)編 |
■書籍
Java関連の書籍 |
|
| |
|
|
| ツールの部屋
- Java関連の書籍 - デザインパターン - 情報交換掲示板
- HOME |