Spring CharacterEncodingFilter

web项目使用spring时,可以使用Spring提供的字符集过滤filter,非常方便对于有中文的字符设置

<!-- 设置请求编码格式为UTF-8 -->
<filter>
	<filter-name>springEncoding</filter-name>
	<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
	<init-param>
		<param-name>encoding</param-name>
		<param-value>UTF-8</param-value>
	</init-param>
	<init-param>
		<param-name>forceEncoding</param-name>
		<param-value>true</param-value>
	</init-param>
</filter>

需要设置的两个参数为encoding、forceEncoding,分别设置字符集,及是否设置字符集,该filter也非常简单

public class CharacterEncodingFilter extends OncePerRequestFilter
{

    public CharacterEncodingFilter()
    {
        forceEncoding = false;
    }

    public void setEncoding(String encoding)
    {
        this.encoding = encoding;
    }

    public void setForceEncoding(boolean forceEncoding)
    {
        this.forceEncoding = forceEncoding;
    }

    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
        throws ServletException, IOException
    {
        if(encoding != null && (forceEncoding || request.getCharacterEncoding() == null))
        {
            request.setCharacterEncoding(encoding);
            if(forceEncoding)
                response.setCharacterEncoding(encoding);
        }
        filterChain.doFilter(request, response);
    }

    private String encoding;
    private boolean forceEncoding;
}

主要流程即判断是否需要设置字符集,及设置什么字符集。对于web项目来说非常简单易用

原文地址:https://www.cnblogs.com/ikuman/p/4172562.html