• ベストアンサー

JSPからJSPへ情報を渡せる?

JAVA言語 JSPからの質問がございます。 JSPからJSPへと飛ばすときに、例えば  a.jspがありそのjspには変数Aと変数Bと変数Cがあります。 リンクをおした時点で条件をつけてA==4 なら、b.jspへ飛びその際変数Bをb.jspにわたす。  もしノットイコールならc.jspへ飛び、その際変数Cをc.jspにわたす。 なんていうことができるのでしょうか? もしできるようでしたら、お手数ですが例を打っていただけませんでしょうか?宜しくお願いいたします。

  • Java
  • 回答数4
  • ありがとう数7

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

  • ベストアンサー
回答No.3

こんにちわ。 仰っているのは、Aの値に応じてリンク先が変わり、且つ、値を遷移先のJSPに渡したいということですよね? でしたら遷移先については、 <% if (A == 4) { %> <a href="b.jsp">リンク</a> <% } else { %> <a href="c.jsp">リンク</a> <% } %> のようにAの値によってリンク先を変更して表示すれば良いと思われます。 あとは、値の渡し方ですが、方法は複数あるように思います。 一つは、セッションを使う方法。もう一つはURLにパラメータとしてつける方法。他にもあるかもしれません。 前者はセッションスコープに値を設定するのが一般的と思われます。 request.getSession().setAttribute("B", "Bの値"); で格納し、遷移先のJSPで request.getSession().getAttribute("B"); で取り出せます。 後者は、aタグのhrefに「b.jsp?B=3」とかにして、 request.getParameter("B"); で取り出せると思います。 「java セッション」とかで検索するとセッションに入れたオブジェクトの有効範囲(スコープ)などを解説してくれているサイトが見つかるはずです。 参考になれば幸いです。

aabbccddzz
質問者

お礼

とても素晴らしい意見ありがとうございます。 あなた様のご回答でなんとか次の段階へ進めそうです。 本当にありがとうございました。 ちょっとしたことですが、気づかないことや経験不足も生じて 疑問ばかり生じてしまいます。 調べてもうまく理解できない時は、 やはりこのような場でアドバイスを求めることが一番の近道と、 今回改めて感じました。 こんな私ですが、今後もここで質問させていただいた際には、 アドバイス宜しくお願い致します。

その他の回答 (3)

noname#49428
noname#49428
回答No.4

JSPは、クライアントに送信された時点でHTMLとなっているので変数は保持できません。 リンクをクリックした時に値を判定したいなら、JavaScriptでやる方法しかありません。 また、サーバーが持ってる変数をわざわざクライアントで送信する意味はほとんどありません。 それならば、セッションで実装するのがいいのではないでしょうか。

aabbccddzz
質問者

お礼

アドバイス本当にありがとうございます。 セッションの方法もありましたね。 ネットで調べたところ、やはり一般的なのはセッションでする方法 だということがわかりました。 アドバイスのおかげで、また少しずつ幅が広がりました。 今後もこの場で質問させていただいた際には宜しくお願いいたします。  

  • _ranco_
  • ベストアンサー率58% (126/214)
回答No.2

