- PR -

サーブレットから部分的に表示する方法

1
投稿者投稿内容
tt
会議室デビュー日: 2002/07/24
投稿数: 6
投稿日時: 2002-07-25 14:15
INPUTボックス、送信ボタン、DBを参照してつくるコンボボックスとで
画面を作っています。
JSPで画面を作って、コンボボックスの部分はEJBで作成したのですが、
エラー処理のことを考えればサーブレットの方がよいと
アドバイス頂きましたので、サーブレットでも
サンプルをつくってみました。

JSPに
<FORM name="test" method="POST" action=<%=サーブレットのURL %>>
<input type="hiddent" name="test" value="test">
</FORM>
<script>
 test.submit();
</script>

とかいて、サーブレットを呼んでみましたが、
サーブレットの中でoutputすると、新しいページが表示されて
他のINPUTボックスと一緒に表示できないことに気付きました。

部分的にサーブレットで表示させるには
HTMLをBeanに渡して表示するという手順を踏まなければ無理なのでしょうか?


[ メッセージ編集済み 編集者: TOOFAR 編集日時 2002-07-26 11:25 ]
miki
大ベテラン
会議室デビュー日: 2001/09/21
投稿数: 174
お住まい・勤務地: 東京都八王子市
投稿日時: 2002-07-25 14:41
>コンボボックスの部分はEJBで作成した

JavaBeanでしょ。

EJBとJavaBeanを混同するのは、
甘納豆と納豆を一緒にするようなものです。

http://java.sun.com/j2ee/ja/ejb/index.html

asip
ベテラン
会議室デビュー日: 2001/12/27
投稿数: 77
投稿日時: 2002-07-26 12:45
引用:

部分的にサーブレットで表示させるには
HTMLをJavaBeanに渡して表示するという手順を踏まなければ
無理なのでしょうか?


HTMLをJavaBeanに格納するという発想はやめたほうがいいですよ。
MVC(Model-View-Controller)アーキテクチャについて勉強しましょう!

Model(データ部) -> JavaBean
View(表示部) -> JSP
Controller(制御部) ->Servlet

で作成するのが現在のJAVA製大規模WEBアプリケーションの基本です。

[例]
JSP---------------------------------------------------------------
(1)JSPを表示する
(2)JSPでボタンを押すなどしてPOSTあるいはGETする。<--人による操作
Servlet-----------------------------------------------------------
(3)POSTあるいはGETされたデータを取得する。
(4)取得したデータを加工する。
(5)加工したデータをJavaBeanに格納する。
(5)JSPを呼び出す
JSP---------------------------------------------------------------
(6)JavaBeanからデータを取得し、表示する。

[ メッセージ編集済み 編集者: asip 編集日時 2002-07-26 13:04 ]
Paul
ベテラン
会議室デビュー日: 2002/04/30
投稿数: 75
お住まい・勤務地: 東京
投稿日時: 2002-07-26 13:17
> JSPで画面を作って、コンボボックスの部分はEJBで作成したのですが、
> エラー処理のことを考えればサーブレットの方がよいと
> アドバイス頂きましたので、
別スレッド「EJB内のエラー処理」拝見しました。アドバイスの理解が、全然違っています。もう一度、読み直してください。

「サーブレットのほうがよいですか?」という質問に、「そうですね」という答えが書かれています。
回答者はあなたの質問を、「EJBのエラー処理は、JSP内で行うよりサーブレットで行うほうがよいですか」という趣旨と解釈して、肯定しているのです。
また、アドバイスの趣旨は、「EJBのエラー処理は複雑なので、JSP内に記述するのではなく、ラッパーBeansを作成してその中で行うほうがよい。そしてJSPからは、このラッパーBeansを介してEJBにアクセスするほうがよい。」ということだったはずです。
それに対して、あなたは「エラー処理のことを考えると、EJBよりサーブレットで作ったほうがよい」と曲解しています。

さらにその後、結局あなたが利用しているのはローカルBeansであって、EJBではないということが判明したのではありませんか。
EJBを直接JSPから利用するのはあまり感心できるスタイルではないと私も思いますが、単なるJavaBeansであれば話は別です。

それはともかく、
> 部分的にサーブレットで表示させるには
> HTMLをBeanに渡して表示するという手順を踏まなければ無理なのでしょうか?
というご質問には、その趣旨を、「JSPページの中に、部分的にServletの実行結果を取り込むことは可能か?」と理解し、
「jsp:includeアクションを利用すれば可能です」とお答えします。
jsp:includeアクションは、javax.servlet.RequestDispatcherのinclude()に翻訳されるでしょう。
_________________
_/ K.Nakagome mailto:nakagome@nakagome.co.jp

