アプリケーションサーバーや、そのバージョンによっても、日本語のリクエスト対策は異なります。
サーバーの設定によって回避できる場合もありますが、汎用的な対策を行うには、HttpServletRequestWrapperを使って対策することです。
(この方法でも、サーバーによっては対策が効かない場合もあります)
HttpServletRequestWrapperを使って、文字化け対策するサンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 | import java.io.UnsupportedEncodingException; import javax.servlet.http.HttpServletRequest; public class HttpServletRequestWrapper extends javax.servlet.http.HttpServletRequestWrapper { public HttpServletRequestWrapper(HttpServletRequest request) { super(request); try { setCharacterEncoding("UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } } |
サンプルの解説
HttpServletRequest#setCharacterEncoding(String)で、ブラウザから送信される文字コードを指定します。
あとは、ふつうにHttpServletRequest#getParameter(String)で値を取得すれば、日本語でも文字化けすることなく値を取得できます。
※HttpServletRequestは、あらかじめラッパークラス(HttpServletRequestWrapper)が用意されています。
これを使うことで、簡単にHttpServletRequestをカスタマイズすることができます。