Tomcat5.x スクリプトレットを使用禁止に!

Tomcat5.xから、JSPでのスクリプトレットの使用を禁止に出来るみたい。

web.xml

<jsp-config>
    <jsp-property-group>
        <url-pattern>*.jsp</url-pattern>
        <el-ignored>false</el-ignored>
        <page-encoding>Windows-31J</page-encoding>
        <scripting-invalid>true</scripting-invalid>
    </jsp-property-group>
</jsp-config>

scripting-invalidをtrueに設定してやると、スクリプトレットを使用禁止にできます。
ディフォルトは、false。

Tomcatでは、確認済み。(ほかのAPサーバも有効になるんだろうか。。。)

el-ignoredをtrueにすると、EL式が書けなくなります。${hoge}とかそのまま表示されます。

注意点。

JSPファイルの方に、pageディレクティブが存在すると、上書きされるので注意しましょう。

<%@ page language="java" contentType="text/html; charset=windows-31j"
    pageEncoding="windows-31j"%>

と書くのが当たり前になりすぎていて、気づきませんでした。
上記例だと、scripting-invalidがfalseで宣言されているのと同等なので、web.xmlに記述しただけではスクリプトレットが動きます。

scripting-invalidを直接pageディレクティブに記述しても、スクリプトレットを禁止できます。

尚、scripting-invalidをtrueに設定して、スクリプトレットを記述すると、Exceptionが発生しますので。

前回のGETパラメータの文字化け確認しました。
ついでに、server.xmlの設定が有効になるのも確認しました。

サーブレットJSPを勉強したい方へお勧めの本。

基礎からのサーブレット/JSP SE必修!

基礎からのサーブレット/JSP SE必修!

よい本です。