• ベストアンサー

サーブレットとJSPの連携

サーブレットで定義された文字列をJSPに渡して表示させるようにしたいのですが、 サーブレットからJSPへのデータの渡し方がよくわかりません。 参考書やWEBカンファレンスなどのサンプルを見るとすべてサーブレット、Beans、JSPの連携ばかりです。 そもそもサーブレットとJSPだけのWEBアプリケーションは作れないのでしょうか? もしくは、Beansを使用したほうが何かと効率がいいからなのでしょうか? どなたか是非教えてください。

  • Java
  • 回答数3
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

質問で書かれている 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"); %> って感じで受け取れます。

techtak
質問者

お礼

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

その他の回答 (2)

  • kuro_73
  • ベストアンサー率28% (33/117)
回答No.3

なぜ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/4894711877/ref=sr_aps_b_1_1/249-1743423-8102726
techtak
質問者

お礼

オブジェクト指向の真の目的であるリソースのコンポーネント化ですね。 構造化でいうところの共通モジュールを作るという感覚と同じことなんでしょうか。 Beansについての理解を深めたいと思っていたので、 紹介していただいた本を読んでみたいと思います。 ありがとうございました。

noname#2205
noname#2205
回答No.2

こんにちは。 いつも教えてもらってばかりなので 知っている範囲のことだけ記入させていただきます。 Servlet+JSPのサンプルは以下のものを 参考にしました。 お役にたてれば幸いですが。。。 1.JAVAPRESS VOL.17 2.参考URL参照

参考URL:
http://www-6.ibm.com/jp/software/groupware/tips/kouza/vol14.html
techtak
質問者

お礼

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

