• ベストアンサー

JSPのインクルードアクションについて

AAA.jspというファイルの中で <jsp:include page="BBB.jsp" flush="true" /> とインクルードアクションでBBB.jspをインクルードしている個所があります。そのBBB.jspの中でresponse.addcookie()を使いたいのですが、正常に動作しません。不必要な個所は削除し、cookie発行の個所だけ残しても同じ結果です。JAVA初心者で改修を頼まれて困っています。漠然とした質問で申し訳ないのですが、どのような問題が考えられるでしょうか?宜しくお願い致します。

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

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

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

確かにすこし質問が漠然としすぎです。 JAVA_HOUSEメーリングリストなどで 質問の仕方を勉強した方がいいかも。 1.今回の問題ですが 上記のインクルードを行った JSPは表示されるがCookieがadd されていない、というのが問題ということでよろしい でしょうか? もし、そうではないならおしえてください。 2.1.の問題であっている場合、試してみたところ 先の回答のように<%@ include file="BBB.jsp" %> でうまくいくようです。 JSPのインクルード方法は二つあります。↓ http://www.atmarkit.co.jp/fjava/javafaq/jsp/jsp09.html 参照URLのとおり <jsp:includeでやっていると インクルード先に転送をするので 転送用のレスポンスにクッキーを追加することになります。 詳しくはわたしもわかってないんですが 多分このせいでうまくいかないんでしょうね。

LARK050502
質問者

お礼

ご回答ありがとうございました。 すいません・・勉強してきます・・・ 1のとおりJSPは表示されますがcookieがaddされない 状況でした。確かに<%@ include file="BBB.jsp" %> でインクルードすると巧くいきました。 成程、インクルード先へのレスポンスにクッキーを 追加していただんですね。

その他の回答 (1)

  • tachiwa
  • ベストアンサー率34% (25/73)
回答No.1

インクルードファイルの中でJSP構文が使われているなら、 <%@ include file="BBB.jsp" %> のようにincludeディレクティブを使ったほうがいいと思います。

