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);
    	}
    }
    

      

      

  • 相关阅读:
    【Daily Scrum】12-03:Sprint 3 Planning
    【Daily Scrum】12-02:Postmortem of sprint 2
    Team Project: 基于windows phone 8平台的PhotoStoryTelling 软件 ——by Qing
    【Daily Scrum】12-26
    【Daily Scrum】12-25
    【Daily Scrum】12-23
    【Daily Scrum】12-22
    【Daily Scrum】12-18
    【Daily Scrum】12-15
    列几点一些软件或APP的Bug和对其建议
  • 原文地址:https://www.cnblogs.com/xiaomaomao/p/13604700.html
Copyright © 2011-2022 走看看