복붙노트

[SPRING] 매개 변수 인코딩 가져 오기

SPRING

매개 변수 인코딩 가져 오기

Spring MVC와 GET 요청의 특수 문자를 사용하는 데 문제가 있습니다. 다음 방법을 고려하십시오.

@RequestMapping("/update")
public Object testMethod(@RequestParam String name) throws IOException {
    }

예를 들어 "ä"(독일어 움라우트)를 포함하는 이름으로 GET 요청을 보냅니다. 브라우저는 "ä"를 % C3 % A4에 매핑하기 때문에 "¤¤"을받는 결과를 얻습니다.

그렇다면 컨트롤러에서 올바른 인코딩 된 문자열을 얻으려면 어떻게해야합니까?

당신의 도움을 주셔서 감사합니다!

해결법

  1. ==============================

    1.이건 어때? 도움이 될까요?

    이건 어때? 도움이 될까요?

    귀하의 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;
        }
    
    }
    
  2. ==============================

    2.이 요청은 본문 인코딩과 URI 인코딩간에 차이가 있기 때문에이 문제가 발생합니다. CharacterEncodingFilter는 본문 인코딩을 설정하지만 URI 인코딩은 설정하지 않습니다.

    이 요청은 본문 인코딩과 URI 인코딩간에 차이가 있기 때문에이 문제가 발생합니다. CharacterEncodingFilter는 본문 인코딩을 설정하지만 URI 인코딩은 설정하지 않습니다.

    Tomcat server.xml의 모든 커넥터에서 URIEncoding = "UTF-8"을 속성으로 설정해야합니다. 여기를 참고하십시오 : http://tomcat.apache.org/tomcat-6.0-doc/config/ajp.html

    또는 useBodyEncodingForURI = "True"로 설정할 수 있습니다.

    maven tomcat 플러그인을 사용하는 경우이 매개 변수를 추가하십시오.

    mvn -Dmaven.tomcat.uriEncoding = UTF-8 tomcat : 실행

  3. from https://stackoverflow.com/questions/5445990/get-parameter-encoding by cc-by-sa and MIT license