[Struts] 의 한글처리
#. Struts는 기본적으로 한글 문자셋을 지원하지 않기때문에 다음과 같은 방법중에 하나를 선택해야한다.
- 1. RequestProcessor를 확장해서 처리하는 방식
- 2. Filter를 이용해서 처리하는 방식
- 3. 필요한 경우에만 한글로 파라미터 데이터 변환방식
- 4. UTF-8 문자열로 통일하는 방법
1. RequestProcessor를 상속해서 만드는 방법
- RequestProcessor는 모든 요청을 분석하는 시작점
- 서블릿 스펙 2.3버전 이전의 컨테이너에서 사용할수 있는 방법
- struts-config.xm에 <controller>를 이용해서 수정
NewRequestProcessor.java
import javax.servlet.http.*;
import org.apache.struts.action.RequestProcessor;
public class NewRequestProcessor extends RequestProcessor {
struts-config.xml
2. Filter를 이용해서 처리하는 방법
- Filter를 전체가 영향 받도록 설정한다.
- 파라미터의 데이터를 사용하기전에 setCharacterEncoding()을 적용한다.
- web.xml에 필터 적용
import java.io.IOException;
import javax.servlet.*;
public class SetCharacterEncodingFilter implements Filter {
public String encoding;
public FilterConfig filterConfig;
public SetCharacterEncodingFilter() {
encoding = null;
filterConfig = null;
}
public void destroy() {
encoding = null;
filterConfig = null;
}
public void doFilter(ServletRequest servletrequest, ServletResponse servletresponse,
FilterChain filterchain) throws IOException, ServletException {
servletrequest.setCharacterEncoding(encoding);
filterchain.doFilter(servletrequest, servletresponse);
}
public void init(FilterConfig filterconfig) throws ServletException {
encoding = filterconfig.getInitParameter("encoding");
}
public String selectEncoding(ServletRequest servletrequest) {
return encoding;
}
}
web.xml
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>EUC-KR</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>