| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

Filterで文字化け対策

提供: MyMemoWiki
ナビゲーションに移動 検索に移動

Filterで文字化け対策

J2EE |

Webアプリケーションの文字化け対策

以下のようなフィルターを作成し、web.xmlに設定。

  1. package info.typea.fugitive.filter;
  2.  
  3. import java.io.IOException;
  4.  
  5. import javax.servlet.Filter;
  6. import javax.servlet.FilterChain;
  7. import javax.servlet.FilterConfig;
  8. import javax.servlet.ServletException;
  9. import javax.servlet.ServletRequest;
  10. import javax.servlet.ServletResponse;
  11.  
  12. /**
  13. * Webアプリケーションでの文字コードを一括処理するフィルタ
  14. * <br/>
  15. * StrutsのActionFormでは、リクエストパラメータの解析時に、文字エンコーディングが行われないため、
  16. * アプリケーション全体で使用する文字エンコーディングを定義したフィルタを適用する。
  17. * <br/>
  18. * WEB-INF/web.xml にて、以下のように指定することで、有効になる。
  19. * ここで、使用する文字コードを設定する。
  20. * <pre style="color:blue;">
  21. * <filter>
  22. * <filter-name>CharacterEncodingFilter</filter-name>
  23. * <filter-class>fugitive.fw.filter.CharacterEncodingFilter</filter-class>
  24. * <init-param>
  25. * <param-name>encording</param-name>
  26. * <param-value>UTF-8</param-value>
  27. * </init-param>
  28. * </filter>
  29. * <filter-mapping>
  30. * <filter-name>CharacterEncodingFilter</filter-name>
  31. * <url-pattern>/*</url-pattern>
  32. * </filter-mapping>
  33. * </pre>
  34. * @author yagi
  35. */
  36. public class CharacterEncodingFilter implements Filter {
  37. /**
  38. * 文字エンコーディング
  39. */
  40. private String encording = null;
  41. /* @see javax.servlet.Filter#init(javax.servlet.FilterConfig) */
  42. public void init(FilterConfig config) throws ServletException {
  43. this.encording = config.getInitParameter("encording");
  44. }
  45.  
  46. /* @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) */
  47. public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
  48. request.setCharacterEncoding(this.encording);
  49. filterChain.doFilter(request, response);
  50. response.setCharacterEncoding(this.encording);
  51. }
  52.  
  53. /* @see javax.servlet.Filter#destroy() */
  54. public void destroy() {
  55. this.encording = null;
  56. }
  57. }