티스토리 뷰

Framework/Struts

[Struts] 의 한글처리

미련곰 2009. 7. 3. 13:32

 
#. 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 {
protected boolean processPreprocess(HttpServletRequest request,HttpServletResponse response) {
  try {
   // HTTP 파라미터의 인코딩을 설정한다.
   request.setCharacterEncoding("euc-kr");
  } catch (UnsupportedEncodingException e) {
   // do nothing;
  }
  return true;
}
}


 struts-config.xml

<controller processorClass="controller.NewRequestProcessor"/>





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>
  <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>
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함