![]() | ![]() |
|
11.5.他のファイルをインクルードする
11.5.1.ディレクティブによるインクルード 11.5.2.アクションによるインクルード 11.5.3.ディレクティブとアクションの違い | ||
![]() | ![]() |
![]() | ![]() |
|||||||||||||||||||||||||
11.5.他のファイルをインクルードする
11.5.1.ディレクティブによるインクルード
なには、ともあれとりあえずは実行してどんな感じになるのか、実験してみましょう。今回はJSPが二個ありますが、「http://localhost:8080/ex/ex11_5_1.jsp」を開きます。すると、下のように「ex11_5_1.jsp」の内容と「ex11_5_1-i.jsp」の内容を含んだ画面が表示されるはずです。 それでは、コードの説明をしていきます。 まず「ex11_5_1-i.jsp」のほうはなんら問題ないと思います。これは「out.println()」を用いて文章を出力しているわけですね。 次の「ex11_5_1.jsp」が今回の注目点です。まず5行目までは問題ないと思いますが。その次の6行目が重要です。これは<%@ %>を用いて「ex11_5_1-i.jsp」をインクルードしています。つまり、ここで「ex11_5_1-i.jsp」が実行されてその出力がこの部分に挿入されることになります。よって、出力結果は上のようになるわけです。
11.5.2.アクションによるインクルード
これを実行してみると、やはり先ほどと同じように出力されます。 それでは、コードの説明をします。 このJSPで上の「ex11_5_1.jsp」と異なっているのは6行目だけですよね。今度は「<jsp:include page="<ファイル名>" flush="true">」というものを使いました。この「<JSP:」から始まるタグはアクションタグといいJSPに対して動的に処理を行わせる場合に使用します。また、詳しくは後で説明しますが、このようにアクションタグを用いても他のJSPやhtmlをインクルードすることができます。
11.5.3.ディレクティブとアクションの違い
そしたら、先ほどの「ex11_5_1.jsp」と「ex11_5_2.jsp」の二つのファイルを実行してみましょう。 <ex11_5_1.jspの実行結果> <ex11_5_2.jspの実行結果> このように、上の「ex11_5_1.jsp」のほうは、インクルードファイルを変更したのにもかかわらず結果が反映されませんでした。しかしながら、「ex11_5_2.jsp」の方はちゃんと変更されましたよね? これはex11_5_1.jspのディレクティブではファイルはJSPがサーブレットにコンパイルされるときにインクルードされ、一つのサーブレットとして存在し、対するex11_5_2.jspのアクションの方では二つサーブレットとして存在しているものを、実行時にインクルードしているためです。 このように、一見同じ動作をするように見えるものも、実は内部的にはだいぶ異なっています。ちなみに、ディレクティブでインクルードしたJSPに変更を反映させるためにはインクルード元(ex11_5_1.jsp)の更新日時を新しくしてやる必要があります。 | ||||||||||||||||||||||||||
![]() | ![]() |
![]() | ![]() |
|
このドキュメントの間違い・誤字・脱字を発見された方は筆者までご連絡をいただけるとうれしいです。 また、私のわかる範囲でご質問にも答えようと思います。ご質問や疑問点がある方は気楽にメールをください。 | ||
![]() | ![]() |