- ベストアンサー
データの受け渡しについて
現在、出席票のプログラムを作っていて出てきた質問です。ただし私がJAVA初心者なため、質問もとても初歩的な部分だとは思いますが、どうぞよろしくお願いいたします。 このプログラムは2つのファイルから成り立たせたいと考えています。1つ(以下:DBTest_a)ではJAppletによってパスワードを入力する。もう2つ(以下:DBTest_b)ではDBTest_aで得たパスワードを受け取り、データベースに接続して各処理を行う(この処理内容もパスワードを表示させたウインドーで表示させたい)。というものです。 受け取るには、DBTest_aをメインにして、 str にパスワードを保持して、DBTest_bをDBTest_a内で呼び出して受け渡そうと考えました。 そのためのパスワードを入力して保持するプログラムと、データベースに接続するプログラムを別々に作成して、個別には実行できるようにはなりました。しかし、DBTest_bへのデータの受け渡しがうまく行かないままです。 現在のDBTest_bでは" JOptionPane.showInputDialog "を使って、パスワードを簡単に入力ができるようにしています。このプログラムの目的が、【キーボードからパスワードを入力して、データベースに接続】ならこれでもいいのですが、この先このプログラムを拡張する(「出席」「欠席」ボタンを押して出席率を変化せせるなどのイベントをつける予定です)ときに" JOptionPane.showInputDialog "だと都合が悪いと思い" JOptionPane.showInputDialog "を用いる必要があるなと感じました。上記で説明したデータの受け渡しがうまくいけば、拡張もできるのではないかと考えています。 長々と私の考えを載せてしまいましたが、重要な質問は【2つのプログラム間でのデータの受け渡し方法】です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
出席票システムの構成がどうなっているかにもよりますが... 質問の内容から想像すると、 ・パスワードを入力するクライアントとデータベースサーバの2台のマシンがある ・ブラウザ上のアプレットでパスワードを入力 ・データベースサーバ上のプログラムへパスワードを渡して、データベースアクセスを行う ということでしょうか? ブラウザ側の処理が、パスワード入力、ボタン(出席、欠席など)を押す、程度であれば、Webアプリケーションとして作成したほうが簡単だと思います。 ブラウザ上で表示する、パスワード入力画面、ボタンなどはHTMLのフォームで作成し、サーバ側は、Javaを使うのであれば、ServletやJSP等で作成します。strutsやVelocity等を利用しても良いです。 ブラウザ側で、座席表を表示して、出席している席と、欠席のところの表示を変えるなど、グラフィカルな表示を行いたい場合は、HTMLでは表現しきれない場合があるので、JavaやFlash等でクライアントを作るといいと思います。 元の質問に戻って、アプレットと、他のアプリケーション間で通信を行うには、ソケット通信で行います。(SOAPを使うともっと簡単に通信できますが、事前準備が色々あるので、初心者には難しいかも知れません) アプレットは、セキュリティ制限のため、アプレットのダウンロード元のサーバとしか通信できません。 ソケット通信のやり方については、参考URLを参考にしてください。 アプレットのダウンロード元のサーバのURLは、 getCodeBase() で得ることが出来ます。 サーバ側のservletを動かすには、tomcat 等のウェブアプリケーションサーバが必要となります。
その他の回答 (1)
- lv4u
- ベストアンサー率27% (1862/6715)
質問の趣旨に反するかもしれませんが・・・ このプログラム作成における優先順位が、 1)目的の出席票プログラムができること 2)Javaで作ること と、目的の達成が、Javaを使うことより高いようであるなら、Javaの使用は止めたほうがいいと思います。Javaは家電の組み込みシステム向けに作成された言語で、業務開発には難しすぎる&非効率で向いていないと思います。 特に、質問された「データの受け渡し」は、Javaの苦手な部分で、「たったこれだけの為に、なんでこんなに苦労せなあかんのや(恕)!」という気にさせられるところです。 これは、Javaの言語設計の問題ですので、いかんともしがたい・・。 ですので、C++かC#で作るほうが楽と思います。(IT業界を目指す場合も、今はこっちが有利でしょう) そして、Webでの利用を想定されているなら、最近、世界的に注目されている「Ruby on Rails」をお勧めします。これは、Webシステムの開発効率を10倍(場合によれば100倍?)以上も効率化してくれます。しかも、私たちがなかなか作れない、しっかりしたシステムができあがります。 ちょこちょことした作業で、確実に動作するシステムが作れるので、プログラミングが楽しくなりますよ。 「いや、絶対にJavaなんですゥ」であれば、Hashtableクラスを利用されるといいと思います。(もう何年もJavaをやってないので、もっといい方法があるかもしれませんが・・・) それでは、がんばってください。
お礼
Javaって、データの受け渡しが苦手なんですか(汗 lv4uさんにせっかくJava以外で設計したほうがよいと教えていただいたのですが、この課題は『Javaを使って』という前提なので、Javaで解くしかないんです(泣 がんばってみたいと思います。丁寧なご回答ありがとうございました。
補足
具体的なご回答ありがとうございます。 liwetさんに想像して頂いたとおりです。ただ、データベースはMySQLを利用してるためそれ用のマシンはありません。 パスワードの入力・出欠確認をすべてJavaプログラムによるAppletで解決しようとしていたので、ServletやJSPを使うことは考えていませんでした。その方向で考えてみたいと思います。