サーブレットで定義された文字列をJSPに渡して表示させるようにしたいのですが、
サーブレットからJSPへのデータの渡し方がよくわかりません。

参考書やWEBカンファレンスなどのサンプルを見るとすべてサーブレット、Beans、JSPの連携ばかりです。
そもそもサーブレットとJSPだけのWEBアプリケーションは作れないのでしょうか?
もしくは、Beansを使用したほうが何かと効率がいいからなのでしょうか?
どなたか是非教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

質問で書かれている Beans とは、EJB を指しているのですか?


それとも session で受け渡すときに使う jsp:useBean を言っている
のでしょうか?

> そもそもサーブレットとJSPだけのWEBアプリケーションは作れないのでしょうか?

そんなことはないです。Servlet だけでも、JSP だけでも WEBアプリケーションは
作成できます。それぞれ得意とすることがあるだけの話。


> サーブレットからJSPへのデータの渡し方がよくわかりません

session 経由で渡すことになります。

例えば、String なデータを渡す場合には、Servlet の方で、

HttpSession session = request.getSession(true);
String str; // ※ これを渡す
  ...
session.setAttribute("data", str);

とやり、JSP に forward します。JSP の方では、

<%
String str;
str = (String)session.getValue("data");
%>

って感じで受け取れます。
    • good
    • 0
この回答へのお礼

なるほど、sessionを使うんですね。
この場合だと、JSP側に <jsp:useBeans ... >
は、いらないんですよね?

ありがとうございます。

お礼日時:2001/08/22 10:01

なぜBeanを使用するのか。


作っているうちに分かります。
ソースは、どんどん肥大化していきます。
そうすると、面倒な部分や決まりきった部分は外だししたくなります。

おのずと、ユーティリティ系のメソッドを一つにまとめたBeanや、
データの固まりをBeanにしたgetter、setterを持つBeanを作りたくなります。

たとえば、DBのレコードを一つのBeanにして、そのままsessionにくっつけて
JSPに送り出したり・・とってきたDBのレコードをエラーチェックして、ブランクと0を置き換えたり、文字列の数字をintにしてみたり、intとStringと両方取得できるメソッドを付け加えたり。

この本はとてもBeanの重要性を教えてくれるし、オブジェクト指向の考え方をとても分かりやすく伝えてくれるので、是非読むことをお奨めします。

Javaの格言―より良いオブジェクト設計のためのパターンと定石
ナイジェル ウォーレン (著), Nigel Warren (原著), フィリップ ビショップ (著), Philip Bishop (原著), 安藤 慶一 (翻訳)ピアソン・エデュケーション ; ISBN: 4894711877

AMAZONのURLは下記

参考URL:http://www.amazon.co.jp/exec/obidos/ASIN/4894711 …
    • good
    • 0
この回答へのお礼

オブジェクト指向の真の目的であるリソースのコンポーネント化ですね。
構造化でいうところの共通モジュールを作るという感覚と同じことなんでしょうか。

Beansについての理解を深めたいと思っていたので、
紹介していただいた本を読んでみたいと思います。

ありがとうございました。

お礼日時:2001/08/22 10:20

こんにちは。



いつも教えてもらってばかりなので
知っている範囲のことだけ記入させていただきます。

Servlet+JSPのサンプルは以下のものを
参考にしました。
お役にたてれば幸いですが。。。

1.JAVAPRESS VOL.17

2.参考URL参照

参考URL:http://www-6.ibm.com/jp/software/groupware/tips/ …
    • good
    • 0
この回答へのお礼

IBMの樋口研究室のページは非常に参考になりました。
これで一通り理解できたかと思います。
これからも大いに活用していきたいです。
回答ありがとうございました。

お礼日時:2001/08/22 10:07

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QJSPとサーブレットとBean

とある参考書には
サーブレットからBeanを呼び、Beanからデータベースに接続して
JSPで表示する。と書かれています。
しかし、とあるサイトには
JSPファイルだけでデータベースに接続できるソース、
Beanを使用しなくてもデータベースに接続できるというソースが書かれていました。
Beanとは一体何なのでしょうか。と思うようになりました。JSPやサーブレットで接続することができるのであれば、Beanは不要なのでは?と思っています。
今、「Beanはデータベースに接続するだけのもの」としか理解できてなく、いまいちはっきりとしません。
Beanとは一体何なのでしょうか。
意見や参考できるサイトを教えていただけませんか、
よろしくお願い致します。

Aベストアンサー

Beanとは
汎用的に利用できる部品(クラス)で
下請けとして呼び出します。
だから必ず必要というわけではありません。

DB Beanはデータベースに接続するもので
呼び出すだけでその処理をしてくれます。

