#TIL, JSP, Filter 인코딩타입 설정

Yimy·2020년 12월 29일
0

Web

목록 보기
4/6
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");

설정해주지 않으면 매번 적어야 한다. 매우 번거롭다.

그러니 Filter를 설정해주자!

0.

인코딩 타입을 설정하는 자바소스를 src에 먼저 저장한다. 내용은 아래와 같다.

package yeon.util.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 EncodingFilter implements Filter {
	private String encoding;
	protected FilterConfig filterConfig;
	
	public void init(FilterConfig filterConfig) throws ServletException {
		this.filterConfig = filterConfig;
		this.encoding=filterConfig.getInitParameter("encoding");
	}
	
	//HttpServletRequest 객체에 web.xml에서 전달된 문자  인코딩을 설정하는 메소드.
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 
		throws IOException,ServletException {
		if(request.getCharacterEncoding()==null) {
			if(encoding!=null) { // 둘 다 입력값이 있다면,
				request.setCharacterEncoding(encoding); // 해당 타입으로 인코딩셋팅
			}
		}
		chain.doFilter(request,response);		
	}
    
	public void destroy() {    // web.xml에서 전달된 인코딩 값을 초기화하는 메소드
		this.encoding=null;
		this.filterConfig=null;
	}	
	
	public FilterConfig getFilterConfig() {
		return filterConfig;
	}
	
	public void setFilterConfig(FilterConfig filterConfig) {
		this.filterConfig=filterConfig;
	}
}



1.

해당 루트폴더내의 web.xml 파일을 열어서, 아래의 필터태그를 추가해준다.

       <filter>
		<filter-name>Encoding Filter</filter-name>
		<filter-class>내 필터 클래스의 경로</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>



이 태그들을 통해서, 아까 만들어둔 클래스에 파라미터값을 넘기게 된다.
위 예시에서는 UTF-8로 했기 때문에, utf-8로 인코딩타입이 결정된다.

profile
Better version

0개의 댓글