ラベル Java の投稿を表示しています。 すべての投稿を表示
ラベル Java の投稿を表示しています。 すべての投稿を表示

2011年11月11日金曜日

Androidアプリ開発 CVSファイルとDBへの書き込み

/********************アクティビティクラス*************************/
package kawasaki.com;

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;

import android.app.Activity;
import android.content.ContentValues;
import android.content.res.AssetManager;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;

public class Db_Test_1 extends Activity {
    /** Called when the activity is first created. */
    //メンバー変数
    //データベースヘルパーの作成

    private DatabaseHelper helper;

    //データベースの宣言
    public static SQLiteDatabase mDb;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        //DBファイルの真偽
        File file = new File("/data/data/kawasaki.com/databases/sample.db");
        if(file.exists()){
            file.delete();
            Log.d("kawasaki_debug","ファイルを消去しました");
        }else{
            Log.d("kawasaki_debug","ファイルはありません");
        }

        //DBの作成
        helper  = new DatabaseHelper(this);

        //CSVファイルの読み込み準備
        AssetManager as = getResources().getAssets();
        //DBオープン
        mDb = helper.getWritableDatabase();
        //DB値格納変数
        ContentValues value = new ContentValues();
        try {

            BufferedReader bf = new BufferedReader(new InputStreamReader(as.open("test_csv.csv")));
            String s;
            while((s = bf.readLine()) != null){
                String [] strAry = s.split(",");
                Log.d("kawasaki_debug","" + strAry[0] + "");
                value.put("NAME",strAry[0]);
                value.put("TEL",strAry[1]);
                mDb.insert("BOOK",null,value);
            }
        } catch (IOException e) {
            // TODO 自動生成された catch ブロック
            Log.d("kawasaki_debug", "" + e + "");
        }
    }

    //DBクローズ
    @Override
    public void onDestroy(){
        super.onDestroy();
        helper.close();
    }
}

/**********************DatabaseHelperクラス**********************/

import java.io.File;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DatabaseHelper extends SQLiteOpenHelper{

    //コンテキスト
    public DatabaseHelper(Context context){
        super(context,"sample.db",null,1);
        //super(context, null, null, 1);
        System.out.println("DBです");
    }

    //テープル作成
    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO 自動生成されたメソッド・スタブ
        db.execSQL("CREATE TABLE BOOK (_id INTEGER PRIMARY KEY,NAME TEXT,TEL TEXT)");


    }

    @Override
    public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
        // TODO 自動生成されたメソッド・スタブ
    }
}
★★★★★★★★★★★★★まとめ★★★★★★★★★★★★★★
AndroidでもDB基本的なところはかわりません、
SQLiteOpenHelperなど便利なクラスもありますので積極的に使うべきですね、

2011年1月11日火曜日

最近JavaばかりだったのでPHPとの比較してみました

★★★★★★★★★画面出力★★★★★★★★★★
Javaの場合
System.out.print("String");

PHPの場合
print'text';

★★★★★★★★★変数★★★★★★★★★★
Javaの場合
int num = 10;
*Javaの場合変数型を宣言します。

PHPの場合
$num = 10;
*PHPの場合変数型を宣言しなくてもよいです。

★★★★★★★★★変数の出力★★★★★★★★★★
Javaの場合
String str = "変数";
System.out.print(str);

PHPの場合
str = "変数";
print str;
print "str";
*シングルクォーテーションで囲んだ変数は文字列として扱われます。

★★★★★★★★★演算★★★★★★★★★★
Javaの場合
int a = 123;
String b = "123tests";
System.out.print(a + b);

*エラーでコンパイルできません

PHPの場合
$a = "123";
$b = "123tests";
print $a + $b;

出力:246
*PHPの場合ゆるいです。

★★★★★★★★★制御構文★★★★★★★★★★
Java・PHPともにだいたい同じです。
class kuku {

  public static void main(String args[]) {
    System.out.println("九九の表");

int a = 1;
int b = 9

    while(a <= b ) {
      for( int c=1; j<=b; c++ ) {
        System.out.print(a*c + " ");
      }
      a++;
      System.out.println(); 

    }
  }
}

PHPで九九を表示
<?php
$a = 1;
$b = 9;

print"<table border=\"1\">";
while($a <= $b){
    print"<tr>";
    for($c = 1; $c <= $b; $c++){
        print"<td>";
        print($c*$a);
        print"</td>";
    }
    $a++;
    print"</tr>";
}
print"</table>";

★★★★★★★★配列★★★★★★★★★★
Javaの場合
String[] stringArray = {"Sunday", "Monday", "Tuesday"};
*その他コレクションクラスがありますのでArrayListなんか便利です。
 import java.util.*;

