결론부터 말하면 서버 설정의 변경 없이는 get, post 방식 모두를 해결하기는 힘듬.

post 해결 방법

  1. WEB-INF/web.xml
  2. <filter>

    <filter-name>Encoding Filter</filter-name>

    <filter-class>kr.co.aritaum.brand.common.CommonEncodingFilter</filter-class>

    <init-param>

    <param-name>encoding</param-name>

    <param-value>UTF-8</param-value>

    </init-param>

    </filter>

    <filter-mapping>

    <filter-name>Encoding Filter</filter-name>

    <url-pattern>/*</url-pattern>

    </filter-mapping>

CommonEncodingFilter에서 하는 일은

  1. if (request.getCharacterEncoding() == null) {
  2. if (this.encoding != null) {
  3. request.setCharacterEncoding(this.encoding);
  4. }
  5. }

출처: http://neokido.tistory.com/entry/EncodingFilter-%EB%A1%9C-%ED%95%9C%EA%B8%80-%EC%B2%98%EB%A6%AC-%ED%95%98%EA%B8%B0

 

get 해결 방법

톰켓의 conf/server.xml에서 해당 Service의 Connector 속성으로 URIEncoding="UTF-8"을 추가하면됨.

  1. <Connector port="8080" maxHttpHeaderSize="8192"
  2. maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
  3. enableLookups="false" redirectPort="8443" acceptCount="100"
  4. connectionTimeout="20000" disableUploadTimeout="true"
  5. URIEncoding="UTF-8" />

 

만약 서버 설정을 변경할 수 없다면

  1. String title = new String(request.getParameter("title").getBytes("iso-8859-1"), "UTF-8");

이 작업을 계속 해야할 듯. 물론 null 체크 때문에 별도 클래스를 만들게 되겠지만...