zoukankan      html  css  js  c++  java
  • 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" />
    
  • 相关阅读:
    每日一剂 14-6-6
    每日一剂 14-6-5
    每日一剂 14-6-4
    每日一剂 14-5-30
    Maven清理 .lastUpdated文件
    Docker 将项目做成镜像部署在docker中
    Docker 镜像拷贝到 正式环境运行
    Docker 安装 Tomcat
    Docker 安装 ActiveMq
    Docker 安装 nginx
  • 原文地址:https://www.cnblogs.com/shaoyu/p/12454139.html
Copyright © 2011-2022 走看看