zoukankan      html  css  js  c++  java
  • SpringMVC之解决中乱码

    1、在web.xml中配置一个CharacterEncodingFilter

     <!--因为有缓存的关系,解决中文乱码的过滤器必须要配置在所有过滤器的最前面-->
        <filter>
            <filter-name>characterEncodingFilter</filter-name>
            <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
            <init-param>
                <!--encoding的值是固定的,因为它是CharacterEncodingFilter中的一个属性-->
                <param-name>encoding</param-name>
                <param-value>UTF-8</param-value>
            </init-param>
        </filter>
        <filter-mapping>
            <filter-name>characterEncodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    

      

    2、CharacterEncodingFilter源码如下

    public class CharacterEncodingFilter extends OncePerRequestFilter {
    	@Nullable
            // web.xml中<param-value>对应的值
    	private String encoding;
    
    	private boolean forceRequestEncoding = false;
    
    	private boolean forceResponseEncoding = false;
    
    	public CharacterEncodingFilter() {
    	}
    
    	public CharacterEncodingFilter(String encoding) {
    		this(encoding, false);
    	}
    
    	public CharacterEncodingFilter(String encoding, boolean forceEncoding) {
    		this(encoding, forceEncoding, forceEncoding);
    	}
    
    	public CharacterEncodingFilter(String encoding, boolean forceRequestEncoding, boolean forceResponseEncoding) {
    		Assert.hasLength(encoding, "Encoding must not be empty");
    		this.encoding = encoding;
    		this.forceRequestEncoding = forceRequestEncoding;
    		this.forceResponseEncoding = forceResponseEncoding;
    	}
    
    	public void setEncoding(@Nullable String encoding) {
    		this.encoding = encoding;
    	}
    
    	@Nullable
    	public String getEncoding() {
    		return this.encoding;
    	}
    
    	public void setForceEncoding(boolean forceEncoding) {
    		this.forceRequestEncoding = forceEncoding;
    		this.forceResponseEncoding = forceEncoding;
    	}
    
    	public void setForceRequestEncoding(boolean forceRequestEncoding) {
    		this.forceRequestEncoding = forceRequestEncoding;
    	}
    
    	public boolean isForceRequestEncoding() {
    		return this.forceRequestEncoding;
    	}
    
    	
    	public void setForceResponseEncoding(boolean forceResponseEncoding) {
    		this.forceResponseEncoding = forceResponseEncoding;
    	}
    
    	public boolean isForceResponseEncoding() {
    		return this.forceResponseEncoding;
    	}
    
    	@Override
    	protected void doFilterInternal(
    			HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
    			throws ServletException, IOException {
    
    		String encoding = getEncoding();
    		if (encoding != null) {
    			if (isForceRequestEncoding() || request.getCharacterEncoding() == null) {
    				request.setCharacterEncoding(encoding);
    			}
    			if (isForceResponseEncoding()) {
    				response.setCharacterEncoding(encoding);
    			}
    		}
    		filterChain.doFilter(request, response);
    	}
    }
    

      

      

  • 相关阅读:
    D
    pat 甲级 1003 Emergency(最短路计数)
    Goldbach
    pta 1148 Werewolf
    CodeForces
    pta 1144 The Missing Number
    2020团体程序设计天梯赛 L1-3 洛希极限
    2020团体程序设计天梯赛 L1-2 猫是液体
    2020团体程序设计天梯赛 L1-1 嫑废话上代码
    2020年团体程序设计天梯赛-题解
  • 原文地址:https://www.cnblogs.com/xiaomaomao/p/13604700.html
Copyright © 2011-2022 走看看