JSP→Servlet間の連携 applicationオブジェクトの渡し方

このQ&Aのポイント
  • JSPとServlet間で値をやり取りする方法について教えてください
  • JSPでapplicationオブジェクトに値をセットする方法と、別のServletでその値を取得する方法について教えてください
  • JSPとServletでのデータの共有方法について詳しく教えてください
回答を見る
  • ベストアンサー

JSP→Servlet間の連携 applicationオブジェクトの渡し方

どうぞご教授ください。 ---JSP間で値を取得・セットするJSP---、 LocalCfBean cfbean = (LocalCfBean)application.getAttribute("myattr"); ・・・ application.setAttribute("myattr",cfbean); とセットしたcfbeanオブジェクトを別のServletで取り出したいのですが、 ---値を取得するServlet--- HttpSession session = req.getSession(); のような記述はどのようになりますでしょうか。オブジェクト取り出し部分を 具体的に教えていただけますでしょうか

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

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

  • ベストアンサー
noname#30871
noname#30871
回答No.1

こちらを参考にしてください。

参考URL:
http://ash.jp/java/webapp_scope.htm
hashio1
質問者

お礼

ServletContext sc = getServletConfig().getServletContext(); LocalCfBean cfbean = (LocalCfBean) sc.getAttribute("myattr"); if (cfbean == null) { cfbean = new LocalCfBean(); } sc.setAttribute("myattr", cfbean); 上記の記述で取得できました!サイトがとても参考になりました。ありがとうございました。

hashio1
質問者

補足

ご回答ありがとうございます。 私の質問の記述が少し違ってました。 JSP→Servletへのページ遷移ではなく、別のブラウザでServletを直接呼び出す場合に、JSP内でsetAttributeしたオブジェクトを共有したいのです。可能でしょうか?どうぞよろしくお願い致します。

