Post Page Advertisement [Top]




JSPでOracleを使った

MVC Model1パターンの活用方法について整理したいと思います。

一番最初にすべきことは、Oracleデータベースのライブラリを
持って来ることです。

Oracleデータベースのライブラリは、
Oracleデータベースのインストールフォルダで見つけることができます




デフォルトのインストールパスは、上記と同じだと思います。

それぞれ合うバージョンのjarファイルをコピーしてください。





Eclipseの場合




このパスにコピー&ペーストだけでも

問題もなくライブラリを参照することができます。

ところでintellij ideaの場合、簡単にはいけません。





このようにライブラリを参照できず、エラーが出るようになります。
直接追加が必要です。

fileのproject structureに入った後



jarファイルを追加を選択して




libフォルダペーストしたファイルを参照します。

このプロセスを完了すると、さっきのエラーがすべて消えます。

準備は終わりました。


コード打ちを説明いたします。

まず、これらのクラスを作成する必要があります。




Memberはモデルクラス

MemberDaoはImpleクラスが実装するインターフェイス

OracleJdbcは、Oracle接続に必要なユーザ名、パスワード、
ホストアイピーに関する設定するためのインタフェースです。

下のjarファイルは、先の作業で追加したファイルです。

member-registerは会員情報を入力するjsp

resultはその情報の確認するjspです。






コンピュータが処理する順番に沿って説明します。

まず、データを入力受けるjspから始めます。




簡単な方法の会員登録ページです。

コードは次の通りです。

<h1>Sign in Form</h1>
<form action="member-reg-result.jsp" method="post">
    <input type="text" name="userid" placeholder="ID" required/>
    <br/>
    <input type="password" name="pwd" placeholder="Password" />
    <br/>
    <input type="email" name="email" placeholder="Email" required />
    <br/>
    <input type="submit" value="会員登録" />
    <input type="reset" value="取り消し"/>

</form>


form形式を利用しました。




ここで、データを入力し会員登録を押すと

actionで設定したmember-reg-result.jspページに移動します。

下はresult.jspページのコードです。

<body>
<h1>結果ページ</h1>

<%
    // Requestパラメータの値を読む
    request.setCharacterEncoding("UTF-8");
    String id = request.getParameter("userid");
    String pw = request.getParameter("pwd");
    String email = request.getParameter("email");

    // Member オブジェクトを作る
    Member m = new Member(id, pw, email);

    // DaoのInsert()メソッドを使う
    MemberDaoImple dao = MemberDaoImple.getInstance();
    int result = dao.insert(m);
    if(result == 1){
        out.print("<p>"+m.getUserid()+"登録成功</p>");
    } else {
        out.print("<p>"+m.getUserid()+"登録失敗</p>");
    }
%>
</body>


ここで使用したメソッドは、

1. requestをエンコーディングするためのメソッド
2. jspで送信したデータを受け取るためのgetParameterメソッド
3. MemberDaoImpleのシングルトンメソッド
4. シングルトンに基づいて設定したinsertメソッド

この四つです。

下はMemberDaoImpleのコードです。

public class MemberDaoImple implements MemberDao{

    // singleton 適用
    public static MemberDaoImple instance = null;
    private MemberDaoImple(){}
    public static MemberDaoImple getInstance(){
        if(instance==null){
            instance = new MemberDaoImple();
        }
        return instance;
    }

    @Override
    public int insert(Member m) {
        int result = 0;

        Connection conn = null;
        PreparedStatement pstmt = null;

        // 1. JDBC Driver loading
        try {
            DriverManager.registerDriver(new OracleDriver());

            // 2. Connection 設定
            conn = DriverManager.getConnection(URL, USER, PASSWD);

            // 3. Statement 作成
            pstmt = conn.prepareStatement(SQL_INSERT);
            pstmt.setString(1, m.getUserid());
            pstmt.setString(2, m.getPwd());
            pstmt.setString(3, m.getEmail());

            // 4. 実行
            result = pstmt.executeUpdate();


        } catch (Exception e) {

            e.printStackTrace();
        } finally {
            try {
                pstmt.close();
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }

        }

        return result;
    }

一番上の行は、アドレスを一元化させるためのシングルトンメソッドです。

insertでは、データベースにアクセスし、データを追加するためのメソッドです。

(単純に作るため、ここでデータベースのログイン、アクセス+保存機能を同時にinsertメソッドに保存した。こいう作り方はよくないです。)




DriveManagerを通してデータベースを登録します。
その後getConnectionを使ってデータベースに接続します。

そしてPreparedStatementを使用してパラメータとして受け取るデータを
データベースに転送する作業をします。


SQL_INSERTの文字列は、このように設定しました。


String SQL_INSERT =
      "insert into test_member values(?, ?, ?)";



パラメータとして受け取ったid、password、emailを?、?、?の処に分けてデータベースに送信する準備を行っています。

その後executeUpdateメソッドを使って
データベースに転送します。

Oracleデータベースは、データの入力が成功する際に
intの1を返し、失敗の時に0を返します。

あらかじめint型の変数を作ってリターンの結果を格納します。

その後、データベースにアクセスするために開いた
通路を逆の順序で閉じています。




このプロセスは、try catchやthrowを使用しない場合、エラーが出ます。

なのでthrowやtry catchの中一つの処理をしてください。

このプロセスが正常に実行した場合

データベースにアクセスして保存、終了を実行したはずです。
その後、result.jspファイルを浮かびます。

    MemberDaoImple dao = MemberDaoImple.getInstance();
    int result = dao.insert(m);
    if(result == 1){
        out.print("<p>"+m.getUserid()+"登録成功</p>");
    } else {
        out.print("<p>"+m.getUserid()+"登録失敗</p>");
    }

オラクルのデータベースが返した値が1(成功)であれば、

登録成功を浮かび、そうではない場合(失敗)登録失敗を浮かびます。



以上で大まかな説明を終わります。

댓글 없음:

댓글 쓰기

Bottom Ad [Post Page]

| Designed by Colorlib