関連するQ&A

  • JavaでStrutsを使用してJSP画面のインクルードを行う場合について

    JavaでStrutsを使用してJSP画面のインクルードを行う場合について 改修を行いたい画面では現在、他の画面をインクルードディレクティブを使用して呼んでいます。 今回、呼んでいる先の表示項目が固定でなく、条件により変更されるように変更したいと思っています。 しかし、インクルードディレクティブを使用すると、呼んでいる先の画面の表示項目に変数を使用できないときいたため、以下の修正を行い、変更後の画面を見たところ、呼んでいる先の画面が表示されていませんでした。 ・インクルードアクションを使用して呼ぶように変更 (AAA.jspは呼んでいる先のJSP名)) 変更前 (<%@ include file="AAA.jsp"%> 変更後 <jsp:include page="AAA.jsp" flush="true"> <jsp:param name="count" value="<%= count1 %>" /> <jsp:param name="count" value="<%= count2 %>" /> </jsp:include> ※count1,count2は、JSP内で定義している変数が設定されています。 と、変数を2つ使用しています。 、画面にエラーメッセージは表示されないため、原因について、記述内容を考えたのですが、改修を行った画面と呼んでいる先の画面は、同一フォルダ内にあるため、問題ないと考えています。 インクルードディレクティブからインクルードアクションに変更したのみで、ページのインクルードができなくなることってあるのでしょうか? それとも、インクルードディレクティブとインクルードアクションの違いは <%@ include file="AAA.jsp"%> と <jsp:include page="AAA.jsp" flush="true" /> だけではなく、別のところでも設定変更が必要なのでしょうか? 素人な質問で申し訳ありませんが、 ・インクルードディレクティブからインクルードアクションに変更するときに画面が表示されなくなった理由 ・インクルードディレクティブを使用して、呼んでいる先の画面から変数を取得する方法 のどちらかがわかる方いらっしゃいましたら教えてください。 ちなみに、 <jsp:include file="AAA.jsp" flush="true" /> だったとか、そういうミスはしていません。

    • ベストアンサー
    • Java
  • includeアクションのflush属性について

    質問があります。 現在JSP/サーブレットを学習中なのですが、どうしてもわからないことがあります。それは、includeアクションのflush属性についてなのですが、flush属性にtrueやfalseのどちらを設定しても、結果画面にその違いが反映されていなくてflush属性の役割が理解できません。まずは、 以下のサンプルをご覧ください。 ----------------------------------------------------- <%@ page contentType="text/html;charset=Shift_JIS" %> <html> <head> <title>include_action.jsp</title> </head> <body> <p>表示1</p> <jsp:include page="/morej/foo.jsp" flush="true"/> <p>表示2</p> </body> </html> ----------------------------------------------------- <%@ page contentType="text/html;charset=Shift_JIS" %> <html> <head> <title>foo.jsp</title> </head> <body> <p>こんにちは</p> </body> </html> ------------------------------------------------------------ 参考書には、flush属性は「インクルード前にレスポンスバッファを クリアするかどうかの指定。trueを指定した場合はクリアする。」 と記述されています。上記のサンプルの結果画面は -------------------------------------------------- 表示1 こんにちは 表示2 -------------------------------------------------- と表示されます。flush属性をtrueに設定すると、 インクルード前に出力バッファをクリアすると記述されているので、 「表示1」が表示されないことを期待したのですが、表示されてしまいます。もしかしたら、自分の認識が間違っているかもしれないので どなたか、flush属性の使い方を教えていただけませんでしょうか。 現在の環境は、windows vista home、jdk1.6.0_11、jre1.6.0、 Apache Tomcat/6.0.14、Eclipse Version: 3.4.1です。では、 よろしくお願いします。

    • ベストアンサー
    • Java
  • JSPでのincludeについて

    JSPからincludeでperlを呼び出したのですが、 perlのファイル内で記載したスクリプトがそのまま文字列として表示されてしまいます。 なにか設定する必要があるのでしょうか。 コマンドから直接perlを実行した場合は期待する結果が返ってくることが確認できました。 --------------------------------------------- ■test.jsp // perlを呼び出し <jsp:include page="test.pl" flush="true"></jsp:include> ■test.pl #!/usr/bin/perl print $result; exit; ■test.jspで表示される結果 #!/usr/bin/perl print "aaaaaaaaaaaaaaaa"; exit; ■期待する結果 aaaaaaaaaaaaaaaa --------------------------------------------- よろしくお願いします。

  • [JSP]ページの挿入!?

    JSPでページを挿入する際・・・ <jsp:include page="Menu.jsp" flush="true"> としますが、 たとえばRequestからファイル名を取得するにはどうすればいいでしょう? ↓これじゃだめですよね?だめでした。 ~/Test.jsp?target=Menu.jsp で、 <jsp:include page="<%= request.getParameter("target") %>.jsp" flush="true"> うぅぅん。

    • ベストアンサー
    • Java
  • 【JSP】include時のパス設定について

    JSPでincludeしたいファイルがあるのですが、外部サーバーのためhttp://から設定したいのですがドキュメントルートからのパスとなってしまい、 以下エラーとなりうまく実行できません。 The requested resource (/service名/WEB-INF/jsp/admin/http://~) is not available 指定したいのは以下のように単純に『http://yahoo.co.jp』を読み込んでほしいのです。 <jsp:include page="http://yahoo.co.jp" flush="true"></jsp:include> サーバーの設定などで解決できるものでしょうか。

  • [JSP]1Servletから複数フレームにパラメータ渡し

    HTMLの<frame>タグでaaa.jspとbbb.jspを同時に表示させています。 aaa.jspからのフォームの値をHOGEというServletで受取り、 処理したものをaaa.jsp・bbb.jsp共に反映(更新)させるにはどうすれば良いでしょうか? 現状、forwardを2回書いているのですが、下記の様に怒られてしまいます。 (エラー/java.lang.IllegalStateException: レスポンスをコミットした後でフォワードできません ) ============aaa.jspのフォーム=================================== <form name="a1" method="post" action="/HOGE"> <input type="submit" name="GO" value="go"> </form> ================================================================ ============HOGE (サーブレット)================================ public class HOGE extends HttpServlet { public void doPost (HttpServletRequest request, HttpServletResponse response){ //jspに渡すパラメータをセット request.setAttribute("pram1", "judy"); request.setAttribute("pram2", "mary"); //forward準備 ServletContext sc = getServletContext(); RequestDispatcher aaa = sc.getRequestDispatcher("/jsp/aaa.jsp"); ServletContext sa = getServletContext(); RequestDispatcher bbb = sa.getRequestDispatcher("/jsp/bbb.jsp"); try { aaa.forward(request, response); bbb.forward(request, response); //ここでエラー } catch (ServletException e) { } catch (IOException e) { } } } ============================================================== どなたかご存知の方いらっしゃいましたら御教授宜しくお願いします。

  • 違いを教えてください

    JSPには、 ディレクティブ <% include file = "guide.jsp"%> と、 アクション <% jsp:include page = "guide.jsp" flush = "true" %> の二種類のインクルードがあるのは分かるのですが、 分かりやすくいうと、どのような用途によって使いわけるのですか? ディレクティブのほうは、DB CONNECTというような、 JSPファイルを読み込む時に一度実行すればいいというようなものを インクルードしており、 アクションのほうは、JSPファイルの<BODY>部で、guide.jspのなかのものを 必要な時に呼び出したりしているみたいです・・・・ 自分ではそのように解釈したのですが、明確な答えが、本などを調べてみても いまいちピンとこないので、簡単な言葉で使い分けの用途があるのか、 それとも、それ以外の理由で、インクルードの仕方が違うのか、 教えて頂きたいです。

    • ベストアンサー
    • Java
  • JSPが表示されません

    Apache2+Tomcat4.1+j2sdk1.4.2_06+EclipseでJSPとサーブレットのページを作ろうとしています。 HTMLファイルのフォームの内容をJSPファイルに送り、ServletでDBと参照、登録という流れを作ろうとしています。 aaa.html(ユーザーがデータを入力) ↓(1)フォームの内容を転送 bbb.jsp((2)htmlからの入力をccc.classに中継、(7)返り値を表示) ↓(3)メソッド呼び出し ↑(6)返り値を返す ccc.class(重複の有無確認やDBへの登録メソッド) ↓(4)SQL ↑(5)結果 DB(PostgresSQL) 本に書いてあるのを真似たらlocalhost上ではちゃんと動くようになりました。 つまり、下記のようにaaa.htmlからの転送先をlocalhost:8080/bbb.jspに指定するとうまく作動します。 <form name="form1" method="post" action="http://localhost:8080/bbb.jsp"> しかしながらこれではローカルでしか使えないので転送先を相対パスで指定したらうまくいきません。 <form name="form1" method="post" action="../bbb.jsp"> 外部から参照できるURL(サーバのIPアドレス)でもダメです。 <form name="form1" method="post" action="http://***.***.**.**/bbb.jsp"> 症状としては.jspファイルの最初のHTMLの記述はちゃんと動いているようで画面の色等はちゃんと変わります。 <%.....%>で囲まれたJAVAの記述がまったく作動しません。 /work/org/apache/jspに発生する中間ファイルもlocalhostのときには出来るのですが相対パスにすると出来ません。 どうしたらいいのでしょうか? ひょっとしたらとても初歩的なことかもしれませんがご存知の方がいらっしゃいましたらご教授願いたいと思います。

    • ベストアンサー
    • Java
  • includeと#include

    他の人が書いた拡張子が.aspとなっている ファイルを眺めているのですが、その中に <!-- #include file="./Include/aaa.inc" --> <!-- include file="./Include/bbb.inc" --> という2種類の記述が存在していました。 前者は相対ディレクトリ指定でaaa.incというファイルを 読み込んで処理すると理解しておりますが 後者も同じ動作をするものなのでしょうか? 実行環境が手元にないため試すことも出来ず Net上を検索してもこれといったものが見つかりません。 どなたかご教授お願いします。

  • SAStrutsのアクションの反映に関して

    お世話になります。 SAStruts環境において、アクションを以下のとおり作成し、そのJSPファイルの出力がレスポンスとなるようにしているのですが、  @Execute(validator=true, input="input.jsp")  public String login(){   return "test_1.jsp";  } アクションのreturnの値を"test_2.jsp"に変更し、新たに/WEB-INF/view/配下に対象のJSPを作成したのですが、うまくファイル変更が認識されず、"test_1.jsp"が実行結果として表示されます。この設定ファイル以外に変更すべき箇所があるのでしょうか。"test_1.jsp"と記載されている箇所はアクションしかないので、困っている状況です。 変更を反映させる方法があればご教示頂きたいと考えております。

専門家に質問してみよう