Filterで文字化け対策
ナビゲーションに移動
検索に移動
Filterで文字化け対策
J2EE |
Webアプリケーションの文字化け対策
以下のようなフィルターを作成し、web.xmlに設定。
package info.typea.fugitive.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; /** * Webアプリケーションでの文字コードを一括処理するフィルタ * <br/> * StrutsのActionFormでは、リクエストパラメータの解析時に、文字エンコーディングが行われないため、 * アプリケーション全体で使用する文字エンコーディングを定義したフィルタを適用する。 * <br/> * WEB-INF/web.xml にて、以下のように指定することで、有効になる。 * ここで、使用する文字コードを設定する。 * <pre style="color:blue;"> * <filter> * <filter-name>CharacterEncodingFilter</filter-name> * <filter-class>fugitive.fw.filter.CharacterEncodingFilter</filter-class> * <init-param> * <param-name>encording</param-name> * <param-value>UTF-8</param-value> * </init-param> * </filter> * <filter-mapping> * <filter-name>CharacterEncodingFilter</filter-name> * <url-pattern>/*</url-pattern> * </filter-mapping> * </pre> * @author yagi */ public class CharacterEncodingFilter implements Filter { /** * 文字エンコーディング */ private String encording = null; /* @see javax.servlet.Filter#init(javax.servlet.FilterConfig) */ public void init(FilterConfig config) throws ServletException { this.encording = config.getInitParameter("encording"); } /* @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) */ public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException { request.setCharacterEncoding(this.encording); filterChain.doFilter(request, response); response.setCharacterEncoding(this.encording); } /* @see javax.servlet.Filter#destroy() */ public void destroy() { this.encording = null; } }
© 2006 矢木浩人