information/programming & server2009. 5. 21. 03:12
결론부터 말하면 서버 설정의 변경 없이는 get, post 방식 모두를 해결하기는 힘듬.
post 해결 방법
- WEB-INF/web.xml
-
<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에서 하는 일은
- if (request.getCharacterEncoding() == null) {
- if (this.encoding != null) {
- request.setCharacterEncoding(this.encoding);
- }
- }
get 해결 방법
톰켓의 conf/server.xml에서 해당 Service의 Connector 속성으로 URIEncoding="UTF-8"을 추가하면됨.
- <Connector port="8080" maxHttpHeaderSize="8192"
- maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
- enableLookups="false" redirectPort="8443" acceptCount="100"
- connectionTimeout="20000" disableUploadTimeout="true"
- URIEncoding="UTF-8" />
만약 서버 설정을 변경할 수 없다면
- String title = new String(request.getParameter("title").getBytes("iso-8859-1"), "UTF-8");
이 작업을 계속 해야할 듯. 물론 null 체크 때문에 별도 클래스를 만들게 되겠지만...