参考URL:http://msugai.fc2web.com/java/servlet/JavaBeans.html

QJSPとサーブレットの連携

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("windows-31j");
response.setContentType("text/html;charset=windows-31j");
PrintWriter out=response.getWriter();
request.setCharacterEncoding("windows-31j");
String st = request.getParameter("ti");
String s2 = request.getParameter("ho");
String s3 = request.getParameter("ke");
Connection con = null;
ResultSet rs = null;
Statement stmt = null;
try {
String url = "jdbc:mysql:///o?user=&password=2&useUnicode=true&characterEncoding=windows-31J";
con = (Connection) DriverManager.getConnection(url);
stmt = (Statement) con.createStatement();
String sql = "INSERT INTO o_tb(tiiki,houmon,keiyaku) VALUES('" + request.getParameter("ti")+ "','" + request.getParameter("ho")+ "','" + request.getParameter("ke")+ "') ";
int rss=0;
rss = stmt.executeUpdate(sql);
}catch (SQLException e){
out.println("SQLException:" + e.getMessage());
}

JSPから上記のサーブレットに値を渡し、DB格納までは上手くいきました。
ですが当然上記だと真っ白なサーブレットページが表示されるだけです。
JSPのボタンを押し→サーブレットでDB格納したら、またJSPページを表示させたいんですが、どうしたらいいですか??

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("windows-31j");
response.setContentType("text/html;charset=windows-31j");
PrintWriter out=response.getWriter();
request.setCharacterEncoding("windows-31j");
String st = request.getParameter("ti");
String s2 = request.getParameter("ho");
String s3 = request.getParameter("ke");
Connection con = ...続きを読む

Aベストアンサー

RequestDispatcher クラスを勉強してください。

これはサーブレットとJSPを連携させるクラスで、
サーブレット&JSPの基本中の基本です。

使い方はネットに解説が溢れてます。

それでは

Qサーブレット-サーブレットの通信で文字列を送りたいのですが

サーブレット間の通信で文字列(String)を送りたいのですが
うまく受け取れません。
URLEncoder.encodeをつかって変換して送り、
URLDecoder.decodeで受けとってます。お願いします。

Aベストアンサー

具体的に、どうなってしまうのかが分からないと、答え様がないですね。

(1)最初の文字列
(2)URLEncoder.encodeの結果
(3)URLDecoder.decodeの結果
が提示されていると、有力なヒントになるはず。差し支えなければご提示を。

Qサーブレットで使用しているBeanを通常のJavaプログラムで再利用したい

サーブレットで使用しているBeanを通常のJavaプログラムで再利用したいと考えています。

通常のJavaプログラムというのは
サーバにtelnetログインし javaコマンドで実行するプログラムを指します。

サーブレット側では、
JDBCを利用したコネクションプーリング(JavaBean)を使用しています。
通常のJavaプログラムでも、このBeanをimportして使用したいのですが、

実行時エラーとして、
Exception in thread "main" Backend start-up failed:FATAL:
Sorry, too many clients already

とエラー表示されます。
DBは postgres を使用しています。
使用するために必要な設定等わかりましたら教えてください。

コネクションプーリング(JavaBean)全文を記載したかったのですが、
字数制限に引っかかりましたので省略します。
必要あれば補足に記載します。

Aベストアンサー

> 通常のJavaプログラムでも、このBeanをimportして使用したいのですが

javaコマンドで実行する場合もプーリングが起こっているんですね。
では、Tomcat起動後は、コマンドラインでのpostgresへの接続は可能なのでしょうか?

> コネクションプーリングと同時接続件数とはどういう関係でしょうか?

ただ単にpostgresの同時接続数にプーリングのmax設定が合わせてあるだけだと思います。
プーリングのmax設定のほうが大きければTomcatnoログにエラーが出力されるでしょうし、小さければ上記のコマンドラインでの接続は可能だと思います。
イコールならば、ログ出力はないし、コマンドラインでの接続もエラーとなるはずです。

QサーブレットからBeanを呼び出すやり方

AccessのDB接続部分をjava Beanで作成し、それをサーブレット側から呼び出して実行したいのですが、サーブレットからBeanを呼び出すやり方がわかりません。
またBeanのプログラムは

http://www.atmarkit.co.jp/fjava/rensai/smartj02/smartj02_1.html#ap01

に書かれているものとほとんど変わらないものです。
初歩的な質問かと思いますがよろしくお願いします。

Aベストアンサー

EJBじゃなかったら、new して呼び出すだけじゃないの?
ダメ?
何を(どんな手段を)試してみましたか?


このカテゴリの人気Q&Aランキング

おすすめ情報