사용자가 한글을 서버로 보냈을 때 한글이 깨지는 문제가 발생합니다.
이유는 브라우저가 UTF-8로 인코딩해서 데이터를 서버로 보냈을 경우 톰캣은 기본적으로 ISO-8859-1 방식(한 글자 1바이트)으로 읽기 때문입니다. 깨진 문자를 다시 출력해서 브라우저에서 깨진 한글이 보이는 것입니다.
해결책 : 파라미터를 가져오기 전에 인코딩을 UTF-8로 설정하면 됩니다.
request.setCharacterEncoding("UTF-8");
다른 해결책은 톰캣의 server.xml에서 인코딩을 UTF-8로 설정하면 됩니다.
전체 소스 코드
Reg.java
@WebServlet("/reg")
public class Reg extends HttpServlet {
@Override
public void service (HttpServletRequest request
, HttpServletResponse response) throws IOException, ServletException{
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
request.setCharacterEncoding("UTF-8");
String title=request.getParameter("title");
String content=request.getParameter("content");
out.println("title : "+title);
out.println("content : "+content);
}
}
Reg.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div>
<form action ="reg" method ="post">
<div>
<label>제목 : </label><input name = "title" type ="text">
</div>
<div>
<label>내용: </label>
<textarea name = "content"></textarea>
</div>
<div>
<input type ="submit" value ="등록">
</div>
</form>
</div>
</body>
</html>
'Servlet, JSP' 카테고리의 다른 글
서블릿 필터 (Servlet Filter) 적용하기 (0) | 2021.01.03 |
---|---|
Get 요청과 쿼리 스트링 (0) | 2021.01.03 |
Servlet에서 인코딩 방식과 컨텐츠 타입을 지정해야 하는 이유 (0) | 2021.01.03 |
Annotation(어노테이션)을 사용한 URL 매핑 (0) | 2021.01.03 |
Eclipse를 사용해 "Hello Servlet" 출력하기 (0) | 2021.01.03 |