웹에서 입력한 한글을 받아서 출력할 때 한글이 깨지는 경우
글. 수알치 오상문
이클립스 사용 중(이클립스 환경은 UTF-8을 사용하도록 설정한 상태),
웹에서 한글 이름을 입력받고, 그 내용을 다시 웹에 출력하는데 한글 이름만 깨지는 경우가 있다.
(단순히 웹 소스 코드에 한글을 적어서 출력할 때는 한글이 정상적으로 동작한다.)
[입력 화면]
[결과 화면]
콘솔에 출력해도 전달받은 한글 부분이 깨지는데, 전달받은 글자 코드 설정을 해야 문제가 해결된다.
다음처럼 요청 데이터의 인코딩을 UTF-8로 설정하는 부분을 추가하면 한글이 정상 출력된다.
request.setCharacterEncoding("UTF-8");
[입력 받는 HTML 코드]
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Test</title>
</head>
<body>
<h1>이름을 입력하세요.</h1>
<form action="intro" method="post">
<input type="text" name="name" style="width: 50px;">
<input type="submit" value="Submit">
</form>
</body>
</html>
[입력 내용을 받아서 다시 웹에 출력하는 Java 코드]
package exam;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(description = "Intro Servlet", urlPatterns = { "/intro" })
public class Intro extends HttpServlet {
private static final long serialVersionUID = 1L;
public Intro() {
super();
}
@Override
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8"); // 이곳에서 요청에 대한 코드 지정
String name = request.getParameter("name");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println(name + "님, 안녕하세요."); // 웹에 반환 출력
System.out.println(name + "님, 안녕하세요."); // 콘솔 출력 테스트
}
}
'JAVA Servlet,JSP' 카테고리의 다른 글
JAVA Servlet, JSP 표기 문법 (0) | 2022.06.03 |
---|---|
JSP, Servlet, java, class 파일 및 동작 원리 (0) | 2022.06.02 |
클라이언트 정보 출력 (0) | 2022.05.26 |
GET이나 Form 매개변수(파라미터) 값 처리 (0) | 2022.05.26 |
HTML 요청 헤더 정보 확인 (Java Servlet) (0) | 2022.05.26 |