class Cars {

public static void main(String args[]){

ArrayList[] cars=new ArrayList[1];

cars[0]=new ArrayList();

cars[0].add("1");

cars[0].add("1");

cars[0].add("3");

for(int i=0;i<cars[0].size();i++){

String str=(String)cars[0].get(i);

System.out.println(str);

}
}
}
 
PHPの場合
$array = array(12345);
http://nyx.pu1.net/function/array/に詳しく配列関数があります。

$a = 0;
$arrayTest = array();

while($a < 3){
    $b = 0;
    while($b < 3){
            $arrayTest[$a][$b] = $a*$b;
            print '$arrayTest['.$a.']['.$b.']='. $arrayTest[$a][$b]."<br>";
        $b++;
    }
    $a++;
}


★★★★★★★★★クラスからオブジェクトの生成★★★★★★★★★★
Javaの場合

class Test1{
int a = 1;
  public void test(){
    System.out.print(a);
  }
}
*Test1クラスの生成
Test1 test1 = new Test1();//オブジェクトの生成
test1.test();//メソッドの呼び出し


PHPの場合
class Test1{
  function test(){
$a = 1;
    print $a;
  }
}
$test =  new Test1();//オブジェクトの生成
$test->test();//メソッドの呼び出し


2011年1月7日金曜日

Ubuntu への Java 環境設定方法について

UbuntuによるJava開発環境の設定方法について

【はじめに】
Linux系OSのひとつであるUbuntuへのJava開発環境の設定方法を記す。
(ここに記す内容は、正当性を保証するものではありません。設定は自己責任でお願いします)

【使用したOS】
Ubuntu10.04
※上記以外のバージョンでも,設定方法は基本的には同じだが、動作確認をしているのはこのバージョンのみ

【設定し、動作確認を行ったUbuntuのインストール環境】
1)単体でインストールした環境
2)VM(Virtual Machine)による、Windows上にUbuntuをインストールした環境
3)WindowsとUbuntuを間接的にデュアルブートするソフト「Wubi」によりインストールした環境
※3は、アップグレードをするうちに、起動しなくなる(GNU画面になる)エラーが発生したので推奨
できない。但し、使用したPC(東芝 Satellite J32)に原因がある可能性もある。よって、他の
PCでは正常に動作するかもしれない。
※設定は管理者権限でログインしなければ行えない

以下に、各種設定の手順を記す。

*******************************************************************************************
Wubi
*******************************************************************************************
【注意】
これは、上記「設定を行ったUbuntuのインストール環境」における(3)の方法でUbuntuをインストール
する方法である。

【WubiによるUbuntuの設定】
1)ダウンロードサイトよりWubiをダウンロードする
2)インストーラ「Wubi」をダブルクリック
3)ダイアログボックスに従ってインストールする
4)インストール後、再起動する
5)再起動の際、OS選択画面にて、Ubuntuを選択し、
Enterキー押下直後、SHIFTキーを押下する。
(GNUメニュー画面が表示される)
6)「Safe Graphic Mode」を選択し、Enterキーを押下
7)インストール処理が続行され、完了する(機種にもよるが、10分以上かかる)

【Ubuntuの日本語化】
サイト「http://www.ubuntulinux.jp/products/JA-Localized」の内容にそって端末にコマンドを入力
※処理の際、「ハッシュサムが適合しない」というエラーが表示される場合は、下記補足(「ハッシュサムが適合
しない」と表示される場合)を参照


********************************************************************************************
JDK(Java)
********************************************************************************************
【JDKのインストール】
ソフトウェアセンターからOpenJDK6.0をインストール
※端末からでもインストール可能(コードは省略)
※2010年12月現在、SunJavaはアップされていない
※インストールされているJDKのバージョンの確認方法
1)端末にて「java -version」と入力し、Enterキーを押下
2)「java version」の後に、バージョンが表示される

********************************************************************************************
Eclipse
********************************************************************************************
【Eclipseのインストール】
ア)ソフトウェアセンターからインストール(手順は省略)
イ)端末からインストールする場合
1)「sudo apt-get install eclipse」と入力し、Enterキーを押下
2)パスワードを入力し、Enterキーを押下
3)「sudo eclipse -clean」と入力し、Enterキーを押下
4)Eclipseが起動する
※2010年12月現在、バージョンは3.5.2(GALILEO)
※インストール直後は、EclipseのメニューバーにJava関連のボタンが表示されない場合
があるが、プロジェクトをひとつでも作成すれば、表示されるようになる
※上記(ア)の方法でインストールした場合、EclipseがJavaを認識しないことがある
その場合は、一旦アンインストールして、(イ)の方法で設定すると良い

