Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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 31
Archives
Today
Total
관리 메뉴

개발기록

15 한글처리 본문

JSP

15 한글처리

옥수수수염챠 2020. 3. 24. 21:42

한글이 정상적으로 출력할 수 있는 방법에 대해 학습한다.

보통 데이터가 get방식이냐, post방식이느냐에 따라 처리하는 방식이 달라진다.

 

15-1 한글처리

출처 : 실전 JSP (renew ver.) - 신입 프로그래머를 위한 강좌 15강

이전에는 EUC-KR로 처리했으나 , UTF-8은 만국 공통으로 쓰므로 해당 인코딩 방식을 권장한다.

post 방식 : request로부터 setCharacterEncoding으로 처리

 - 해당하는 서블릿마다 해당 옵션을 모두 처리 요함

get 방식 : server.xml에 옵션 추가

 - server.xml에 한 번만 처리하면 됨

 

15-2 Filter

말그대로 무언가를 걸러낸다는 뜻이다.

웹브라우저와 서버간의 통신 중에, 필터를 통해 데이터를 한 번 걸러낸다.

필터를 이용하여 한글처리를 좀 더 쉽게 처리할 수 있다.

출처 : 실전 JSP (renew ver.) - 신입 프로그래머를 위한 강좌 15강

이렇게 되면 모든 요청/응답이 다 필터를 지나가기 때문에 한글이 정상적으로 인코딩 될 수 있다.

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