秘密基地、どこに作った?

質問があります。
現在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です。では、
よろしくお願いします。

A 回答 (1件)

>インクルード前に出力バッファをクリアすると記述されているので、


>「表示1」が表示されないことを期待したのですが、表示されてしまいます。

違う違う。バッファというのは、インクルードするファイルを読み込む(どこかにある)任意のバッファ。前に使った内容などがバッファに残らないようクリアしてから読み込む、ということ。JSP本体の読み込みとは何の関係もない。

もともと、これは1.1の頃、常にバッファをクリアして動くように設計されていた。が、1.2からその必要がなくなった。そこで、1.1のときはflush=trueにするが1.2ではfalseにする、といった程度のもので、この設定によって実際の動作に何か影響を与えるようなことはない。
    • good
    • 1
この回答へのお礼

logger_man様へ
ご回答ありがとうございます。かなり勘違いをしていました。
勉強になりました。

お礼日時:2009/02/03 11:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報