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

MyMemoWiki

「Filterで文字化け対策」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
 
(同じ利用者による、間の1版が非表示)
1行目: 1行目:
==Filterで文字化け対策==
+
==[[Filterで文字化け対策]]==
[[J2EE]]{{category 文字化け}}
+
[[J2EE]] | [[Category:文字化け]]
  
====Webアプリケーションの文字化け対策====
+
====[[Webアプリケーション]]の文字化け対策====
 
以下のようなフィルターを作成し、web.xmlに設定。
 
以下のようなフィルターを作成し、web.xmlに設定。
  
13行目: 13行目:
 
  import javax.servlet.FilterConfig;
 
  import javax.servlet.FilterConfig;
 
  import javax.servlet.ServletException;
 
  import javax.servlet.ServletException;
  import javax.servlet.ServletRequest;
+
  import javax.servlet.Servlet[[R]]equest;
  import javax.servlet.ServletResponse;
+
  import javax.servlet.Servlet[[R]]esponse;
 
   
 
   
 
  /**
 
  /**
   * Webアプリケーションでの文字コードを一括処理するフィルタ
+
   * [[Webアプリケーション]]での文字コードを一括処理するフィルタ
 
   * <br/>
 
   * <br/>
   * StrutsのActionFormでは、リクエストパラメータの解析時に、文字エンコーディングが行われないため、
+
   * StrutsのActionFormでは、リクエストパラメータの解析時に、文字[[エンコーディング]]が行われないため、
   * アプリケーション全体で使用する文字エンコーディングを定義したフィルタを適用する。
+
   * アプリケーション全体で使用する文字[[エンコーディング]]を定義したフィルタを適用する。
 
   * <br/>
 
   * <br/>
 
   * WEB-INF/web.xml にて、以下のように指定することで、有効になる。
 
   * WEB-INF/web.xml にて、以下のように指定することで、有効になる。
   * ここで、使用する文字コードを設定する。
+
   * ここで、使用する[[文字コード]]を設定する。
 
   * <pre style="color:blue;">
 
   * <pre style="color:blue;">
 
   *  <filter>
 
   *  <filter>
42行目: 42行目:
 
  public class CharacterEncodingFilter implements Filter {
 
  public class CharacterEncodingFilter implements Filter {
 
   /**
 
   /**
     * 文字エンコーディング
+
     * 文字[[エンコーディング]]
 
     */
 
     */
 
   private String encording = null;
 
   private String encording = null;
51行目: 51行目:
 
   }
 
   }
 
   
 
   
   /* @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) */
+
   /* @see javax.servlet.Filter#doFilter(javax.servlet.Servlet[[R]]equest, javax.servlet.Servlet[[R]]esponse, javax.servlet.FilterChain) */
   public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
+
   public void doFilter(Servlet[[R]]equest request, Servlet[[R]]esponse response, FilterChain filterChain) throws IOException, ServletException {
 
       request.setCharacterEncoding(this.encording);
 
       request.setCharacterEncoding(this.encording);
 
       filterChain.doFilter(request, response);
 
       filterChain.doFilter(request, response);
64行目: 64行目:
 
  }
 
  }
  
*Tomcat 5.x GET でパラメータを渡すと文字化け
+
*[[Tomcat 5.x GET でパラメータを渡すと文字化け]]

2020年2月16日 (日) 04:25時点における最新版

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;
  }
}