[ メッセージ編集済み 編集者: nakagome 編集日時 2002-07-26 13:35 ]
tt
会議室デビュー日: 2002/07/24
投稿数: 6
投稿日時: 2002-07-26 18:23
asipさん、返答有難うございます。
みなさんのアドバイスをいかすことが出来ず、申し訳ありません。

[quote]-------------------------------------------------------
asipさんの書き込み (2002-07-26 12:45) より:
HTMLをJavaBeanに格納するという発想はやめたほうがいいですよ。
MVC(Model-View-Controller)アーキテクチャについて勉強しましょう!
-------------------------------------------------------------

今回作っているのが、単純な携帯のコンテンツなので、
レスポンスを優先するため、MVCをあまり意識していませんでした。
(実際、どれぐらいレスポンスに影響しているのか検証していませんが)

[quote]-------------------------------------------------------
asipさんの書き込み (2002-07-26 12:45) より:
(2)JSPでボタンを押すなどしてPOSTあるいはGETする。<--人による操作
-------------------------------------------------------------
例まで記述していただいたおかげで、今度はよく分かりました。
やっぱり、「人による操作」がないとServletって呼べないのですね。
スクリプトで「人による操作」なしで呼ぼうとしていましたが、
携帯電話ではうまくいきませんでした。

最初から表示されている必要がある、コンボボックスなんで、
「人による操作」なしでなんとかならないかと思って、
ごちゃごちゃしていました。

とりあえずやってみようと手探りで進めてきたのですが、
立ち止まって理論的に基礎も押さえないといけないことがよく分かりました。
しっかり勉強します。
tt
会議室デビュー日: 2002/07/24
投稿数: 6
投稿日時: 2002-07-26 18:26
nakagomeさん、返答有難うございます。

EJBとBeanの件、ご指摘頂き、ありがとうございます。
EJBを使用していると勘違いしたのは、
JBuilderで新規作成の際、オブジェクトギャラリーから
「Enterprise JavaBean」を選択したので、
深く考えずにこれがEJBだと思っていました。
JavaBeanの中のEnterprise版?と思っていたのに
全然別物とmikiさんに指摘を受けてから、参考書をじっくり読みました。

「EJBは多層アプリケーションアーキテクチャ向きの
 再利用可能なビジネスロジックコンポーネントです。」
「EJBの目的は、ビジネスロジックを再利用可能なサーバー側の
 コンポーネントにカプセル化することです。」

EJBの概要は、超初心者にはちょっと難しすぎました。
EJBとJavaBeanはどちらも「Javaベースのソフトウェアコンポーネント」ですが、
「EJBには、BeanコンテナやJSPタグを使って直接アクセスできません。」
とあって、アクセスできてるのに、おかしいな〜と思っていました。
まだ、ぼんやりしていますが、nakagomeさんの返答で、
だいぶすっきりしました。

[quote]--------------------------------------------------------------
nakagomeさんの書き込み (2002-07-26 13:17) より:
> 部分的にサーブレットで表示させるには
> HTMLをBeanに渡して表示するという手順を踏まなければ無理なのでしょうか?
というご質問には、その趣旨を、「JSPページの中に、部分的にServletの実行結果を取り込むことは可能か?」と理解し、
「jsp:includeアクションを利用すれば可能です」とお答えします。
jsp:includeアクションは、javax.servlet.RequestDispatcherのinclude()に翻訳されるでしょう。
---------------------------------------------------------------------

includeアクション、初耳ですけど、調べてみます。
アドバイス、有難うございました。
それから、ベテランのみなさんにご迷惑をおかけして、すみませんでした。

asip
ベテラン
会議室デビュー日: 2001/12/27
投稿数: 77
投稿日時: 2002-07-26 23:06
引用:

今回作っているのが、単純な携帯のコンテンツなので、
レスポンスを優先するため、MVCをあまり意識していませんでした。
(実際、どれぐらいレスポンスに影響しているのか検証していませんが)


JSP&Servletは"サーバサイド"なのでクライアントが携帯であることは
ほとんど関係ありません。単純なものであれば、わざわざMVCモデルにする
必要はないとも思います。

引用:

やっぱり、「人による操作」がないとServletって呼べないのですね。


HTTP通信の基本について勉強する必要がありますね。Servletに"人による操作"
が必要というわけではありません。

引用:

スクリプトで「人による操作」なしで呼ぼうとしていましたが、
携帯電話ではうまくいきませんでした。


Servlet&JSPが"サーバーサイド"であるのに対して、Java Scriptは
"クライアントサイド"です。

携帯で"スクリプト"はサポートされているのか?
サポートされているとすればどこまでサポートされているのか?

をきちんと調べたほうがいいですよ。
1

スキルアップ/キャリアアップ(JOB@IT)