- PR -

JSPでBeanの中身を使用するには…

投稿者投稿内容
ペコ
会議室デビュー日: 2003/08/14
投稿数: 7
投稿日時: 2003-08-14 14:27
はじめまして。ペコです。

今、JAVAの勉強をしています。
まだ、初めて間もない故基本的なところで躓いてしまっています…
ものすごく、初歩的な質問なのですがサーブレットの中でSQL(SELECT文)を発行して
取得したデータをBeanに格納し、Sessionに入れました。

次に、サーブレットからJSPを呼びそのJSPの中で格納してあるBeanの中身を読んで
画面上に表示したいと思っています。
以前のスレッドなどをいくつか読ませてもらったのですが、
Tomcat4.xxではBeanをパッケージとしてJSPの頭の部分でimportせねばならぬ、と
いうように解釈しまして、頭一発目に以下のように記述してみました。

コード:
<%@ page language="java" pageEncoding="Windows-31J" contentType="text/html; charset=Windows-31J" %>
<%@ page import="java.util.*,<b>MasterBean</b>" %>



しかし、これでJSPを呼び出して見るとコンパイルエラーとして下記のように言われてしまいます。

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: JSPのクラスをコンパイルできません

JSPファイル: null の中の行: -1でエラーが発生しました

生成されたサーブレットのエラーです:
[javac] Compiling 1 source file

C:\Tomcat 4.1\work\Standalone\localhost\ServletSample\choice_jsp.java:8: '.' がありません。
import MasterBean;
^
エラー 1 個

これは、<%@ page import="java.util.*,<b>MasterBean</b>" %>の部分の書き方が間違っているということになるのでしょうか…?

つたない文章&質問の仕方が下手かも知れませぬが、どうかご教授の方、お願いいたします。
(株)ぽち
ぬし
会議室デビュー日: 2002/09/10
投稿数: 376
投稿日時: 2003-08-14 14:41
こんにちわ。

<%@の中に<b>***</b>のようなものを入れては
めちゃくちゃになりそうなのですが、

例)jp.hoge.BeanクラスがBeanであった場合

 <%@ page import="java.util.*, jp.hoge.Bean" %>

で良いのではないですか?

では〜。
たーぞう
ぬし
会議室デビュー日: 2003/08/08
投稿数: 317
お住まい・勤務地: お花畑
投稿日時: 2003-08-14 14:57
JSPで使用するJavaBeansの指定は、pageディレクティブではなく、jsp:useBeanタグで行うのが適当ではないかと。

<%@ page import="java.util.*" %>
<jsp:useBean id="MasterBean" class="<MasterBeanのクラス名>" />

でいいのでは?

-----------------------------------------------------------------以上第1稿 ^^;

importはimportでちゃんと指定しなきゃいけませんでした^^;
それからscopeの指定も。

<%@ page import="java.util.*, <MasterBeanのクラス名>" %>
<jsp:useBean id="MasterBean" class="<MasterBeanのクラス名>" scope="session" />


[ メッセージ編集済み 編集者: たーぞう 編集日時 2003-08-14 15:32 ]
ペコ
会議室デビュー日: 2003/08/14
投稿数: 7
投稿日時: 2003-08-14 15:27
(株)ぽち様、ご返答ありがとうございました。

Σすみません!
気になる部分を太字にしたかったのですが、つい、HTML感覚にしてしまいました・・・
ここでは「[B]→太字」なのでしたね・・・

(株)ぽち様の教えてくださった通りにしたところ、成功いたしました。
本当にありがとうございました!

……更に単純なことをお聞きしてもよろしいでしょうか…
現在、「MasterBean.java」というサーブレット(?)がございまして、これの中に
セッターやゲッターが書かれています。

そして、Beanの中身を表示させたいのが「choice.jsp」というJSPでこのJSPを呼んでいるのが
PreProcess.javaというサーブレットです。

このサーブレットで
コード:


//JavaBeans(MasterBean)のインスタンス作成
MasterBean bean = new MasterBean();

//Beanに値の設定
bean.setName(alistName);
bean.setPrice(alistPrice);
bean.setImage(alistImage);

//sessionにbeanを格納
session.setAttribute("beanmaster", bean);




こう、記述しています。
となりますと、「MasterBean.javaクラスのbeanmasterがBeanである」という考えで
良いのでしょうか…?
すいません、本当下らぬ質問かもしれませぬが…;;


たーぞう様ご返答ありがとうございました。