関連するQ&A

  • Servlet-JSP のセッション管理

    すいません。 セッションというものを使ってみたいなと思い、 本などを、見よう見真似で下のようなものを作ってみましたが、 まったく動きません。どこがいけませんか? ーーservlet-ー HttpSession session = req.getSession(); if (session.isNew()) {  session.setAttribute("test","ssm3u"); } ーーforwardされるJSP-ー <% HttpSession session = request.getSession(); %> <%= (String)session.getAttribute("test"); %> "ssm3u"と出したいのですが、全然違うのでしょうか? 自分ではCookieを利用するセッション管理を作ったつもりです・・

    • ベストアンサー
    • Java
  • セッション管理

    度々の質問で申し訳ないです…。 「セッション管理」がどうしてもよく分かりません。 書籍やWeb上でいろんな説明を読んで頭では理解したつもりなんですが 実際使う段になるとつまづいてしまいます。 そこで質問です。 html → Servlret1 → JSP1 → Servlet1 → JSP2 → JSP3 このような遷移の中でセッション管理を行いたいと思っています。 今、JSP2までは無事にセッションオブジェクトに保存されたデータを 参照することができていますが、JSP2からJSP3に移るときに nullが渡されてしまうのです。 一度、Servlet1 へ制御を戻さなければだめなのでしょうか? 具体的なコードを以下に掲載します。 よろしくお願いします。 ========= Servlet1 でセッション開始 //セッションを得る HttpSession thisSession = req.getSession(true); //セッションに保存 req.getSession(false).setAttribute("Login","true"); ========= JSP2 で受け取る /* ここではちゃんと"true"が返ってきます。 */ //セッションオブジェクトから取り出す String login = (String)request.getSession(false).getAttribute("Login"); ========= JSP3 で受け取る /* ここで null が帰ってきてしまいます。 String login = (String)request.getSession(false).getAttribute("Login");

  • セッションを使ったint型の値の保持

    こんにちは。 少し文が長いですがよろしくお願いします。 AccessのDBから取得したint型の値を、セッションを使って保持したいのですが while(rs.next()){ String name = rs.getString("NAME"); int value = rs.getInt("VALUE"); HttpSession session1 = req.getSession(true); HttpSession session2 = req.getSession(true); session1.setAttribute("Name", name); session2.setAttribute("Value", value); dispatcher2.include(req, res); } のコードの session2.setAttribute("Value", value); でコンパイルエラー DBAccess.java [37:1] javax.servlet.ServletRequest の setAttribute(java.lang.String,java.lang.Object) は (java.lang.String,int) に適用できません。 がでてうまくいきません。 セッションを使ってint型の値の保持を行うにはどうすればよいのでしょうか?

    • ベストアンサー
    • Java
  • servletからjspへオブジェクトの配列情報を送る方法

    いつもお世話になっております。echo2002です。 さて、今回は以下のような処理を行いたいのですが、可能なのでしょうか? ”servletで作成したオブジェクトの配列をjspにforwardして表示させる” こんなような処理を考えています。 構成:FileListServletクラス, FileInfomationクラス, disp.jsp FileInfomationクラスではファイル名やファイルサイズなどの情報を持ち、 それぞれgetなどのアクセサメソッドを持つとします。 FileListServletクラスでの処理 FileInfomationクラスの配列を作成し、各情報をsetする。 HttpServletRequestにsetAttributeでFileInfomation情報を付加し、 disp.jspへforwardする。 ※以下の方法を考えています。 request.setAttribute("fileinfo1", fileinfo[0]); request.setAttribute("fileinfo2", fileinfo[1]); request.setAttribute("fileinfo3", fileinfo[2]); ・・・ (配列でsetAttributeできるのかわからなかったので、  とにかくファイルの数分setAttributeしてみました) getServletContext().getRequestDispatcher("/disp.jsp").forward(req, res) わからないこと: disp.jspでどのようにFileInfomationの情報を取得し、 内容を参照できるのかがよくわからないのです。 jspの暗黙オブジェクトrequestを使用して、request.getParameterをすると、 返ってくる値がStringのようなので、FileInfomationクラスにならないんですよね? 突っ込みどころ満載の質問かと思いますが、何かアドバイス頂ければと思います。 オブジェクトの配列をsetAttributeしてjspで読み出せる方法があれば、 それもご教授いただけますでしょうか。 よろしくお願いいたします。jsp難しいです・・・。

    • ベストアンサー
    • Java
  • ServletからJSPへのデータの受け渡し

    サーブレットにてDBから取得したデータをJSP側に受け渡しをしたいのですが、いろいろと本を読んだり、ネットで情報を調べたりしているのですが、配列データを受け渡す方法が良くわかりません。 どなたか、ココに説明されているHPがある!や、こうすればよいなどのアドバイスをいただければ幸いです。 自分で調べてみたところ以下のところまでは作ったのですが、この後がわからなくなってしまいました。 Servlet側 Enumeration enu_dat = vector.elements(); request.setAttribute("enu_dat", enu_dat); JSP側 session = request.getSession(true); Enumeration data_dat = (Enumeration request.getAttribute("enu_dat"); JSP側で受け取ったとき data_datは「null」 enu_datは「java.util.Vector$1@a2bd15」 のようになっています。

    • ベストアンサー
    • Java
  • Sessionについて

    Session管理について以下のページを参考にしました。 http://www.atmarkit.co.jp/fjava/javafaq/session/session04.html あるServletにおいて、(1)セッション開始後、 ( HttpSession session = request.getSession(true);) (2)セッションに値を格納・・・また、違うServletで (3)そのセッションに格納された値を取得・・・ といったやり方が載っていました。 よく、セッション管理についてまだ分かってないところが あるのですが、・・・ たとえば、Aサーブレットでセッションを開始し、 セッションに値を格納・・・・とします。 そのセッションに入れる値。。。というのを 「顧客ID」と「処理CD」の2つにしたい場合はどのような 記述になるのでしょうか?? 参考にしたページには //セッションに値を格納 UserInfo userInfo = new UserInfo(...); session.setAttribute("USER_INFO", userInfo); こんな感じで書いてるんですが、 これは、USER_INFOというキーワードでuserInfoを 値としてセットするということですよね? 顧客IDと処理CDを記述するときは、なにか それぞれオブジェクトが必要なんでしょうか?? よくわかってないです。 ・・・・すみません。よく意味がわかってないので 質問内容も中途半端だと思うのですが、 セッション管理について教えてください。

  • application暗黙オブジェクトでのint型情報共有について

    application.setAttributeとapplication.getAttributeを使ってint型変数の値を共有したいと思っています。 String型だとうまくいくのですがint型だとうまくいかないのです。 下記の上のソースはString型でのソースです。これの String storedData = "JSPサンプル"; の部分をint型に変えたいと考えています。 下のソースはint型に変えたのですが, Object型からint型にキャスト変換できないようなエラーが出て動きませんでした。 int型の変数を方法をapplication.setAttributeで使う方法はどうすればいいのでしょう? ご存知のかたいらっしゃいましたら教えてください。よろしくお願いします。 ----------------------------------------------- <%@ page contentType="text/html;charset=Shift_JIS" %> <html> <head><title>Sample</title></head> <body> <% //applicationオブジェクトに保存 String storedData = "JSPサンプル"; application.setAttribute("appdata",storedData); //applicationオブジェクトから読み出し Object readData = application.getAttribute("appdata"); String readDataString=(String)readData; %> applicationオブジェクト保存データ:<b><%= readDataString %></b> </body> </html> ----------------------------------------------- <%@ page contentType="text/html;charset=Shift_JIS" %> <html> <head><title>Sample0</title></head> <body> <% int storedData = 10; application.setAttribute("appdata",storedData); //applicationオブジェクトから読み出し Object readData = application.getAttribute("appdata"); int readDataString=(int)readData; %> applicationオブジェクト保存データ:<b><%= read %></b> </body> </html>

    • ベストアンサー
    • Java
  • Sessionについて

    今、JSPを用いてログイン画面を作成しているのですが、Sessionの使い方がいまいちわかりません。 HttpSession ses = request.getSession(); ses.setAttribute("id",id); これでSessionに格納するのはわかりますが Sessionから値を取り出す方法がわかりません。 どなたか助けてください

    • ベストアンサー
    • Java
  • JSPとservletについて質問です。

    よろしくお願いします。 jsp→servlet→jsp の順で入力画面→getPatameterで値をゲットして一度 setAttributeでその値をforwardで次のjspにやろうと したいのですがどうしてもservletのところで java.lang.NoSuchMethodErrorが出てしまいます。 その行を見てみるとforwardの場所出ているようです。 そこで、最後のjspをservletにしてやってみると今度はエラー出ずに、表示されるのですがすべての値がnullになってしまいます。 二番目のservletの場所で試しに表示してみると表示されるので渡す時にうまく渡っていないみたいです。 因みにdoGetメソッドを使用していて、一番最後のservletのところのアドレスを見てみるとちゃんと値を 渡しているみたいです。 もうかれこれ5日間程ずっとここでつまっていてもうどうしたらいいのか分かりません。 どなたかアドバイスをお願いします。

    • ベストアンサー
    • Java
  • セッション属性

    HttpSession 属性に HashMap がバインドされています。 そこで、HttpSession の getAttribute で取得した HashMap オブジェクトで、任意のキーにバインドされている値をgetして、putで入れなおして変更すると、 結局、セッション属性にバインドされている HashMap の値が更新されることになる。 (setAttribute メソッドは使わない) 上記は正しいですか? とりあえず、簡素に質問しました。

専門家に質問してみよう