반응형

Servlet 한글(UTF-8) 인코딩 설정

 

서블릿에서 PrintWriter와 같은 클래스을 통해 한글을 입력하여 jsp 파일로 내보내는 경우, 그리고 폼 태그에서 입력한 값이 서블릿으로 넘어올 경우에 인코딩 설정이 되어 있지 않으면 한글이 정상적으로 출력되지 않습니다. 아래와 같이 서블릿의 메소드 시작 부분에 인코딩 설정을 해주면 정상적으로 출력됩니다.

 

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

response.setCharacterEncoding("utf-8");

request.setCharacterEncoding("utf-8");

 

@WebServlet("/UserHomeMain")
public class UserHomeMain extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public UserHomeMain() {
        super();
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        	// 넘어온 파라미터의 인코딩 설정을 UTF-8로 설정
        	request.setCharacterEncoding("utf-8");
        
        	// HTML이 UTF-8 형식이라는 것을 브라우저에게 전달
        	response.setContentType("text/html; charset=utf-8");
        
        	// 서블릿을 통해 생성되는 HTML 파일의 인코딩을 UTF-8로 설정
		response.setCharacterEncoding("utf-8");
		
		PrintWriter out = response.getWriter();
		
		out.println("<script>");
		out.println("alert('성공');");
		out.println("</script>");
		
		RequestDispatcher rd = request.getRequestDispatcher("index.jsp");
		rd.forward(request, response);
		
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

 

반응형

+ Recent posts