はい。その「<jsp:usebean」タグの存在は調べていたのですが、
このようなスレッドも拝見しましたので、あえてPageディレクティブで
記述してみました。

ちなみに、自分が使っているのはTomcat4.1でしたので…

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=2444&forum=12

[ メッセージ編集済み 編集者: ペコ 編集日時 2003-08-14 15:33 ]
(株)ぽち
ぬし
会議室デビュー日: 2002/09/10
投稿数: 376
投稿日時: 2003-08-14 16:32
引用:

ペコさんの書き込み (2003-08-14 15:27) より:
となりますと、「MasterBean.javaクラスのbeanmasterがBeanである」という考えで
良いのでしょうか…?
すいません、本当下らぬ質問かもしれませぬが…;;



そうですね、MasterBeanクラスが「Bean」になりますね。


引用:

たーぞう様ご返答ありがとうございました。

はい。その「<jsp:usebean」タグの存在は調べていたのですが、
このようなスレッドも拝見しましたので、あえてPageディレクティブで
記述してみました。

ちなみに、自分が使っているのはTomcat4.1でしたので…

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=2444&forum=12

[ メッセージ編集済み 編集者: ペコ 編集日時 2003-08-14 15:33 ]



僕はあまり<jsp:>は使用しない人間なので・・。
ぶっちゃけ好みの問題なのかなと思っておるのですが・・。

もちろん<jsp:>でも可能ですよ。
パルプ
ベテラン
会議室デビュー日: 2003/06/18
投稿数: 59
投稿日時: 2003-08-14 17:07
ペコさん、こんにちわ。スガです。

引用:

ペコさんの書き込み (2003-08-14 15:27) より:

となりますと、「MasterBean.javaクラスのbeanmasterがBeanである」という考えで
良いのでしょうか…?



setAttribute()の引数は、(属性名,オブジェクト)ですので、
ペコさんの例だと、beanというオブジェクトをbeanmasterという属性名で
リクエストの属性にセットしてるって感じになると思います。
あとは、JSPでこのリクエストを受け取って、beanmasterという名前でアクセスして
いろんな値を使っちゃう感じでしょうか…(説明ヘタですいませんっ!)

この辺のMVCの流れって慣れちゃうとそうでもないんですけど、
初めてのときは私もかな〜りつまづきました。
ペコさん、がんばってください!
たーぞう
ぬし
会議室デビュー日: 2003/08/08
投稿数: 317
お住まい・勤務地: お花畑
投稿日時: 2003-08-14 17:23
まぁ確かにjsp:タグなんて使わなくてもスクリプトレットで記述すれば動くわけですが・・・
でもやっぱそれじゃJSPの機能を駆使しているとは言い難いような^^;
ペコ
会議室デビュー日: 2003/08/14
投稿数: 7
投稿日時: 2003-08-14 17:26
(株)ぽち様、度々のご返答ありがとうございます。

引用:

(株)ぽちさんの書き込み (2003-08-14 16:32) より:

僕はあまり<jsp:>は使用しない人間なので・・。
ぶっちゃけ好みの問題なのかなと思っておるのですが・・。

もちろん<jsp:>でも可能ですよ。



なるほど。
自分は、てっきりTomcat4.xx以降では<jsp:>タグを使うと動きがおかしくなってしまう、と
ばかり勘違い&早とちりをしていたようです。

ありがとうございました。
無事、目的のBeanよりデータを取り出し、JSP上に表示する、という動作ができるように
なりました。



スガ様、コンニチワ。
ご返答、ありがとうございます。

引用:

setAttribute()の引数は、(属性名,オブジェクト)ですので、
ペコさんの例だと、beanというオブジェクトをbeanmasterという属性名で
リクエストの属性にセットしてるって感じになると思います。
あとは、JSPでこのリクエストを受け取って、beanmasterという名前でアクセスして
いろんな値を使っちゃう感じでしょうか…(説明ヘタですいませんっ!)

この辺のMVCの流れって慣れちゃうとそうでもないんですけど、
初めてのときは私もかな〜りつまづきました。
ペコさん、がんばってください!



温かいお言葉ありがとうございます!
そうなのです。MVCの流れ、というのがまだいまいちしっくりと理解できていない節があり
この動作はどれ(サーブレット、JSP、Bean)に任せればいいのだろうか?と
しょっちゅう考え込んだりしています。

皆様のご意見や、また他のスレッドなどを活用して今の課題をなんとか乗り切ろう、と
思っている次第でございます。

皆様へのレス---

おかしな点等、ありますれば是非再び、ご教授願えれば、と思っております。

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