ネットユーザーのロイのコメントを見て、ファイルでStrutsの中国語の文字化けしを解決することを研究しました!
Royのネットユーザーは、FilterでStrutsの中国語の文字化けしを処理するのが王道だと指摘しています.原文はここを参考にしてください.
Struts Hack!Form Beanでの中国語パラメータの文字化けしを解決!
filterの使い方は、確かに拡張性のある方法です...filterと併せてwebを読み取ることができる.xmlのfilterパラメータは、次のように一連の動作を完了します.
まずjavaxを実現する.servlet.Filterインタフェース、request符号化を処理するフィルタクラスを作成...
そして、webでxmlにフィルタクラスを登録します.
このように、StrutsやJSFのControllerサーブレットで処理されるrequestは、フィルタで先に処理され、StrutsやJSFに制御権を返還され、FilterにはProcess Chainの概念があり、魅力的な東東~~!
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の概念があり、魅力的な東東~~!