Cosminexus V9 アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)
ブラウザとアプリケーション間で文字コード変換をするときに使用するメソッド,およびJSPとJavaScriptの実装時の注意事項について説明します。
ブラウザを使用して送信されたクエリ文字列,POSTデータは,HttpServletRequestクラスのメソッドを使用して取得します。HttpServletRequestクラスのうち,文字コード変換に関係のあるメソッドと使用時の注意事項を示します。
リクエストのメッセージボディで使われている文字コードを設定します。このメソッドは,getParameterメソッドや,getReaderメソッドを使って入力ストリームから読み込む前に実行されなければなりません。
(a) setCharacterEncodingメソッド
リクエストのメッセージボディ,およびGETリクエストのクエリで送信されたパラメタに使われている文字コードを設定します。このメソッドは,getParameterメソッドや,getReaderメソッドを使って入力ストリームから読み込む前に実行されなければなりません。
setCharacterEncodingメソッドで設定した文字コードが使用される範囲を次の表に示します。
表A-3 setCharacterEncodingメソッドで設定した文字コードが使用される範囲
メソッド | HTMLのフォームから送信されたデータ(クエリも含む) | 左記以外のメッセージボディ |
---|---|---|
getParameter | ○ | − |
getParameterNames | ○ | − |
getParameterValues | ○ | − |
getParameterMap | ○ | − |
getInputStream | × | × |
getReader | × | △ |
getQueryString | × | − |
(凡例)
○:取得した値はsetCharacterEncodingメソッドで設定した文字コードとしてUnicodeに変換される。
△:文字データはsetCharacterEncodingメソッドで設定した文字コードに変換される。
×:エンコードされたままの文字列が取得される。
−:取得できない。
パラメタの名称を指定して,リクエストに含まれるパラメタの値を取得します。取得した値はURLデコードされ,Unicodeに変換されます。パラメタの名称やパラメタの値を取得する前に,setCharacterEncodingメソッドを用いて文字コードを指定する必要があります。指定しなかった場合,ISO-8859-1としてUnicodeに変換されます。HttpServletRequestクラスのgetParameterNamesメソッド,getParameterValuesメソッド,getParameterMapメソッドも同様です。
リクエストのメッセージボディに含まれているバイナリデータを読み込むためのストリームを取得します。HTMLのフォームから送信されたデータからはエンコードされたままの文字列が取得されるので,取得した文字列を適切な文字コードでデコードする必要があります
リクエストのメッセージボディにBufferedReaderクラスを使い,文字データとして取り出します。文字データはメッセージボディと同じ文字コードに変換されます。HTMLのフォームから送信されたデータからはエンコードされたままの文字列が取得されるので,取得した文字列を適切な文字コードでデコードする必要があります。
リクエストされたURLのパスの後ろに含まれているクエリ文字列を返します。HTMLのフォームから送信されたデータからはエンコードされたままの文字列が取得されるので,取得した文字列を適切な文字コードでデコードする必要があります。
JSPファイルのincludeディレクティブでファイルをインクルードする場合には,インクルード元となるJSPファイルでcontentType属性を使用してエンコードを指定してください。また,JSPファイルの文字コードはpageEncoding属性に指定してください。指定しない場合はインクルード先の文字が正常に表示されない場合があります。
All Rights Reserved. Copyright (C) 2012, 2015, Hitachi, Ltd.