> サーブレットからJSPの流れ あなたのご質問に応じて、JSPからJSPへの流れとして答えを書いたつもりです。 <% if (A == 4){  request.setAttribute("A", "4"); //利用側でString -> int 変換  request. getRequestDispatcher("飛び先.jsp").forward(request, response); } %>

aabbccddzz
質問者

お礼

大変失礼いたしました。いろいろな作業していたので、 混ざってしまったのです。 あの、もしAという変数に4が入っていて、 <a href="?">A</a>のうように記述し クリックした時に A=4だったら~.jspに飛ぶようにするには やはりクリックした時にですから、リンクタグは必要に なるかとは思うのですが? アドバイスしてくださった <% if (A == 4){  request.setAttribute("A", "4"); //利用側でString -> int 変換  request. getRequestDispatcher("飛び先.jsp").forward(request, response); } %> でそのようなことはできますでしょうか? 何度も伺い申し訳ございません。

  • _ranco_
  • ベストアンサー率58% (126/214)
回答No.1

いちばんよくやる方法は、request.setAttribute()してforwardです。

aabbccddzz
質問者

お礼

専門家の方からのご回答ありがとうございます。とても助かりました。 サーブレットからJSPの流れはだいたいつかめました。 あと問題は、上記のa.jsp側の  リンクをおした時点で条件をつけて変数A==4  という、記述のしかたがいまいち頭の中でどのように書いて  よいのかわかりません。 なんでもよいので、お手数ですが、記述の仕方を教えていただけませんでしょうか?<a href>等をつかえばよいのでしょうか? 

関連するQ&A

  • JSPでの情報共有

    2つのJSPでお互いにint型の変数を情報共有したいのですが何か良い方法は無いでしょうか? JSPファイルAとBがあるとして、 int型変数はファイルAで定義し初期値を入れ処理をする。 Aで定義したint型変数をファイルBで読み込み変数に数を足し処理をし、Aに戻る。 AではBで変更された値を利用して処理をする。 繰り返し。 ということをしたいのです。以前質問したのですが、 application.setAttributeなどを使ってやろうとしていたのですが、int型ではうまくいかないので何か他に方法を考えています。どなたかご存知の方アドバイスよろしくお願いします。

    • ベストアンサー
    • Java
  • JSPの環境構築がうまくいきません(Tomcat5.5 J2SE5.0)

    恐縮ながら文字数ギリのためメモ帳にコピー改行お願いします。当方、PHPを少しかじった程度のプログラム初心者です。恥ずかしながら初歩の段階でわからず困っています。自分なりに試行錯誤してみたのですが完全にはまってしまいました。どなたかアドバイスをよろしくお願いします。J2SEとしてjdk-1_5_0_03-windows-i586-p.exeをインストールしました。ユーザー環境変数は、次のように設定【変数】JAVA_HOME【値】C:\Program Files\Java\jdk1.5.0_03【変数】CATALINA_HOME【値】C:\Program Files\Apache Software Foundation\Tomcat 5.5【変数】CLASSPATH【値】.;C:\Program Files\Java\jdk1.5.0_03\jre\lib;C:\Program Files\Java\jdk1.5.0_03\lib;C:\Program Files\Java\jdk1.5.0_03\lib\tools.jar;%CATALINA_HOME%\common\lib\servlet-api.jar;%CATALINA_HOME%\common\lib\jsp-api.jar;%CATALINA_HOME%\webapps\jsp10\WEB-INF\classes;【変数】PATH 【値】.;%JAVA_HOME%\bin;C:\Program Files\MySQL\MySQL Server 4.1\bin;C:\Program Files\Anchor\bin コマンドプロンプトの実行結果です。C:\>java -version★java version "1.5.0_03"Java(TM) 2 Runtime Environment, Standerd Edition (built 1.5.0_03-b07)Java HotSport(TM) Client VM (build 1.5.0_03-b07,mixed mode, sharing) 続いてTomcatのjakarta-tomcat-5.5.9.exeをインストール http://localhost:8080/ と入力しておなじみのTomcatのページを見ることができました。しかし JSP Examples をクリックして JSPの動作を確認しようとすると以下のようなページに・・★HTTPステータス 404 - /jsp-examples/type ステータスレポート メッセージ /jsp-examples/説明 The requested resource (/jsp-examples/) is not available.Apache Tomcat/5.5.9

    • ベストアンサー
    • Java
  • JSPでCのようにヘッダーファイルをインクルード

    JSPでCのようにヘッダーファイルをインクルード お世話になります。 JSPでウェブページを作成しています。 ページ読み込み部分で前のページからPOSTされた情報に対して、 条件式を使い「真」ならそのページを表示、 偽の場合にはresponse.sendRedirect("URL");で別ページへジャンプをさせようと考えています。 その際に条件の判定に定数を使用したいのですが、 その定数は他のページでも使用する場合があるため、 C言語のヘッダーファイルのように、 別ファイルを用意して使い回しをしたいのですが… //test.h----------------------------- #pragma once const int CHECK_NUM = 15; //----------------------------------- //test.c #include <stdio.h> #include "test.h" int main(){ int n = 10; if(n < CHECK_NUM){ //真 } else{ //偽 } return 0; } このようにすればC言語では外部にかかれた定数を使用することができると思うのですが JSP,JAVAともに未経験のため詰まっています。(目下勉強中です) JSPで同様のことをするにはどのようにしたらよいのか教えていただきたいです。 質問をするにあたり情報の不足などがあるかもしれません。 その際にはお手数ですが、解答にてご指摘いただけると助かります。 宜しくお願い致します。

    • ベストアンサー
    • Java
  • JSPでのパラメータ引渡し方法

    あるa.jspファイル内のフォームからボタンをクリックして b.jspを呼び出します。その際、フォーム上にあるテキストボックス等 の値ではなく、a.jsp内で使用した単なる変数をb.jspに渡したいと おもっております。 <Form action="b.jsp?param=value~ の様な形で、てっきりパラメータが送れるものとばかりおもっていたら、 b.jsp内でgetParameterを行うと何も受け取れませんでした。 通常、この様な事を行う時、どうしますか? よろしくお願いします。

    • ベストアンサー
    • Java
  • JSPについてご教授願います。

    JSPについてというかJAVAについて最近勉強しはじめた者です。 http://www.aiosl-tec.co.jp/java-start/chap07.html 上記URLに従い、tomcatをインストールしsampleJsp01.jspと言うリンクが表示されたまではできたのですが、リンク先をクリックすると 「HTTPステータス 404 - /aiosl-tec-JSP/ type ステータスレポート メッセージ /aiosl-tec-JSP/ 説明 The requested resource (/aiosl-tec-JSP/) is not available.」 と表示されてしまいます。どこがどうおかしいのかもわからず煮詰まっています。専門用語なども分からず、うまく説明できていないと思いますが、もしよければ教えていただけますでしょうか。お願いします。

  • JSPでのパラメータ値引き渡し方法

    現在、JSP画面上(a.jsp)にフォーム(テキストボックス)と、リンクラベル(アンカー)があり、 理由があり、テキストボックス内に設定した値(strData)をリンクラベルのリンク先のJSP画面(b.jsp)に 引き渡したいと思っております。現状(抜粋です) 、 <Input Type="text" name="dummy" value=<%=strData %>> <A href='b.jsp?PARAM="<%=strData %>"'>リンク</A> とやったのですが、うまくいきません。(b.jspではデータが空で取得されます。) よくよく考えると、このやり方だと、テキストボックスに値を設定しても strData変数には値が設定されないんですよね。きっと。 と思い、考えをあらため、能動的にテキストボックスの値を取得するメソッドがないかな? とAPIマニュアルを調べたのですが、よくわかりませんでした。 上記の実現方法を教えてください。

    • ベストアンサー
    • Java
  • jsp,servlet,beanの流れについて

    初歩の初歩の質問ですが、参考書等読んでいて混乱してしまっています。宜しくお願いします。 a.jsp(入力画面) a_servlet.java a_bean.java(setのみ) b.jsp(表示画面) b_servlet.java b_bean.java(get,setのみ) というファイルがある時のプログラムの流れは、 (1)a.jsp・・・画面を表示する。データを入力する。登録ボタンを押下する。 (2)a_servlet.java・・・(1)で登録ボタンを押下されたら、a.jspのデータを取得。a_bean.javaへ設定する。b.jspへ飛ぶ。 (3)a_bean.java・・・(2)によりデータが設定されている。 (4)b_servlet.java・・・a_bean.javaのデータを取得し、b_bean.javaに設定する。 (5)b_bean.java・・・(4)によりデータが設定されている。 (6)b.jsp・・・表示データをb_bean.javaより取得後、画面を表示する。削除ボタンを押下する。 (7)b_servlet.java・・・(6)で削除ボタンが押下されたらb.jspのデータを取得し、b_bean.javaへ設定する。 特にbファイルの処理順序で混乱しています。 上記のような流れで考え方は合っているでしょうか。 少々分かりずらいかもしれませんが、間違っていたら小学生でも分かるように教えてください。

    • ベストアンサー
    • Java
  • JSPで<A HREF=

    こんにちは。 JSPで 『url』 というストリング変数に サイトURLを入れ、 『name』 というストリング変数に サイトネームを入れています。値はシッカリ入っています。 <A HREF="<%= url%>"><%= name %></A> としたんですが、リンクしてくれません。 HTMLタグの中に <%= ~ %>タグを使ってはいけないのでしょうか? リンクを動的に貼りたいと思っています。上記の方法ではできないのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • リンク先がjspファイルなのですが、別窓で開きません。

     こんにちは。ご教示いただきたく、投稿させて頂きます。  ホームページを作っておりまして、リンク先を別窓で開きたいのですが、リンク先がJSPの時だけ、別窓で開くことができません。  色々と調べてみたのですが、原因がわかりません。。。  大変、お手数ではございますが、原因をご存知の方は、ご教示いただけないでしょうか。 例と致しましては、下記のような感じのタグを使っております。 <a href="index.jsp" TARGET="_BLANK">リンクボタン</a> OSは、windows2000で、IEは、6.0を使っております。  大変お手数ではございますが、ご返信お待ちしております。  

  • TomcatのJSP Examplesのページを開けません

    これからJSP・サーブレットを勉強しようと思っている初心者です。 Tomcatを起動しhttp://locaohost:8080でページは表示されるのですが、JSP ExamplesとServlet Examplesを開こうとすると、 The requested resource (/jsp-examples/) is not available. というメッセージがでて開く事が出来ません。 WindowsXP J2SE 環境変数は path C:\Program Files\Java\jdk1.5.0\bin;C:\Program Files\MySQL Server4.1\bin CATALINA_HOME C:\Program Files\Apache Software Foundation\Tomcat5.5 JAVA_HOME C:\Program Files\Java\jdk1.5.0 CLASSPATH C:\Program Files\Apache Software Foundation\Tomcat5.5\common\lib\servlet_api.jar; C:\Program Files\Apache Software Foundation\Tomcat5.5\common\lib\jsp_api.jar; C:\Program Files\Apache Software Foundation\Tomcat5.5\webapps\jsp 10\WEB-INF\classes に設定してあります。 初歩的な質問で申し訳ありませんが、よろしくお願いします。

専門家に質問してみよう