フィルタの例-文字コードFilter
6255 ワード
文字符号化フィルタは、Tomcatサーバにおけるrequestおよびresponseの乱符号化問題を迅速に解決するソリューションです.一般的なプログラムでrequest、resopnseの中国語パラメータの乱符号化問題を解決するには、パラメータを取る前にrequestにsetCharacterEncoding(「UTF-8」)の符号化設定を行うのが一般的であり、この方法は使用するページごとに符号化設定を行う必要があり、非常に面倒である.文字符号化フィルタは、各ページのアクセス前にFilterを実行する自動符号化設定を行うことにより、1つのFilterページを作成する、Filterをweb上に配置する必要がある.xmlで必要なページ(本明細書ではすべてのページに設定)に設定すればよい.
まずCharacterEncodingFilterクラスを作成しjavaxから継承する.servlet.Filter.
そしてweb.xmlでFilter構成を行えばよい.
次にrequestとresponseを使用して中国語のパラメータを直接渡して取得することができ、使用するたびに構成する必要はありません.
転載先:https://www.cnblogs.com/2017Crown/p/7157766.html
まずCharacterEncodingFilterクラスを作成しjavaxから継承する.servlet.Filter.
package 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;
public class CharacterEncodingFilter implements Filter {
private String characterEncoding;
private boolean enabled;
@Override
public void init(FilterConfig arg0) throws ServletException {
//web Filter, FilterConfig web.xml
characterEncoding=arg0.getInitParameter("characterEncoding");
enabled="true".equalsIgnoreCase(arg0.getInitParameter("enabled".trim()));
}
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
// , request response
if(enabled||characterEncoding!=null)
{
arg0.setCharacterEncoding(characterEncoding);
arg1.setCharacterEncoding(characterEncoding);
}
arg2.doFilter(arg0, arg1);
}
@Override
public void destroy() {
//web , Filter
characterEncoding=null;
}
}
そしてweb.xmlでFilter構成を行えばよい.
<filter>
<filter-name>characterEncodingFilterfilter-name>
<filter-class>filter.CharacterEncodingFilterfilter-class>
<init-param>
<param-name>characterEncodingparam-name>
<param-value>UTF-8param-value>
init-param>
<init-param>
<param-name>enabledparam-name>
<param-value>trueparam-value>
init-param>
filter>
<filter-mapping>
<filter-name>characterEncodingFilterfilter-name>
<url-pattern>/*url-pattern>//
filter-mapping>
次にrequestとresponseを使用して中国語のパラメータを直接渡して取得することができ、使用するたびに構成する必要はありません.
転載先:https://www.cnblogs.com/2017Crown/p/7157766.html