【Eclipseの日本語化】
1)URL[http://mergedoc.sourceforge.jp/]よりpleiadesをダウンロード
※安定版でのみ正常動作を確認した
2)ファイルを展開すると、ファイル「jp.sourceforge.mergedoc.pleiades」が生成される
3)このファイルをパス「/user/lib/eclipse/plugins/」に移動する
※移動するには、root権限でファイルブラウザを開く必要がある。(下記補足「root権限でファイル
ブラウザを開くには」を参照)
4)パス「/user/lib/eclipse/」のeclipse.iniファイルの最終行に下記一行を追記
「-javaagent:/usr/lib/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar」
5)上書き保存し、ファイルを閉じる
6)Eclipseを起動する(日本語化されていれば完了)
※「アプリケーション」→「プログラミング」から起動すると、エラー(「NoSuchMethodError」)が表示される
ことがあります。この場合は、端末で「sudo eclipse -clean」コマンドを実行すると起動できます。しかし、
このエラーの根本的な解決法は分かりません。

【Eclipseの文字コードの変更方法】
(説明)
Ubuntuのデフォルトの文字コードは「UTF-8」であるため、他のOSで作成したファイルをインポートすると、
文字化けが起こることがある。その場合の対処法を記す。
1)パッケージエクスプローラにて、文字コードを変更したいプロジェクト名またはJavaファイルを選択し、右クリック
2)プロパティをクリック
3)「リソース」タブの「テキスト・ファイル・エンコード」のその他欄にて、プルダウンより文字コードを選択
※プルダウンにない文字コードを設定するには、テキストボックスに直接入力する

********************************************************************************************
Amateras
********************************************************************************************
【Amaterasとは】
UML関連の図(ユースケース図・クラス図等)を作成するためのEclipseへのプラグインである

【EclipseにAmaterasのプラグインを設定する】
・「AmaterasUML」をダウンロード、展開後、jarファイルをeclipseフォルダのpluginsフォルダに入れる
・「AmaterasUML Extention」も上記と同じ。
・「GEF-Update」ファイルをダウンロード。展開してできたフォルダをpluginsフォルダに入れる
・「Lpack1-GEF-runtime」ファイルをダウンロード。展開してできたフォルダ内のplugins内のjarファイルを
eclipseフォルダ内のpluginsフォルダに入れる
※Windowsではこの設定で導入できたが、Ubuntuでうまくいかず。何かが足りないのかもしれない。


********************************************************************************************
Tomcat
********************************************************************************************
【Tomcatのインストール】
URL「http://www.anhuioss.com/tips/5/tip5.html」を参照
※筆者は、Version6.0.29にて動作を確認


********************************************************************************************
MySQL
********************************************************************************************
【MySQLのインストール】
ソフトウェアセンターからインストール

(EclipseでのMySQLの設定)
・jarファイルの設定
>MySQLのサイト→Downloadタブ→MySQL Connectors→Connector/J→zipファイルをダウンロード
>ファイルを解凍
>生成されたjarファイルをEclipseのパッケージエクスプローラにてTomcatプロジェクト内の
WEBINFフォルダ内のlibフォルダに配置
>配置したフォルダを右クリックし、「ビルドパスに追加」を押下

【Webクライアントツール(MySQL Query Browser)のインストール】
ソフトウェアセンターからインストール
※Webクライアントツール:NaviCatのようなもの


********************************************************************************************
CVS
********************************************************************************************
【apache2をインストールする】
※CVSの設定を行う前に、予めapache2をインストールする。
※詳細は、URL「http://dqn.sakusakutto.jp/2008/08/ubuntu-804apache2.html
のインストール・動作確認を参照
1)端末にて、「sudo apt-get apache2」と入力し、Enterキーを押下
2)パスワードを入力し、Enterキーを押下

【CVSをインストールする】
※詳細は、サイト「CVSサーバ - Ubuntu Server as 家サーバ」を参照
3)端末にて「sudo apt-get install cvs」と入力し、Enterキーを押下
4)パスワードを入力し、Enterキーを押下

【xinetdをインストールする】
5)端末にて「sudo apt-get install xinetd」と入力し、Enterキーを押下

【CVSを管理するユーザーを追加する】
6)端末にて「sudo adduser cvsuser」と入力し、Enterキーを押下
※cvsuserの名称は任意

【cvsrootリポジトリを作る】
7)端末にて「sudo su - cvsuser」と入力し、Enterキーを押下
8)端末にて「mkdir /home/cvsuser/cvsroot」と入力し、Enterキーを押下
9)端末にて「cvs -d /home/cvsuser/cvsroot/ init」と入力し、Enterキーを押下
10)端末にて「exit」と入力し、Enterキーを押下

