javascriptの勉強中です。
javascriptでajaxを用いてjavaのメソッドにアクセスし、結果をjavascriptに返す、という実装をしたいのですが上手く行きません。
流れとしては以下のようなものを想定しています。
js
/project/WebContent/js/testJS.js(画面の値を引数としてtestJavaクラスのtestMethodメソッドを呼び出す)
↓
java
/project/src/java/jp/co/application/util/testJava.java(受け取った引数の値をtestDAOクラスのtestDAOMethodメソッドに渡す)
↓
java
/project/src/java/jp/co/application/dao/testDAO.java(受け取った値を用いてDBにアクセスし、結果をjsに返す)
まず技術的に、同じプロジェクト内のjavaメソッドをjs上で呼び出し、結果を受け取るということは可能なのでしょうか。
ご教示お願いします。
No.5ベストアンサー
- 回答日時:
#3 です。
> 「javaを使わない」という条件だと、XMLのリクエストのみで実現は可能でしょうか。
DB上にあるデータを全てXML化して置いておけば出来なくはありません。
ただ、その場合は静的データ(XML)で管理することになるので、DBを使用する意味がなくなると思うのですが…。
DBを利用するならサーバサイドスクリプトの存在は必須です。
1. DBの内容をサーバ意サイドスクリプトで出力
2. 出力データを JavaScript で受け取り、カレンダーに描画する
このような処理が必要になります。
出力データのフォーマットは JSON, XML 何でも良いですが、JavaScript で認識しやすいデータが望ましいですね。
DBデータがあらかじめキャッシュして置ける内容なら初めからJavaScriptに全データをObjectとして渡しておくのが理想だと思います。
月が変化する毎にリクエストを発行する必要がなくなりますので、コードを単純化できます。
その場合は、カレンダーを出力するHTMLをサーバサイドスクリプトで書いて、JSONを出力しておくのが楽な実装ですね。
# Re: mifu223さん
非常に参考になりました!ありがとうございます!
他の方もベストアンサーにしたいところですが、一番参考になったthink49さんの回答をベストアンサーとさせていただきました。
皆様貴重なお時間を割いてくださり誠にありがとうございました。
No.4
- 回答日時:
>「javaを使わない」という条件だと、XMLのリクエストのみで実現は可能でしょうか。
「XMLのリクエストのみで実現」は不可能です。
XMLのリクエストを送ったとして、そのリクエストの応答は何がどうやって返すんですか?
サーバーサイドでリクエストを受け取った後、リクエストの内容を勝手に解析して意図をくみ取りOracleデータベースにアクセスして応答を返す、何て事はやってくれませんよ。
javaである必要はありませんが「リクエストの内容に応じてOracleデータベースにアクセスし応答を返す」というサーバーサイド側のプログラムを作らないことにはどうしようもないです。
No.3
- 回答日時:
testJava.java という事はコンパイル出来てないと思うのですが、JavaアプレットでもJavaサーブレットでも良いのでコンパイルしてください。
コンパイル言語はコンパイル前のソースコード状態(*.java)では実行できません。
Javaアプレットの function を JavaScript から呼び出す方法は下記URLに載っていました
http://www1.inacatv.ne.jp/suisyagoya/cooperation …
最も、Javaアプレットは訪問者にpluginのインストールを強要する上、流行っていないためにあまりお勧めしません。
サーバ側に環境が必要ですが、Javaサーブレット(JSP)であれば訪問者へのインストール要求はなくなります。
XMLHttpRequest で JSP へHTTPリクエストを要求してJSPから結果を出力するように実装してください。
# Re: mifu223さん
この回答への補足
皆様回答ありがとうございます。
やはりjavascriptとjavaそれぞれが実行されるタイミングが違うので簡単には実現できないのですね。
後だしで申し訳ございませんが、
/project/WebContent/js/testJS.js
は月毎のカレンダーを生成するプログラムで、
前後の月のボタンを押すと前後の月のカレンダーを表示するというものです。
ここで、月を移動したときやカレンダーを呼び出したときにOracleのDBのテーブルから
休日や祝日のスケジュールを呼び出し、その日の背景を赤塗りにするというのが最終目標です。
月が変わるごとに通信を行ってデータを受け取りたい(jsから該当の年月を渡してそれを元にその月の休日と祝日を取得したい)のでjsp上の実装ではなくjs上で行いたいという状態です。
「javaを使わない」という条件だと、XMLのリクエストのみで実現は可能でしょうか。
No.2
- 回答日時:
>まず技術的に、同じプロジェクト内のjavaメソッドをjs上で呼び出し、結果を受け取るということは可能なのでしょうか。
それがWebからアクセス可能な形で公開されて入れば可能です。Ajaxというのは非同期で指定のアドレスにアクセスする機能です。すなわち、アクセス先がHTTPプロトコルでアクセス可能でなければいけません。
testJava.javaというのは、どういう形のプログラムでしょうか。サーブレットですか? ならば、サーブレットが公開されているアドレスにAjaxでアクセスして下さい。
ただのクラスである場合は、それを利用するサーブレットを作成し公開して下さい。そしてそのサーブレットの中から必要なメソッドにアクセスするようにして下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
字面がカッコいい英単語
あなたが思う「字面がカッコいい英単語」を教えてください。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
JavaScriptからJAVAクラスを呼び出す
JavaScript
-
Javascriptの値をJava(JSP)へ渡す方法
Java
-
フォーム上で押されたボタンによってサーブレットの処理を変えたい
Java
-
-
4
JavaScriptの変数をjavaのメソッドの引数に渡す
JavaScript
-
5
javaScriptの変数をJavaの変数に代入する。
JavaScript
-
6
JSPのクラスをコンパイルできない問題
Java
-
7
データ数をカウントしたいのですが
Java
-
8
count(*)で取得した値をJAVAの変数に代入するには?
Java
-
9
javascriptでセッションを取得
JavaScript
-
10
遷移元を判定したい!
Java
-
11
JSPやサーブレットでSystem.out.println()などでコンソールに出力できますでしょうか?
Java
-
12
正しいURL指定しているにもかかわらずJSPファイルにアクセスできず「404エラー」が発生
Java
-
13
JSPの処理の途中で、JavaScriptの処理をしたい
JavaScript
-
14
複数のフォームを一括で送信することは可能ですか?
HTML・CSS
-
15
オブジェクトの中のプロパティを認識できません
Java
-
16
jspでjavascript関数へ引数を渡す方法
Java
-
17
jspにcssを反映させるには
HTML・CSS
-
18
テキストボックスの入力をリセット
JavaScript
-
19
[JAVA]try 内の変数を外で!?
Java
-
20
CASE文のエラーについて
Oracle
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
配列のメソッド
-
JSPで<SELECT>の中にDBから持っ...
-
DataGridViewでセルクリックイ...
-
VB.netで、シリアル通信のタイ...
-
タブコントロールの問題 (VB)
-
mainメソッドのthrows節で設定...
-
eclipse-Tomcatでのデバッグに...
-
VBA/FIND関数を使っての先頭文...
-
エクセルVBAにおけるON TIMEメ...
-
処理内容がほぼ同じメソッドの...
-
ヘルパーメソッドとはなんですか?
-
worksheets & rows メソッドは...
-
ワード内のテキストボックス文...
-
Refreshメソッドの使い方
-
javascriptからjavaを呼び出したい
-
【sendkeysメソッドが動かずに...
-
列挙型:次の要素を返す?
-
「CA2202: オブジェクトを複数...
-
PropertyGridの中央の縦線
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
DataGridViewでセルクリックイ...
-
final修飾子を使っているのに、...
-
javascriptからjavaを呼び出したい
-
Labelコントロールに数字を代入...
-
VBPをダブルクリックするとたま...
-
vbaエクセルマクロ RemoveDupli...
-
【sendkeysメソッドが動かずに...
-
mainメソッドのthrows節で設定...
-
エクセルVBAにおけるON TIMEメ...
-
Refreshメソッドの使い方
-
onClickで関数呼出し後に、結果...
-
ウィンドウを最前面にできません
-
JSPで<SELECT>の中にDBから持っ...
-
コマンドプロンプト実行後に画...
-
Application.Wait の参照設定
-
Excel VBA でExcelを終了したい...
-
配列のメソッド
-
エクセルのマクロでプリンタを...
-
Excel VBA シェイプの原型のサ...
おすすめ情報