• ベストアンサー

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

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

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

  • ベストアンサー
回答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