【もうログインできないようにする】
11)端末にて「sudo chsh cvsuser」と入力し、Enterキーを押下
※cvsuserは、6で設定したユーザー名
12)以下が表示された後、「/usr/sbin/nologin」と入力し、Enterキーを押下
Changing the login shell for cvsuser
Enter the new value, or press ENTER for the default
Login Shell [/bin/bash]:

【cvsを利用するユーザのためのパスワードを作成する】
13)端末にて、「sudo htpasswd -c /home/cvsuser/cvsroot/CVSROOT/passwd cvsuser」
と入力し、Enterキーを押下
※上記コマンドにおいて、「cvsuser」は作成するユーザー名である
※上記のコマンドにおいて「-c」はファイルを新規作成するという意味なので、2人目以降の作成の
際には、上記コマンドから「-c」を除く
14)設定するパスワードを入力し、Enterキーを押下
※作成するユーザーの分だけ、13、14の手順を繰り返す

【ファイル「passwd」を編集する】
15)root権限でファイルブラウザを開く
※下記補足「root権限でファイルブラウザを開くには」を参照
16)パス「/home/cvsuser/cvsroot/CVSROOT」内にあるファイル「passwd」を開く
17)ユーザー名とハッシュ化されたパスワードが表示されているが、その末尾に「:cvs管理者
名をつける(例「:cvsuser」)
※cvs管理者名は、6で作成したユーザー名
18)上書きしてファイルを閉じる

【xinetdの設定にcvsを追加する】
※引用元のサイトでは、端末上でファイルの編集を行っているが、ここでは便宜上、ファイルブラウザを
用いた操作手順を記す
19)root権限でファイルブラウザを開く
※下記補足「root権限でファイルブラウザを開くには」を参照
20)パス「/etc/xinetd.d/cvspserver」へ移動する
21)上記パスのファイル「cvspserver」に以下のコードを入力し、上書き保存する
service cvspserver
{
disable = no
port = 2401
socket_type = stream
protocol = tcp
wait = no
user = cvsuser
passenv = PATH
server = /usr/bin/cvs
evn = HOME=/home/cvsuser
server_args = -f --allow-root=/home/cvsuser/cvsroot pserver
}

【xinetdをリスタートする】
22)端末にて「sudo /etc/init.d/xinetd restart」と入力し、Enterキーを押下

【ufwを有効にしている場合は2401を許可する】
23)端末にて「sudo ufw allow 2401」を入力し、Enterキーを押下

【EclipseでCVSの接続設定をする】
24)Windows(CVSNT)と同じ。画面で、パスを「/home/cvsuser/cvsroot」
とする。(「/home/cvsuser/cvsroot/CVSROOT」ではない)


********************************************************************************************
samba
********************************************************************************************
【sambaとは】
WindowsとUbuntuを間接的にデュアルブートした環境において、Windows上のUbuntuから共有ドライブ
(サーバー)へのアクセスを可能にするソフト
※VM環境ではこのソフトを使用せずともアクセス可能
【sambaのインストール】
1)ソフトウェアセンターから「samba」をインストール
2)端末にて「sudo service smbd status」または「sudo service smbd restart」と入力し、Enterキー押下
3)パスワードを入力し、Enterキー押下
4)ファイルブラウザにて、メニューから「移動」→「場所」をクリック
5)テキストボックス「場所」内に「smb://(サーバーのIPアドレス)」を入力
※IPアドレスを確認する方法については、下記補足「IPアドレスの確認方法」を参照
6)ファイルブラウザにて、「ファイル」→「サーバーへ接続」をクリック
7)表示された「サーバーへ接続」ダイアログボックスにて、以下を設定し、「接続」を押下
・サービスの種類:Windows共有
・サーバー名:IPアドレスを入力
・ブックマークを追加するにチェックを入れる
・ブックマーク名に適当に名前をつける
8)ファイルブラウザの左のウィンドウ内に、7で設定したブックマークが作成されれば完了

********************************************************************************************
FreeMind
********************************************************************************************
【FreeMindとは】
PC上でマインドマップを作成するフリーウェア。模擬プロジェクトでは、ブレーンストーミングおよびKJ法
を行った際に使用。
【FreeMindのインストール】
ソフトウェアセンターからインストール可能。
※Ubuntu9.10では、使用中に突然、文字入力できなくなる不具合があるので注意


***********************************************************************************************
補足
***********************************************************************************************
●「ハッシュサムが適合しません」というエラーが発生する場合
(原 因)ソースファイルがダウンロード元のサーバにない
(解決策)ダウンロード元のサーバーを別のサーバーに切り換える
(手 順)
1)メニューより「システム」→「システム管理」→「ソフトウェア・ソース」をクリック
2)パスワードを入力し、OKボタンを押下
3)「ソフトウェア・ソース」ダイアログボックスにて、「ダウンロード元」のプルダウンメニューを
を表示させ、「その他」をクリック

