sitemash를 이용해서 레이아웃을 구성하는 경우 간혹 서버의 인코딩 문제로 한글이 깨지는 경우가 생길수 있습니다. was의 영향을 받기도 하겠죠... 이 경우
was의 dfile.encoding을 하면 한큐에 해결 되지만 그렇지 않고 간혹 예전 라이브러리 때문에 어쩔수 없이
인코딩을 변경 하지 못하는 경우
response의 인코딩 부분을 filter를 이용해서 변경 해줘야 합니다.
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class CharsetEncodingFilter implements Filter{
private String encoding;
protected FilterConfig filterConfig;
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
}
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
servletRequest.setCharacterEncoding(this.encoding);
servletResponse.setContentType("text/html;charset=" + this.encoding);
filterChain.doFilter(servletRequest, servletResponse);
}
public void destroy() {
this.encoding = null;
this.filterConfig = null;
}
}
setCharacterEncoding 만으로는 완벽하지 않습니다. setContentType 이게 꼭 같이 들어가 줘야 합니다.
혹은 com.opensymphony.module.sitemesh.filter.PageFilter 를 오버라이딩 해서
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import com.opensymphony.module.sitemesh.filter.PageFilter;
public class EncodingPageFilter extends PageFilter {
public EncodingConfigurableSiteMeshFilter() {
super();
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws java.io.IOException, ServletException {
servletRequest.setCharacterEncoding("UTF-8");
servletResponse.setContentType("text/html;charset=UTF-8");
super.doFilter(servletRequest,servletResponse, filterChain);
}
}
이 부분을 어딘가에서는 변경 해줘야 한다는 겁니다.
interceptor 설정으로는 동작 하지 않습니다. web.xml에서 필터 혹은 참조 class를 변경해서 처리 해줘야 합니다.
'JAVA' 카테고리의 다른 글
package com.sun.image.codec.jpeg does not exist (0) | 2018.10.01 |
---|---|
문자열에서 특정문자 개수 확인하기 (0) | 2017.12.07 |
itext이용해서 pdf파일 만드는 샘플 소스 (0) | 2016.10.25 |
스크린샷 소스 (0) | 2016.05.10 |
html화면 pdf로 변경하는 소스 (0) | 2016.05.10 |