関連するQ&A

  • java JSP/サーブレット

    Javaの参考書をやったのですが(参考書:やさ○いJava)、これはアプレットと聞きました。アプレットは現場では殆ど使われないと聞き、JSP/サーブレットは現場で使うと聞いたのでJSP/サーブレットをやっています。 でも、構文が少し違います。 *********************************** 例えば、Javaなら表示するときには System.out.printlnでしたが、 JSP/サーブレットでは違う構文です。 また、Javaならファイルが一つしかありませんでした。(コンパイルするとclassファイルができる) JSP/サーブレットは、スーパークラスやサブクラスは 別のファイルになっています。 ************************************ JSP/サーブレットはプログラム言語なんですか? JSP/サーブレットの中にもJavaの構文があるんですが、先にも述べたようにJavaと違う構文も含まれています。 ちょっと戸惑っています。 しかも、JSP/サーブレットに関する参考書が本屋さんで殆ど見られないのです。 お勧めの参考書などあればいいのですが、 数が少ないためか見当たりません。 それで、とりあえづ「10日で覚○るJSP/サーブレット」という本を買ったのですが、9割がたJSPです。 1割がサーブレットです。 こうなってくると意味がわからなくなってきます。 現場ではサーブレットと聞いていたのに、そのサーブレットが1割しか載っていない。え!?どういうこと!?更にはJSPとサーブレットの書き方も少し違うような気が・・・・。 もう何が何かさっぱりわからなくなってきました。 結局何を勉強すれば良いのか? そもそも、JSPとは?サーブレットとは? ネットで調べはしたもののピンときません。 現場でJavaをやりたいのですが、独学方法というか、 アドバイスを宜しくお願いします。

    • ベストアンサー
    • Java
  • jsp サーブレットについての質問です

    サーブレット初心者です 開発環境は eclipse http://servletmania.blog137.fc2.com/blog-entry-26.htmlのサイトをみてとりあえずサーブレットの サンプルを動かそうとしたところ動きません・・(泣く)。 サーブレット hoge/src/form_entry/InputServlet.java 入力フォーム hoge/webContent/WEB-INF/NewFile.jsp 入力確認画面 hoge/webContent/WEB-INF/NewFile1.jsp web.xml  hoge/webContent/WEB-INF/lib/web.xml コピペして貼り付けるだけだからエラーはどこにもなかったです 後は配置がおかしいのかと思います 単体でサーブレットのInputServlet.javaを動かしたところ404のエラーが出ています 他は単体でも動きます 動くようにどなたか助けてください

  • サーブレット/jspについて

    これまでVB系の開発を主に行っておりましたが、javaを学ぶこととなり、Eclipse3.4でwebアプリケーションの開発ができるレベルに達する事を目標に学習を行っております。「明解Java 入門編」という書籍を読んでjavaの記述の仕方を少し学びました。 次のステップとしてサーブレット/JSPを学びたいと考えているのですが、何かお勧めの書籍があればご紹介していただけないでしょうか? amazonにて一通り拝見したのですが、評価の高い書籍はどれも数年前の発刊だったり、Eclipseの操作の記述が無いのでは?というような不安で選ぶに選べません。 Eclipse3.4の機能を熟知しきれていなくともサーブレット/JSPを学びたいのですが良書があればご紹介いただけないでしょうか? 宜しくお願い致します。

    • ベストアンサー
    • Java
  • JSPファイルは参照できましたが、サーブレット不可

    JSPファイルは参照できましたが、サーブレットが上手く行きません Eclipse(Ver3)+Tomcat6を使用し、「サーブレット&JSP 逆引き大全」のコーディングを行っております。 JSPファイルは参照できましたが、サーブレットが上手く行きません 表示しようとすると下記エラーが出ます。 The requested resource (/myapp/Sample014/) is not available. ◎web.xmlの設定 [省略]・・・・・・・・・・・・ <servlet> <servlet-name>Sample014</servlet-name> <servlet-class>com.gokui.Sample014</servlet-class> </servlet> <servlet-mapping> <servlet-name>Sample014</servlet-name> <url-pattern>/Sample014</url-pattern> </servlet-mapping> [省略]・・・・・・・・・・・・ ◎ロケーション D:\Users\ueda\workspace\myapp\WEB-INF\web.xml ◎状態 ・http://localhost:8080/myapp/Sample015.jsp は表示される。 ・http://localhost:8080/myapp/Sample014/ は表示されず。 下記URLは参照したのですが、未解決です。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1158881041 http://www.javaroad.jp/bbs/answer.jsp?q_id=20100904015203906 アドバイス頂けると有り難いです。 宜しくお願い致します。

    • ベストアンサー
    • Java
  • JSPからサーブレットを呼び出す際に404エラー

    現在、tomcatでサーブレット/JSPの勉強をしています。 参考書に載っている、jspの入力画面で入力した値をサーブレットで受け取り、そのまま表示させるようなサンプルを作成しています。 JSPの入力画面は表示できるのですが、値を入力してサーブレットに移動する際、404エラーが出てしまいます。 ・ファイルの配置 basic |-input |...|-echo.jsp |-WEB-INF |...|-src |......|-input |.........|-EchoServlet.java |...|-classes |......|-input |.........|-EchoServlet.class |...|-web.xml ・echo.jsp内のサーブレットのパスに関する記述 <FORM ACTION="../servlet/input.EchoServlet"> ・web.xmlの記述 <servlet> <servlet-name>EchoServlet</servlet-name> <servlet-class>input.EchoServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>EchoServlet</servlet-name> <url-pattern>/servlet/EchoServlet</url-pattern> </servlet-mapping> tomcatの/confのinvokerのコメントは外していません。 過去の質問も調べてみて、上記の記述の辺りがおかしいのではないかと 思うのですが、、お気付きの点がありましたら教えて頂けないでしょうか。

    • ベストアンサー
    • Java
  • JSPからサーブレットを呼び出す際に404エラー

    現在、tomcatとeclipseでサーブレット/JSPの勉強をしています。 参考書に載っている、jspの入力画面で入力した値をサーブレットで受け取り、そのまま表示させるようなサンプルを作成しています。 JSPの入力画面は表示できるのですが、値を入力してサーブレットに移動する際、404エラーが出てしまいます。 ■eclipseのパッケージエクスプローラー basic |-WEB=INF/src |..|input |...|EchoServlet.java |-WEB-INF |..|web.xml |.|echo.jsp (WEB-INF直下に作成) ■echo.jsp内のサーブレットのパスに関する記述 <FORM ACTION="/servlet/EchoServlet"> ■web.xmlの記述 <servlet> <servlet-name>EchoServlet</servlet-name> <servlet-class>input.EchoServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>EchoServlet</servlet-name> <url-pattern>/servlet/EchoServlet</url-pattern> </servlet-mapping> ■EchoServlet.javaの記述 package input; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class EchoServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String msg = request.getParameter("message"); response.setContentType("text/plain; charset=Windows-31J"); PrintWriter out = response.getWriter(); out.println("message=" + msg); } } お気づきの点がございましたらご査収の程よろしくお願いいたします。

  • iアプリとサーブレットとの連携。

    iモードjava開発に対応したWebサーバーはいろいろと制限があると聞いたのですが、質問させて下さい。 ただ今、携帯向け(Docomo)スケジュール帳サーブレット開発をしようとしています。スケジュール帳の前に簡単なiアプリとの連携テストとして携帯画面にて文字を入力して送信ボタンを押すと、そのまま文字を返すというプログラム(iアプリ&サーブレット)を作ってみたところ『動作中にエラーが発生しました』と携帯画面にメッセージが出ます。WebサーバにTomcat3.3.1を使用しているのですが、Webサーバが悪いのか他に原因があるのかわからなくて困っています。どなたかよろしくお願いします。 windows2000Professional, j2sdk1.4.0_01

    • ベストアンサー
    • Java
  • サーブレット/JSPでブラウザのキャッシュを破棄したい!!

    現在、J2EEを使用したWebアプリケーションを運用しています。 そのシステムで、ブラウザのキャッシュが残っているために不具合が起きて困っています。 ブラウザのキャッシュを破棄すれば解決することが分かっていますが、お客様に毎回キャッシュを破棄させるわけにもいきません。 なので、サーブレットかJSP(なるべくサーブレット)で自動的にブラウザのキャッシュを破棄したいのです。 ブラウザ:IE6 Java:JDK1.4 どなたか、ご存知ありませんか?? ご存知の方、よろしくお願いします。

  • サーブレットになったJSPの文字化け

    ローカルサーバーでwebサーバーを構築し、tomcatでサーブレットを動作させています。 ブラウザからのJSPに対するリクエストでサーブレットに変換されたコードに文字化けした 無駄な文字が入っていて原因が分かりません。 Windows2000 professional(SP4) apache tomcat5.5 struts-1.3.5 ※投稿文字数の制限で一部掲載です。 <<WEB-INF/jsp/abc.jsp>> 1:<%@ page language="java" contentType="text/html; charset=UTF-8" %> <--- この行がサーブレットになると文字化け 2:<%@ page import="java.net.URLDecoder" %> 3:<%@ taglib uri="/tags/struts-bean" prefix="bean" %> 4:<%@ taglib uri="/tags/struts-logic" prefix="logic" %> ~中略~ <<work/org/apache/jsp/abc.jsp>> ~中略~ 93: out = pageContext.getOut(); 94: _jspx_out = out; 95: 96: out.write("・ソ\r\n"); <<------"・ソ"と文字化けした無駄な文字が入る 97: out.write("\r\n"); 98: out.write("\r\n"); 99: out.write("\r\n"); 100: out.write("\r\n"); 101: out.write("\r\n"); 102: // bean:cookie 103 javax.servlet.http.Cookie cdata = null; 103: ~中略~ "・ソ"の"・"部分のコードは"EFBB"となっています。また、"ソ"は半角カナの"ソ"です。 この文字化けした無駄なコードがブラウザにも表示されてしまい、レイアウトの崩れと なっています。原因・対処法がおわかりになる方、ご回答お願いします。

    • ベストアンサー
    • Java
  • サーブレットから別フレームのパラメータを取り出すことは可能でしょうか?

    はじめまして。 JAVA&サーブレット初心者です。 現在、サーブレット、JSPを使ったWEBアプリケーションの開発をしてお ります。 左右二つに分かれたフレームを持つWEBアプリケーションを作っています。 大まかな流れとしては以下の通りです。  (1)左側のフレーム(仮にleft.jspとします)からサーブレット  (仮にservlet1とします)を呼び出す。  (2)右側フレームに(1)の処理結果のJSP(right1.jsp)を呼び出す  (3)right1.jspでサーブレット(servlet2)を呼び出す。  (4)右側フレームに(3)の処理結果のJSP(right2.jsp)を呼び出す。  (5)right2.jspでサーブレット(servlet3)を呼び出す。  (6)右側フレームに(5)の処理結果のJSP(right3.jsp)を呼び出す。   上記のように左側フレームが固定で右側フレームのJSPがサーブ  レット処理によって切り替わるようなWEBアプリケーションを開発し  ています。    問題なのは、今回開発しているシステムの要件により、(5)で呼び出され るサーブレット(servlet3)内の処理で左側のフレーム(left.jsp)の入力 パラメータが必要だということです。  servlet1でleft.jspの入力パラメータをセッションオブジェクトに保管 し、servlet3でセッションオブジェクトから復元すれば実現は可能かと思 いました。  しかし、途中servlet2からの処理が大変重いものであり、セッションオ ブジェクトは一定時間がたつと無効になってしまうと聞いたのでタイトル のような方法を考えたのですが、見当がつかず、今回の質問に至りました。  request.getParameter("****"); ではもちろん取り出せないと思いますが、サーブレットで別フレームのパ ラメータを取り出すことは可能でしょうか?

    • ベストアンサー
    • Java

専門家に質問してみよう