Java プログラムメモ


トップ

Request のエンコードを指定する

Servlet におりて、Request からパラメータの値を取得する場合にエンコードの指定を行わないと 2 byte 文字は文字化けを起こしてしまいます。

文字コードを指定する方法には、Request のメソッド (Servlet 2.3 以降) の

request.setCharacterEncoding(文字コード);
がありますが、全ての Servlet で記述するのは非常に面倒で、漏れが発生しやすいです。
そこで、Filter を使用します。

利用方法は、まず最初に以下のようなクラスを作成します。

クラス例

import java.io.*; import javax.servlet.*; public class EncodingFilter implements Filter { private String encoding_; public void init(FilterConfig filterConfig) throws ServletException { encoding_ = filterConfig.getInitParameter("encoding"); } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { request.setCharacterEncoding(encoding_); chain.doFilter(request, response); } public void destroy() { } }
そして、 web.xml に以下のような記述を追加します。

web.xml 例

<filter> <filter-name>encodingFilter</filter-name> <filter-class>EncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>Windows-31J</param-value> </init-param> </filter>
<param-name> を Key にして <param-value> で指定されたエンコードで全ての Request が処理されます。

プログラムメモ アフリカ雑貨や農作物のセレクトショップ - はろの屋 マゴソスクール クラウドファンディング
SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送