본문 바로가기
Java | spring/JSP | MVC 패턴

JSP 서블릿 한글 세팅(한글 깨짐 해결 하기)

by 워니 wony 2019. 5. 18.

프로그래밍을 하다 보면 영어로 만드는 경우는 문제가 없는데, 한글로 데이터가 전송 되거나 하는 과정에서 한글이 자주 깨지는 현상이 발생한다.

이런 경우에는 아래와 같이 처리하면 된다. 

 

1. 파일의 인코딩 속성을 "UTF-8"으로 변경

2. response.setContentType("text/html;charset=UTF-8");

 

 

예시를 통해 세팅하는 방법을 보면 쉽게 한글 깨짐을 해결 할 수 있다.

 

 

 

영어로 hello 서블릿으로 출력( 한글 깨짐 )

- 만약 아래 코드 hello 라는 문자열을 한글 안녕으로 바꾸면 아래와 같이 깨져서 보여진다.

package com.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class HelloWorld
 */
@WebServlet("/hello.do")
public class HelloWorld extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public HelloWorld() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		
		// 사용자 브라우저에 출력하기 위한 stream을 가져온다.
		PrintWriter out = response.getWriter();
		
		//<h1>태그를 이용한 hello를 오픈한다.
		out.print("<h1>");
		out.print("hello");
		out.print("</h1>");
		
		//stream은 닫아 준다.
		out.close();
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}
}

 

 

 

 

서블릿 한글 깨짐 해결 방법

  • 그럴 때는 해당 파일의 인코딩 속성을 변경해 주고, response 세팅을 해주면 된다.
  • response.setContentType("text/html;charset=UTF-8");

 

ㅇ 해당 java 파일에서 properties 클릭

 

ㅇ Resource에서 encoding을 default가 아닌 Other 클릭 후 "UTF-8"으로 변경

 

 

 

서블릿 한글 깨짐 해결

  • response로 값을 받기 전에 아래와 같이 세팅 문장 추가 하기
    • response.setContentType("text/html;charset=UTF-8");
package com.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class HelloWorld
 */
@WebServlet("/hello.do")
public class HelloWorld extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public HelloWorld() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		
		response.setContentType("text/html;charset=UTF-8");
		
		PrintWriter out = response.getWriter();
		
		out.print("<h1>");
		out.print("안녕하세요!");
		out.print("</h1>");
		
		out.close();
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}
반응형

댓글