struts2.2.3中国語文字化けしフィルタの配置
JAvaプログラミングで中国語の文字化けしの問題は、プログラマーを悩ませる問題だった.
データベースの出入りするデータ、私达はしばらくそれを気にしないで、私达は先にページからプログラムの文字化けの问题を解决して、后ろのあれはすべて后ろの话です.
ステップ1:
jspページ符号化統一問題は,これが最も解決しやすい.
GBKを例にとると,jspページに上記の文を加えることでページ符号化の問題を解決できる.
ここでpageEncoding="GBK"は解決ページjavaコードモジュール符号化であり、contentType="text/html;charset=GBK"は解決ページ静的部分符号化である.
さあ、最初のステップは簡単に解決します.2歩目を始めるつもりですが、2歩目の前に、説明しておきます.
jspの操作フローは、jspが各種要求を受け入れ、servlet処理に転送することである.この過程で中国語の文字化けしが発生します.この文字化けしが発生した原因を知ると、やりやすくなり、次は第2歩です.
ステップ2:
ここでStruts 2を使いました.2.3、今より新しいバージョンでしょう.struts 2はservletをカプセル化し,actionによってjspのページ要求を処理することを知った.
struts 2を使った以上、私たちのweb.xmlはstruts 2のブロッキングを構成しているに違いない.構成コードは次のとおりです.
このセグメントは、struts 2にすべてのリクエストをブロックして処理します.しかし、符号化の問題はどのように解決しますか?焦らないで、続けて見てください.
手書き文字符号化フィルタのクラス.コードは次のとおりです.
フィルタのクラスができたら、必ずwebに配置します.xmlで行けます.そこでweb.xmlプロファイルに次のコードを追加します.
OK、2歩目はここで完成しました.jspページでフォームの提出を行うときに文字化けしていませんか?どうしたの?文字化けしてありますか?はい、まだ最後の一歩があるからです.
以上の2つのステップは、フォームのpost提出時に文字化けして問題はありません.しかし、フォームがgetコミットされると文字化けします.urlパラメータ付きのリクエストも中国語の文字化けしの問題もあります.どうやって解決するの?急いでいません.まだ3歩目があります.次は3歩目です.
ステップ3:
アプリケーションサーバのエンコードを構成します.ここではtomcatを例に挙げます.serverを見つけます.xmlというプロファイルは、次の場所にあります.
はい、サーバ符号化は解決しました.サービスが走ってきて、中国語の文字化けしの問題があるかどうか見てみましょう.ないでしょう.
3歩ですべての文字化けしを解決した.△ちょっと大きく吹きました.
私は自分でテストして、プログラマーの子供靴に少し助けてほしいです.
注意:統一符号化のために、私たちのプログラミングツールもGBKモードに変更したほうがいいです.JavaソースコードがGBKモードのものです.そうでなければ、問題があるかもしれません.
データベースの出入りするデータ、私达はしばらくそれを気にしないで、私达は先にページからプログラムの文字化けの问题を解决して、后ろのあれはすべて后ろの话です.
ステップ1:
jspページ符号化統一問題は,これが最も解決しやすい.
<%@ page language="java" import="java.util.*" pageEncoding="GBK" contentType="text/html; charset=GBK"%>
GBKを例にとると,jspページに上記の文を加えることでページ符号化の問題を解決できる.
ここでpageEncoding="GBK"は解決ページjavaコードモジュール符号化であり、contentType="text/html;charset=GBK"は解決ページ静的部分符号化である.
さあ、最初のステップは簡単に解決します.2歩目を始めるつもりですが、2歩目の前に、説明しておきます.
jspの操作フローは、jspが各種要求を受け入れ、servlet処理に転送することである.この過程で中国語の文字化けしが発生します.この文字化けしが発生した原因を知ると、やりやすくなり、次は第2歩です.
ステップ2:
ここでStruts 2を使いました.2.3、今より新しいバージョンでしょう.struts 2はservletをカプセル化し,actionによってjspのページ要求を処理することを知った.
struts 2を使った以上、私たちのweb.xmlはstruts 2のブロッキングを構成しているに違いない.構成コードは次のとおりです.
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
このセグメントは、struts 2にすべてのリクエストをブロックして処理します.しかし、符号化の問題はどのように解決しますか?焦らないで、続けて見てください.
手書き文字符号化フィルタのクラス.コードは次のとおりです.
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;
import org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter;
public class EncodeFilter extends StrutsPrepareAndExecuteFilter implements Filter {
private FilterConfig config = null;
private String encoding = null;
@Override
public void init(FilterConfig config) throws ServletException {
this.config = config;
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if (encoding == null) {
encoding = config.getInitParameter("encoding");
}
request.setCharacterEncoding(encoding);
response.setCharacterEncoding(encoding);
chain.doFilter(request, response);
}
@Override
public void destroy() {
config = null;
encoding = null;
}
}
フィルタのクラスができたら、必ずwebに配置します.xmlで行けます.そこでweb.xmlプロファイルに次のコードを追加します.
<filter>
<filter-name>encodeFilter</filter-name>
<filter-class>com.org.midland.common.EncodeFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodeFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
OK、2歩目はここで完成しました.jspページでフォームの提出を行うときに文字化けしていませんか?どうしたの?文字化けしてありますか?はい、まだ最後の一歩があるからです.
以上の2つのステップは、フォームのpost提出時に文字化けして問題はありません.しかし、フォームがgetコミットされると文字化けします.urlパラメータ付きのリクエストも中国語の文字化けしの問題もあります.どうやって解決するの?急いでいません.まだ3歩目があります.次は3歩目です.
ステップ3:
アプリケーションサーバのエンコードを構成します.ここではtomcatを例に挙げます.serverを見つけます.xmlというプロファイルは、次の場所にあります.
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"/>
URIEncoding="GBK"
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="GBK" />
はい、サーバ符号化は解決しました.サービスが走ってきて、中国語の文字化けしの問題があるかどうか見てみましょう.ないでしょう.
3歩ですべての文字化けしを解決した.△ちょっと大きく吹きました.
私は自分でテストして、プログラマーの子供靴に少し助けてほしいです.
注意:統一符号化のために、私たちのプログラミングツールもGBKモードに変更したほうがいいです.JavaソースコードがGBKモードのものです.そうでなければ、問題があるかもしれません.