フィルタの例-文字コードFilter

6255 ワード

文字符号化フィルタは、Tomcatサーバにおけるrequestおよびresponseの乱符号化問題を迅速に解決するソリューションです.一般的なプログラムでrequest、resopnseの中国語パラメータの乱符号化問題を解決するには、パラメータを取る前にrequestにsetCharacterEncoding(「UTF-8」)の符号化設定を行うのが一般的であり、この方法は使用するページごとに符号化設定を行う必要があり、非常に面倒である.文字符号化フィルタは、各ページのアクセス前にFilterを実行する自動符号化設定を行うことにより、1つのFilterページを作成する、Filterをweb上に配置する必要がある.xmlで必要なページ(本明細書ではすべてのページに設定)に設定すればよい.
まず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