Get Parameter Encoding

后端 未结 2 1098
自闭症患者
自闭症患者 2020-12-01 09:05

I have a problem using spring mvc and special chars in a GET request. Consider the following method:

@RequestMapping(\"/update\")
public Object testMethod(@R         


        
相关标签:
2条回答
  • 2020-12-01 09:16

    What about this? Could it help?

    In your web.xml:

        <filter>
            <filter-name>CharacterEncodingFilter</filter-name>
            <filter-class>com.example.CharacterEncodingFilter</filter-class>
            <init-param>
                <param-name>encoding</param-name>
                <param-value>UTF-8</param-value>
            </init-param>
        </filter>
    
        <filter-mapping>
            <filter-name>CharacterEncodingFilter</filter-name>
            <servlet-name>dispatcher</servlet-name>
        </filter-mapping>
    

    com.example.CharacterEncodingFilter:

    public class CharacterEncodingFilter implements Filter {
    
        protected String encoding;
    
        public void init(FilterConfig filterConfig) throws ServletException {
            encoding = filterConfig.getInitParameter("encoding");
        }
    
        public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
                FilterChain filterChain) throws IOException, ServletException {
    
            HttpServletRequest request = (HttpServletRequest) servletRequest;
            request.setCharacterEncoding(encoding);
    
            filterChain.doFilter(servletRequest, servletResponse);
        }
    
        public void destroy() {
            encoding = null;
        }
    
    }
    
    0 讨论(0)
  • 2020-12-01 09:28

    You're having this problem, because the request differentiates between body encoding and URI encoding. A CharacterEncodingFilter sets the body encoding, but not the URI encoding.

    You need to set URIEncoding="UTF-8" as an attribute in all your connectors in your Tomcat server.xml. See here: http://tomcat.apache.org/tomcat-6.0-doc/config/ajp.html

    Or, alternatively, you can set useBodyEncodingForURI="True".

    If you're using the maven tomcat plugin, just add this parameter:

    mvn -Dmaven.tomcat.uriEncoding=UTF-8 tomcat:run

    0 讨论(0)
提交回复
热议问题