개발기록
15 한글처리 본문
한글이 정상적으로 출력할 수 있는 방법에 대해 학습한다.
보통 데이터가 get방식이냐, post방식이느냐에 따라 처리하는 방식이 달라진다.
15-1 한글처리
이전에는 EUC-KR로 처리했으나 , UTF-8은 만국 공통으로 쓰므로 해당 인코딩 방식을 권장한다.
post 방식 : request로부터 setCharacterEncoding으로 처리
- 해당하는 서블릿마다 해당 옵션을 모두 처리 요함
get 방식 : server.xml에 옵션 추가
- server.xml에 한 번만 처리하면 됨
15-2 Filter
말그대로 무언가를 걸러낸다는 뜻이다.
웹브라우저와 서버간의 통신 중에, 필터를 통해 데이터를 한 번 걸러낸다.
필터를 이용하여 한글처리를 좀 더 쉽게 처리할 수 있다.
이렇게 되면 모든 요청/응답이 다 필터를 지나가기 때문에 한글이 정상적으로 인코딩 될 수 있다.
Filter는 인터페이스이기 때문에, 세가지 메서드를 구현해야 한다.
위 메서드에서 보면 알 수 있듯이, doFilter메서드에서 한글 인코딩 관련 처리를 진행하면 된다.
do Filter 메서드 관련 코드
package com.servlet.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 TempFilter implements Filter {
@Override
public void init(FilterConfig arg0) throws ServletException {
System.out.println(" -- filter init() --");
}
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException {
System.out.println(" -- filter doFilter() --");
// reqeust filter
req.setCharacterEncoding("UTF-8");
chain.doFilter(req, res);
// response filter
// request단에서 이미 처리를 했기 때문에 response는 흘려보내기만 하면 된다.
}
@Override
public void destroy() {
System.out.println(" -- filter destroy() --");
}
}
추가로 web.xml에서 해당 필터를 사용한다는 명시를 해주어야 한다.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>lec15Pjt001</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<!-- filter -->
<filter>
<filter-name>tempFilter</filter-name>
<filter-class>com.servlet.filter.TempFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>tempFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
'JSP' 카테고리의 다른 글
14 Session (0) | 2020.03.24 |
---|---|
13 Cookie (0) | 2020.03.19 |
12 Servlet 데이터 공유 (0) | 2020.03.19 |
10 JSP request, response (0) | 2020.03.19 |
9 JSP 스크립트 (0) | 2020.03.19 |