SpringMVC中如何解決POST請求中文亂碼問題,GET的又如何處理


解決POST請求中文亂碼問題

先來看一個類CharacterEncodingFilter,
package org.springframework.web.filter;

import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.util.Assert;
/**
這個CharacterEncodingFilter過濾器的源碼
 */
public class CharacterEncodingFilter extends OncePerRequestFilter {
	//有兩個成員變量
    private String encoding;
    private boolean forceEncoding;

    public CharacterEncodingFilter() {
        this.forceEncoding = false;
    }

    public CharacterEncodingFilter(String encoding) {
        this(encoding, false);
    }

    public CharacterEncodingFilter(String encoding, boolean forceEncoding) {
        this.forceEncoding = false;
        Assert.hasLength(encoding, "Encoding must not be empty");
        this.encoding = encoding;
        this.forceEncoding = forceEncoding;
    }

	//這里兩個set方法可以給成員變量賦值
    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 (this.encoding != null && (this.forceEncoding || request.getCharacterEncoding() == null)) {
        	//當this.encoding中有值時會將請求的編碼設置為對應值,設置為UTF-8即可解決中文亂碼問題
            request.setCharacterEncoding(this.encoding);
            if (this.forceEncoding) {
            	//當this.forceEncoding為true時設置響應的編碼值
                response.setCharacterEncoding(this.encoding);
            }
        }

        filterChain.doFilter(request, response);
    }
}

在項目的web.xml文件上面添加一個過濾器
<filter>
    <filter-name>CharacterEncodingFilter</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>
  <filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

解決GET請求中文亂碼問題

修改tomcat的server.xml文件,在等一個Connector標簽添加URIEncoding="UTF-8"屬性
<Connector URIEncoding="UTF-8" port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM