ネットユーザーのロイのコメントを見て、ファイルでStrutsの中国語の文字化けしを解決することを研究しました!


Royのネットユーザーは、FilterでStrutsの中国語の文字化けしを処理するのが王道だと指摘しています.原文はここを参考にしてください.
Struts Hack!Form Beanでの中国語パラメータの文字化けしを解決!
filterの使い方は、確かに拡張性のある方法です...filterと併せてwebを読み取ることができる.xmlのfilterパラメータは、次のように一連の動作を完了します.
まずjavaxを実現する.servlet.Filterインタフェース、request符号化を処理するフィルタクラスを作成...

     
package tutorial.struts.filter;

import javax.servlet.Filter;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;
import javax.servlet.FilterChain;
import java.io.IOException;

public class SetCharacterEncodingFilter implements Filter {

protected FilterConfig filterConfig;
protected String encodingName;
protected boolean enable;

public SetCharacterEncodingFilter() {
this .encodingName = " UTF-8 " ;
this .enable = false ;
}

public void init(FilterConfig filterConfig) throws ServletException {
this .filterConfig = filterConfig;
loadConfigParams();
}

private void loadConfigParams() {
// encoding
this
.encodingName = this .filterConfig.getInitParameter( " encoding " );
// filter enable flag
String strIgnoreFlag = this .filterConfig.getInitParameter( " enable " );
if (strIgnoreFlag.equalsIgnoreCase( " true " )) {
this .enable = true ;
}
else {
this .enable = false ;
}
}

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
if ( this .enable) {
request.setCharacterEncoding(
this .encodingName);
}
chain.doFilter(request, response);
}

public void destroy() {
}

}

そして、webでxmlにフィルタクラスを登録します.

     

< filter >
< filter-name > Set Character Encoding </ filter-name >
< filter-class > tutorial.struts.filter.SetCharacterEncodingFilter </ filter-class >
< init-param >
< param-name > encoding </ param-name >
< param-value > UTF-8 </ param-value >
</ init-param >
< init-param >
< param-name > enable </ param-name >
< param-value > true </ param-value >
</ init-param >
</ filter >
< filter-mapping >
< filter-name > Set Character Encoding </ filter-name >
< servlet-name > Action Servlet </ servlet-name >
</ filter-mapping >
< filter-mapping >
< filter-name > Set Character Encoding </ filter-name >
< servlet-name > Faces Servlet </ servlet-name >
</ filter-mapping >

このように、StrutsやJSFのControllerサーブレットで処理されるrequestは、フィルタで先に処理され、StrutsやJSFに制御権を返還され、FilterにはProcess Chainの概念があり、魅力的な東東~~!