感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

Tomcatの文字化け対策、サーブレットで入力パラメータの取得など

スポンサーリンク

ブログにたくさん載っているように、私はたくさんの本を読みながら学習しているけれど、サーブレット/JSPの入門書としては

「基礎からのサーブレット/JSP 第3版」

は抜群に良い。初学者御用達の本である。

アプリケーションサーバは個々のWebアプリケーションをコンテキストという単位で管理する

Webアプリケーションの最上位のパスはコンテキストルートという

Webサーバ上のコンテキストルートへのパスをコンテキストパスという。

コンテキストパスを取得する方法は、

request.getContextPath()

である。

・ブラウザからサーブレットに渡される値は入力パラメータという。

■URLエンコードとは
・URLには日本語などを含めることはできない
・URLに含めることができない文字は、Webブラウザで変換されてからWebサーバに送信される<ルール>
・1バイトの英文字と記号の一部はそのまま
・半角スペースは「+」に変換
・その他の文字は「%+16進数2桁の文字コード」に変換


■server.xml・・・Tomcatの動作を設定するためのファイル
C:\Program Files (x86)\Apache Software Foundation\apache-tomcat-6.0.35\conf\server.xml

Tomcat5以降ではアドレス部のURL文字列のデコードに必ずISO8859-1が指定されるため、サーブレット中でsetCharacterEncoding()で文字エンコーディングを指定してもデフォルトではそれが無視されてしまう。それが文字化けの原因になってしまう。
デフォルト値を変更するには、server.xmlの以下に
useBodyEncodingForURI="true"
を追記しなければならない。

    <Connector port="8082" protocol="HTTP/1.1" 
               useBodyEncodingForURI="true"
               URIEncoding="UTF-8"
               connectionTimeout="20000" 
               redirectPort="8443" />

useBodyEncodingForURI=trueを指定することで、URLデコード時にsetCharacterEncoding()メソッドで指定した文字エンコーディングが使われる。