アプリ版:「スタンプのみでお礼する」機能のリリースについて

jsp サーブレットを勉強しています。
jspに入力された値を
サーブレットに投げます。
サーブレットからjavaクラスに値を投げて
javaクラスで値が正しいかどうかを判断します。
その結果をサーブレットに投げて、
サーブレットからjspに投げて
jspで結果を表示する。というのは理解できました。


しかし私が行いたいのは、
クライアントがjspにアクセスしたときに、
javaクラスにある値をjspに表示させたいというものです。
この場合はサーブレットに何も投げるものがないのですが、
jsp→サーブレット→javaクラス→サーブレット→jsp
このようにサーブレットを使って表示させるには、
どのようなプログラムを書いたらいいのでしょうか。


わかりにくい説明で大変申し訳ないですが、
具体的なプログラムを教えていただけるとありがたいです。
また、参考になりそうなURLがありましたら教えてください。

よろしくお願いします。

A 回答 (3件)

AJAXでやれば簡単です。

現場では日常的にこの手法を使ってます。

#例えば1番目のコンボの選択で2番目のコンボに表示するリストを
#DBを検索して決めるような場合

生の Javascript では手間が大きいので、
JQuery など、AJAX が手軽に使える Javascript ライブラリを
使うことをお勧めします。
    • good
    • 0

JSPからサーブレットに飛んで処理を実行してその結果をJSPに戻す、ということでしょうか。

それはそもそもの設計がよくないように思いますが……。

どうしてもというのであれば、JSPの中でサーブレットにHttpURLConnectionでアクセスする処理を書いて実行することになりますね。ただし余計なアクセスが増えて処理速度も遅くなるでしょう。

個人的には、サーブレットの処理をサーブレット外からも利用するということは、その処理をサーブレットから切り離すべきだろうと思います。サーブレットは、HTTPによるアクセスを処理するためのものですから、それ以外の形でのアクセスを前提に設計すべきではないでしょう。

例えば、実際に必要な処理部分は普通のJavaクラスに切り離し、サーブレットからその処理を呼び出すようにする。JSPでも、JSP内からそのJavaクラスの処理を呼び出す。このようにすれば、わざわざJSPからサーブレットを呼ぶ必要はなくなります。
    • good
    • 0

サーブレット内から、自分が作ったJavaクラスを利用するということでしょうか。

ただ利用するだけなら、new Hoge();でインスタンスを作って使えばいいだけですが……そういうことではない?

あるいは、Javaクラスのインスタンスを常時サーバー側に保持しておいて利用したい、ということでしょうか。そういう場合であれば、sessionやapplication(←JSPの暗黙オブジェクト)にnew Hogeしたインスタンスを保管しておき、それを常に利用するようにすればよいと思います。sessionやapplicationの使い方はわかりますか?

この回答への補足

回答ありがとうございます。

jspからサーブレットに処理を投げる時はGETやPOSTなどを使いますよね?
でも今回行いたいのは、JSPにアクセスした時にサーブレットに飛んで、そこからJavaのメソッドを実行し、実行してでてきた値をサーブレットに戻して、サーブレットから最初のJSPに渡して、表示させたいのです。
JSPにアクセスした時にサーブレットに飛ぶ方法ってありますかね?

補足日時:2012/11/14 11:17
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!