문자를 표현하기 위해서 문자집합을 정의해야합니다. 컴퓨터가 인식하도록 Byte형태로 표현한 것이 인코딩 입니다.
다양한 인코딩 중 Eclipse를 설치하면 기본으로 MS949(한글 MS 기본인코딩) 세팅 되어 있습니다.
EUC-KR 인코딩은 한글과 영어만 사용하는 페이지에서 적합
UTF-8 인코딩은 다양한 언어로 작성되는 환경이나, 웹과 같은 다양한 국가의 사람들이 보는 경우에는 더 좋은 방식입니다.
GET 방식
GET 방식은 전달하는 데이터가 URL에 기재되며 한글로 표기되지 않습니다.
Tomcat Servers > Server.xml 에서 URIEncoding="UTF-8"을 선언해줍니다.
<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8090" protocol="HTTP/1.1" redirectPort="8443" />
POST 방식
JSP -> Servlet 으로 데이터가 전달 될 때, 아래와 같이 Servlet에 UTF-8을 선언해 줍니다.
GET 방식은 전달하는 데이터가 URL에 기재되며 한글로 표기되지 않습니다.
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
Console에 한글이 정상적으로 출력되는 것을 확인 할 수 있습니다.
Filter를 사용한 인코딩
개발이 진행 될수록 여러개의 Servlet이 생성되는데, 반복적으로 Encoding을 선언하는 건 비 효율적입니다.
이를 방지하기 위해 Filter를 적용하는 방법이 있습니다.
Annotation 을 이용한 Filter 방식
package lesson12_JSP_Character_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;
import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;
@WebFilter(
filterName = "Filter_annotation",
urlPatterns = "/*",
initParams = {@WebInitParam(name="enc", value="UTF-8")}
)
public class Filter_annotation implements Filter {
private FilterConfig filterConfig = null;
public Filter_annotation() {
// TODO Auto-generated constructor stub
}
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
String charset = filterConfig.getInitParameter("enc");
System.out.println(charset);
// pass the request along the filter chain
chain.doFilter(request, response);
System.out.println("Annotation필터:END");
}
public void init(FilterConfig fConfig) throws ServletException {
this.filterConfig = fConfig;
System.out.println("Annotation필터:START");
}
}
Web.xml 을 이용한 Filter 방식
package lesson12_JSP_Character_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 Filter_xml implements Filter {
public Filter_xml() {
// TODO Auto-generated constructor stub
}
public void destroy() {
System.out.println("WEB.XML필터:END");
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
System.out.println("RequestURL : "+request.getRemoteHost());
chain.doFilter(request, response);
}
public void init(FilterConfig fConfig) throws ServletException {
String filterParam = fConfig.getInitParameter("filterParam");
System.out.println(filterParam);
System.out.println("WEB.XML필터:START");
}
}
<?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>lesson12_JSP_Character</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-name>encodeFilter</filter-name>
<filter-class>lesson12_JSP_Character_Filter.Filter_xml</filter-class>
<init-param>
<param-name>filterParam</param-name>
<param-value>this is parameter</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodeFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
'Web Programming > JSP' 카테고리의 다른 글
10. JSP EL & JSTL (0) | 2020.03.24 |
---|---|
9. JSP DTO , DAO (0) | 2020.03.24 |
8. JSP ConnectionPool (0) | 2020.03.24 |
7. JSP DB Connect (0) | 2020.03.23 |
6. JSP Cookie & Session (0) | 2020.03.21 |