4)「ダウンロードサーバーを選択してください」ダイアログボックスにて、サーバーを選択し、
「サーバの選択」をクリックする(自宅から最寄りのサーバーを設定する場合は、「最適なサーバ
を探す」ボタンを押下する。(ダイアログボックスが自動的に閉じる)
5)「ソフトウェア・ソース」ダイアログボックスの「閉じる」をクリック
6)「利用可能なソフトウェアの情報が古くなっています」ダイアログボックスの「再読込」をクリック
7)処理後、表示されたダイアログボックスの「閉じる」をクリック
以上で、ダウンロード元のサーバーが切り換えられた。
※この処理後も、上記のエラーが発生する場合には、上記の要領で、サーバーを切り換える

●root権限でファイルブラウザを開くには
1)メニューから「アプリケーション」→「アクセサリ」→「端末」をクリック
2)「gksu nautilus」を入力し、Enterキーを押下
3)パスワードを入力し、Enterキーを押下
4)ファイルブラウザが開く
※ファイルブラウザとは、Windowsの「エクスプローラ」に相当
※ちなみに、端末上でルート権限でログインする方法は、
1)端末で、「sudo su」と入力し、Enterキーを押下
※suとは"S"uper "U"serのこと
2)パスワードを入力し、Enterキーを押下
3)「(ユーザ名)-desktop」が「"root@"(ユーザ名)-desktop」に変われば完了
※ログアウトするコマンドは「exit」

●root権限でファイルブラウザを開くとはどういうことか
Ubuntuでは、デフォルトでは、ホームフォルダ(/home/ユーザー名)内でのみ、ファイルやフォルダの
編集(作成・編集・削除)が行える。それ以外のフォルダは読み取り専用となる。
それ以外のフォルダにおいて、編集を行うためには、root権限で開いたファイルブラウザ内で行わなければ
ならない。

●Ubuntuによるソフトウェアのインストール方法について
Ubuntuでは、ソフトウェアのインストール方法は主に以下の2つ。
ア)メニューより「アプリケーション」→「Ubuntuソフトウェアセンター」からのインストール
イ)メニューより「アプリケーション」→「アクセサリ」→「端末」からのインストール
※端末とはWindowsにおけるDOSプロンプトに相当

●IPアドレスの確認方法
1)端末を開く
2)「sudo ifconfig」と入力し、Enterキーを押下
3)パスワードを入力し、Enterキーを押下
4)IPアドレス等の情報が表示される

2010年12月14日火曜日

Java Dao・Dto・Beanの役割分担のマトメ

