「Filterで文字化け対策」の版間の差分
ナビゲーションに移動
検索に移動
(同じ利用者による、間の1版が非表示) | |||
1行目: | 1行目: | ||
− | ==Filterで文字化け対策== | + | ==[[Filterで文字化け対策]]== |
− | [[J2EE]] | + | [[J2EE]] | [[Category:文字化け]] |
− | ==== | + | ====[[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. | + | import javax.servlet.Servlet[[R]]equest; |
− | import javax.servlet. | + | import javax.servlet.Servlet[[R]]esponse; |
/** | /** | ||
− | * | + | * [[Webアプリケーション]]での文字コードを一括処理するフィルタ |
* <br/> | * <br/> | ||
− | * | + | * 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. | + | /* @see javax.servlet.Filter#doFilter(javax.servlet.Servlet[[R]]equest, javax.servlet.Servlet[[R]]esponse, javax.servlet.FilterChain) */ |
− | public void doFilter( | + | 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; } }
© 2006 矢木浩人