- PR -

pageディレクティブのcontentType

1
投稿者投稿内容
amuro
会議室デビュー日: 2002/12/13
投稿数: 5
投稿日時: 2003-05-14 16:43
お世話になります。

JSPで共通処理をheader.jspに記述して
それをbody.jspで<%@ include file="header.jsp"%>と
最初に取り込むようにしています。

<%@ page contentType="text/html; charset=Shift_JIS"
pageEncoding="Shift_JIS"%>
という記述はどのJSPでも共通なので
body.jspではなく、header.jspに記述しようと考えました。
しかしそうするとbody.jspの表示時に日本語が文字化けしてしまいます。
それで上記の指定をheader.jspからbody.jspに移したら文字化けしなくなりました。

includeディレクティブを使用した場合はすべてのファイルを
インクルードしたものが1ファイルとしてコンパイルされるという認識でいましたので
header.jspでcontentTypeを指定しても大丈夫かな?
と考えていましたが、それはできないのでしょうか?

動作はWSAD5.0上で行っています。

以上ご教授願います。
北斗のポン
会議室デビュー日: 2003/05/02
投稿数: 17
投稿日時: 2003-05-14 17:42
こんにちは、北斗のポンです。

引用:

amuroさんの書き込み (2003-05-14 16:43) より:
includeディレクティブを使用した場合はすべてのファイルを
インクルードしたものが1ファイルとしてコンパイルされるという認識でいましたので
header.jspでcontentTypeを指定しても大丈夫かな?
と考えていましたが、それはできないのでしょうか?


えっと、インクルードディレクティブを使用する場合、インクルードする側とされる側でcontentTypeを指定することはできませんし、指定する必要がありません。

インクルードされたあとに1ファイルとしてコンパイルされると言うことは、それぞれでcontentTypeを指定すると2回contentTypeを指定することになってしまいますよね(JSPの仕様書を見たわけではないので、この理由は怪しいですが・・・)

下記の記事はもう見てみましたか?contentTypeの指定については載っていなかったと思いますが、インクルードについて詳しく載っています。
第5回 インクルードによるコードの再利用で効率化をはかる

では・・・
amuro
会議室デビュー日: 2002/12/13
投稿数: 5
投稿日時: 2003-05-14 18:45
早速の返信ありがとうございました。

引用:

えっと、インクルードディレクティブを使用する場合、インクルードする側とされる側でcontentTypeを指定することはできませんし、指定する必要がありません。

インクルードされたあとに1ファイルとしてコンパイルされると言うことは、それぞれでcontentTypeを指定すると2回contentTypeを指定することになってしまいますよね(JSPの仕様書を見たわけではないので、この理由は怪しいですが・・・)



すみません、私の言葉が足りなかったかもしれません。

もちろんheader.jspとbody.jspの両方にcontentTypeを指定することはしていません。
header.jspのみに設定したのです。

つまり、includeする側(body.jsp)にcontentTypeの宣言をせずに
includeされる側(header.jsp)のみにcontentTypeを宣言するという
方式は取れないのでしょうか?
# contentTypeの記述を各ファイル毎に記述しなくていいようにしたいと
# いうのが私の思いです。

以上



北斗のポン
会議室デビュー日: 2003/05/02
投稿数: 17
投稿日時: 2003-05-15 09:32
引用:

amuroさんの書き込み (2003-05-14 18:45) より:
すみません、私の言葉が足りなかったかもしれません。


いや、私の勘違いでしたね。すみません。(ちょっとごたごたしている時に返信してしまったので・・・)

えーっと、amuroさんの言っていることを私の環境でやってみると正常に動くようですねぇ。
ちなみに私の環境は、アプリケーションサーバーに Websphere AEs 4.0 使っています。

参考までにソースを書いておきます。

start.jsp
コード:
<%@ include file="header.jsp"%>

<html>
    <head>
        <title>
            【問題一覧】画面
        </title>
    </head>
    <body>
        <center>
            <table border=1>
                <tr>
                    <th>問題ID</th><th>タイトル</th>
                </tr>
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
            </table>
        </center>
    </body>
</html>
[EOF]



header.jsp
コード:
<%@ page contentType="text/html; charset=Shift_JIS" import="java.util.*" %>
[EOF]



header.jspのほうでは単純にディレクティブタグで必要な情報を書いてるだけで、それをstart.jspの一番最初にインクルードしてます。

参考になれば幸いです。
amuro
会議室デビュー日: 2002/12/13
投稿数: 5
投稿日時: 2003-05-15 14:01
こんにちは。
amuroです。

サンプルソースありがとうございました。
早速自分の環境で試してみたんですが、
やっぱり文字化けしました。
テストはWSAD5.0(WAS5.0)とtomcat4.1.xでそれぞれ試しました。

そこで気になったのが
北斗のポンさんが試された環境がWAS4.0ということなので
私の環境とはJSPの対応バージョンが異なるというところす。

これから私の方でもJSP1.1対応のコンテナ上でテストしてみて
JSP1.1と1.2の仕様の違いでも調べようかなって思います。

いろいろありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)