Controlクラス{
①request.getParameterのパラメータによって処理の切り替え、
②Daoを生成し、必要なDaoメソッドの実行、
③DaoからListオブジェクトがリターンされるのでセッションやrequestに格納
④ディスパーチ

Daoクラス{
①DBクラスのコネクションとステートメントメソッドの呼び出し、
②Sql文の作成、
③Sql文の実行、
④ループでリザルトの一行ずつの結果をDtoの必要メソッドで実行、
⑤ループ毎でDtoからリターンされるBeanオブジェクトをList.add(Bean)
⑥Listを呼び出し元のControlクラスにリターン


Dto{
①Daoで一行毎のレコードが渡ってくるので、
②一行毎のBeanオブジェクトを生成
②Beans.setId(リザルト.getInt("ID"));
③一行毎のBeansオブジェクトを呼び出し元のDaoにリターン


Beansクラス{
set・getメソッドを記述



2010年12月9日木曜日

Java・DTO・DAO・Beansを自分的にマトメ

★★★★処理内容★★★★★
JspよりIDとパスが入力されるのでIDとパスが正しいのか返す、
★★★★処理の流れ★★★★
①IDとパス入力
②コントロールクラスが値を受け取り、
③Beanクラスを呼び出す
④BeanクラスはIDを受け取り、DaoにIDを渡す、この時の戻り型はDto
⑤DaoクラスはSelect文でIDに紐づく値を実行
⑤DaoはDtoクラスを呼び出しSelect文の値をDtoのフィールドにセット
⑥BeanはDto型で戻ってきた値を、Dtoのgetメソッドを使いBeanのsetメソッドでセット、
⑦Beanに格納されたパスを入力されたパスが同じか調べて結果を返す
⑧jspにディスパーチ

こんな感じかな、
わたしは説明へたですが 、

下記の本はUMLの書き方やオブジェクトなど丁寧で分かりやすく、
2度ほど読むとオブジェクト指向やUMLの感じがつかめるを思います。

*追伸・UML等を勉強中です。

2010年12月7日火曜日

Java セッションのお勉強

■javax.servlet.http.HttpServletRequest.getRequestURI()
本来アクセスしようとしたURLを取得
 
■/Cus/で始まる全てのURLにマッチします。*で 
<filter>
    <filter-name>AuthFilter</filter-name>
    <filter-class>AuthFilter1</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>AuthFilter</filter-name>
    <url-pattern>/Cus/*</url-pattern>
★.jspや*.cgiと記述すれば指定したファイルにフィルターが掛かります 
★複数のフィルタがマッチした場合にはどうなるでしょうか。
その場合にはマッチしたフィルタ全てが起動されます。起動される順番は、
設定の順番が有線

2010年10月5日火曜日

Windows TOMCAT6 + MySql + eclipse 環境でデータソース

 ■前準備
①C:\Tomcat 6.0\libにmysql-connector-java-5.1.13-bin.jarをコピー
②eclipseの各プロジェクトからプロパティ⇒Javaビルドパス⇒外部JARの追加⇒mysql-connector-java-5.1.13-bin.jarを選択し追加⇒OK

■C:\Tomcat 6.0\conf\Catalina\localhost\Test.xmlのTest.xmlに下記のxmlを追加、
私の環境だとeclipseでプロジェクトを作った際、自動でファイルが出来ていますので
そこに追加
<Context path="/Test" reloadable="true" docBase="C:\eclipse\workspace\Test" workDir="C:\eclipse\workspace\Test\work" >//ここは各自違います!!
    <Resource name="jdbc/tests"//データソース名
       auth="Container"
        type="javax.sql.DataSource"
        username=""//sqlのユーザ名
        password=""//sqlのパスワード名
        driverClassName="com.mysql.jdbc.Driver"
        url="jdbc:mysql://localhost:3306/test"//mysqlのURLとデータベースを記述、今回はtestデータベースを選択、
    />
</Context>

■Jspソースの記述、今回はeclipseのTestプロジェクトのデフォルトパッケージにjspを置いています。
<%@ page contentType="text/html; charset=Windows-31J"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<%
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/tests");//ここはxmlのResource nameと合わせて記述

%>
<% System.out.print(ds); %>//デバック用
<%
Connection conn= ds.getConnection();
Statement pstmt = conn.createStatement();
String sql = "SELECT * FROM ACCOUNT";
ResultSet rs = pstmt.executeQuery(sql);
while(rs.next()){ %>
    <%=rs.getString("NAME")%><BR>
<%}
pstmt.close();
rs.close();
conn.close();
%>

2010年9月16日木曜日

JspとServletとJavaBeansの連携で分かった事

■■■■■■■■■■■サーブレットで大事な事■■■■■■■■■■■■■■

 リクエストに渡すスコープ名request.setAttribute("cb",cb);とJsp部分でJavaBeansで受け取る
<jsp:useBean id="cb" class="mybeans.CarBean"の部分の名前は合わせておく、
public class Sample7 extends HttpServlet
{
    public void doGet(HttpServletRequest request,
            HttpServletResponse respons)
    throws ServletException
    {
        try
        {
            //GETで名前の受け取り
            String tmp = request.getParameter("cars");
            String names = new String(tmp.getBytes("8859_1"),"JISAutoDetect");
       
            //BeansにCarの名前をセット
            CarBean cb = new CarBean();
            cb.setCarName(names);
            cb.makecardata();
       
            request.setAttribute("cb",cb);//この部分

2010年9月14日火曜日

フィルター処理の記述、

■サーブレット表示のソース
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class SampleFilter extends HttpServlet
{
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException
    {
        try
        {
            response.setContentType("text/html;charset=Windows-31J");
            response.getWriter().println("<p>Servlet処理です</p>");
        } catch (Exception e)
        {
            // TODO: handle exception
            e.printStackTrace();
        }
    }
}


■フィルター表示のソース

import java.io.*;
import java.util.*;
import javax.servlet.*;

import javax.servlet.*;

import javax.servlet.http.*;


public class FilterSrc implements Filter
{
    public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)
        throws IOException,ServletException
        {
        try{
            response.setContentType("text/html;charset=Windows-31J");
            PrintWriter pw = response.getWriter();
            pw.println("フィルタ処理");

            chain.doFilter(request, response);
        }catch (Exception e) {
            // TODO: handle exception
        }
        }
       
    public void init(FilterConfig filterConfig) {
        // TODO 自動生成されたメソッド・スタブ
       
    }
    public void destroy() {
        // TODO 自動生成されたメソッド・スタブ
       
    }

}

■web.xmlの記述

    <servlet>
        <servlet-name>SampleFilter</servlet-name>
        <servlet-class>SampleFilter</servlet-class>
    </servlet>
    <filter>
        <filter-name>FilterSrc</filter-name>
        <filter-class>FilterSrc</filter-class>
    </filter>
    <servlet-mapping>
        <servlet-name>SampleFilter</servlet-name>
        <url-pattern>/FilterSrc/SampleFilter</url-pattern>//ここをそろえておくことが味噌
    </servlet-mapping>

    <filter-mapping>
        <filter-name>FilterSrc</filter-name>
        <url-pattern>/FilterSrc/SampleFilter</url-pattern>
//ここをそろえておくことが味噌
    </filter-mapping>
そのたポイント■
①フィルターのソースのメソッドはdoFilter()です、その内部で処理を行いましょう、
FilterCainのdoFilter()メソッドの処理が終わると次の処理が行われます
②Filterを実装
③doFilterの引数はServletのリクエスト、レスポンス、FilterChainの3つ
④実装したFilterのinitやdesroyのメソッドも忘れずに

2010年9月13日月曜日

ServletでHTMLと日本語を書き出し

■■■■■■■■HTMLを書き出す時■■■■■■■■■■
response.setContentType("text/html;  charset=Windows-31 ");
はhtmlの書き出しと、エンコーディングを Windows-31で行います。

■■■■■■■■テキストを書き出す時■■■■■■■■■■
response.setContentType("text/plain; charset=Windows-31J");

★上記を書かないと


?????????
 
な感じになります 

Jsp記述色々

■■■■■■変数宣言■■■■■■
<%! int i = 0; %>はJspが初めて呼び出された後、共有されます
<% i =  i++; %>
ですので、iの変数はアクセスの間カウントUPされます。

■■■■■■サーブレットを作成はHttpServletを継承■■■■■■
サーブレットを作成する時は、HttpServletを継承します。
 extends  HttpServletと記述する

■■■■■■doGet()メソッド■■■■■■
HttpServletのオーバーライドメソッド
ブラウザーがら リクエストで受け取り、レスポンス で返します、

■■■■■■例外処理■■■■■■
レスポンスの書き込みはIOExceptionでスローし、
他の例外処理は、ServletExceptionでラップてスローします。
例: 
try
{
例外の発生がある処理
}
catch(SomeException e)
{

throw new ServletException(e);
}
■■■■■■web.xml■■■■■■
<web-app>
<servlet>

 <servlet-name>TestServlet</servlet-name>//サーブレットの名前
  <servlet-class>TestServlet</servlet-class>//サーブレットのクラス、パッケージがある
//場合はパッケージに合わせましょう
</servlet>
<servlet-mapping>
 <servlet-name>TestServlet</servlet-name>//サーブレットの名前

 <url-pattern>/testservlet</url-pattern>//ブラウザからのurl
</servlet-mapping>
<web-app>
 ■■■■■■web.xmlのワイルドカード■■■■■■
/test/*
*.txtなどあります

Jspで配列中の名前表示

 jspで配列中の名前表示ソース■
<%@ page language="java" contentType="text/html; charset=windows-31j"
    pageEncoding="windows-31j"%>
   
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-31j">
<title>Insert title here</title>
</head>
<body>
<%
String []names = {"大田","川崎","永浦","西橋"};
int i;
int count = names.length;
for(i = 0; i < count; i++)
{
out.println(names[i]);
}

%>


</body>
</html>

★★★★★★★★実行結果★★★★★★★★
大田 川崎 永浦 西橋

 ★★★★★eclipse画面★★★★














★★★★★表示URL★★★★
http://localhost:8080/Jsp10_1_1/p_intro.jsp

2010年9月1日水曜日

JPanel

コンテナにパネルを追加してボタンを追加、

JButton jb1 = new JButton();
JButton jb2 = new JButton();


setLayout(new GridLayout(2,1)); //コンテナにグリッドを作成
Jpanel jp1 = new JPanel();//パネルの作成
Jpanel jp2 = new JPanel();
jp1.add(ボタンオブジェクト);//パネルにボタンの追加
jp2.add(ボタンオブジェクト);
add.(jp1);//コンテナにパネルを追加
add.(jp2);

2010年8月30日月曜日

イベント

GUIではボタンを押したときに処理する事を、「イベント処理」event handlingといいます。

ボタンが押された時の処理記述、

bt.addActionListener(new TestActionListener());
↓↓↓↓↓↓↓↓
 class TestActionListener implements Actionlistener
    public void actionPerformed (ActionEvent e)
    {
        処理内容
     }
 ■actionPerformedメソッドはActionlistenerインターフェイスクラスのメソッドです。
■イベントを処理するクラスをリスナ
■イベントが発生するクラスをソース、たとえばボタンがソースになります。
■MouseAdapterはMouseListenerを実装した便利なクラスです。
■キーボードからの入力をした時、KeyAdapterを使います 、

KeyEventクラスのe.getKeyCode();でキーボードからの入力を

int型で受け取ります。

■GUIのイベントはWindowはwindowの閉じるボタンをおした時や、縮小や拡大などのイベントを行い
ます。

2010年8月23日月曜日

スレッドの基本

スレッド=複数の処理、
タスク=元々は軍事用語、空母や補給機などの役割をここに分けたもの、


実装方法は、
class スレッド実装クラス extends Thread{}


メインメソッド
 スレッド実装クラス cla = new スレッド実装クラス();
cla.start();//スレッド起動


↓↓↓↓↓↓↓↓↓

class スレッド実装クラス

public void run(){処理内容}


■処理を一秒間毎に処理する場合はtry&catch
のを記述し、
thread.sleep(1000);//と記述する、

■インターフェイスによるスレッドの実装
implements Runnable

を実装した、クラスを呼び出すには、
クラスのインスタンスを作る、

コンストラクタの引数でクラス変数を渡す、
Threadクラス変数.start();//スレッドの起動

■複数のスレッドが共有するフィールドの処理をする時は、メソッドに
synchronizedを指定する。

2010年8月20日金曜日

入出力

System.out==標準出力;
System.in==標準入力;

■入出力の概念をストリームと言います。

ファイルを開いて書き込み、
new PrintWriter printwriter = new PrintWriter
(new BufferedWriter
(new FileWriter("text1.txt")))
System.exit(1)とはプログラムを終了する、番号はAPIで確認しましょう
■args[0]はコマンドラインからの入力を受け取ります。スペースで渡す時はスペースで区切りましょう。

2010年8月19日木曜日

import

/**
 *
 */
package rensei;

import static java.lang.Math.*;//(16)解答
import java.util.*;//(17)解答

import yjPlactice.Today;

/**
 * @author****
 *
 */
public class impTest1617 {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // importのテストをしてみますね。
        double dbl1 = 0.0;
        double dbl2 = 0.0;

        dbl1 = 2.0;
        dbl2 = sqrt(dbl1);//6行目があるので、Math内のメソッドが単純名で呼べる

        System.out.println("root2 = " + dbl2);
        System.out.println(PI); // 23行目同様6行目があるので、
        //Math内のフィールド「PI」が単純名で呼べる

        Random random = new Random();
        // 7行目があるので、java.util内のRandomクラスが、単純名で使える。
        int r =random.nextInt(); // Random内のメソッドは任意
        System.out.println(r);
        // 上の行は、System.out.println(random.nextInt());
        // でもよいかな。int r がいらなくなる。

        Today t =new Today();
        System.out.print(t.getClass());
    }

}
/*実行結果****
root2 = 1.4142135623730951
3.141592653589793
186691675
class yjPlactice.Today
*/

例外処理

try
{
例外処理が起きそうな記述 ;//例外が発生した場合tryの以下の処理が行わない、
}
catch
{
例外処理がおきた時の処理;
}
finally
{
必ず行う処理;
}
■catchブロックが見つからない場合、呼び出し元のメソッドに戻ります。
必ず行いない処理はfinallyに記述しておきましょう。

IOExceptionは出入力のエラー、
ArrayIndexOutOfBoundsExceptionは不正インデックスによる配列参照 
など例外の種類によって使います。
Exceptionは例外処理のサブクラスを持っていいます。
処理中にExceptionIOExceptionより先に記述しておくと、すべて例外エラーが
受け取られますので、記述の順番に注意して下さい。
 

2010年8月17日火曜日

eclipse導入

integrated
Development
Environment

統合された開発環境だそうです。

2010年8月5日木曜日

インターフェイス

interface f1//インターフェイスの宣言
{
void show();//抽象メソッド
}

■インターフェイスの構文
interface f1
{
 型名 フィールド名 = 式;//初期化、フィールドはデフォルトでpublic static finalです、定数
戻り型 メソッド名();//メソッド処理は定義しない
}

■インターフェイルを実装する、
class F1 implements f2{}

■インターフェイスの場合はフィールドとメソッドはすべて定数です。
また、処理のない、メソッドを持ちます。サブクラスのメソッドをオーバーライドして実行するなどして、
分かりやすい、処理を記述する事が出来ます。

■インターフェイスはテンプレートみたいに使うと、便利、
たとえば、サブクラスにf1のタイヤのサイズ、エンジンサイズの値の表示を実行する記述を
書いておき、インターフェイスでは、タイヤのサイズ、エンジンサイズを表示した時には、showF1();
としておくと、たくさんのサブクラスがある場合、インターフェイスshowF1()メソッド実行の時はタイヤのサイズ、エンジンサイズを表示と決められているので、テーンプレート的な役割を果たす、
 大変便利です。また、インターフェイスはフィールドがfinal定数なので内容の保持も使える、