오늘은 회원가입 페이지
를 구현했고, 사용자가 입력한 회원 정보를 DB에 저장하는 로직까지 완성했다. 전체 흐름은 다음과 같다:
파일명 | 역할 |
---|---|
join.jsp | 사용자 입력 폼 |
JoinServlet.java | 회원가입 처리 서블릿 |
MemberDao.java | DB 연동 |
MemberService.java | 비즈니스 로직 처리 |
홍길동
, 서울시 강남구
등 한글 데이터를 입력하면,???
또는 깨진 문자로 저장됨한글이 깨지는 가장 큰 이유는 form 데이터를 서버에서 받아올 때 인코딩 처리를 하지 않아서였다.
JoinServlet.java
코드 (문제 발생)protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String memberId = request.getParameter("memberId");
String memberName = request.getParameter("memberName"); // 한글이 깨짐
...
}
request.setCharacterEncoding("UTF-8")
추가doGet()
메서드 상단에 인코딩 설정을 추가하니까 문제 해결됨!
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8"); // 🔥 이 줄 추가!
String memberId = request.getParameter("memberId");
String memberPw = request.getParameter("memberPw");
String memberName = request.getParameter("memberName");
String memberEmail = request.getParameter("memberEmail");
String memberAddr = request.getParameter("memberAddr");
String memberPhone = request.getParameter("memberPhone");
...
}
🔄
doPost()
에서는doGet()
을 호출하기 때문에doGet()
에서 한 번만 처리해도 됨.
항목 | 설정 여부 |
---|---|
HTML/JSP 파일의 <meta charset="UTF-8"> | ✅ |
request.setCharacterEncoding("UTF-8") | ✅ |
JDBC URL에 characterEncoding=UTF-8 설정 (MySQL이라면) | 확인 필요 |
Oracle 문자셋이 AL32UTF8 인지 확인 | 확인 필요 |
Eclipse 저장 인코딩: UTF-8 로 설정 | ✅ |
JSP/Servlet 기반 웹 개발에서 POST 요청 한글 처리 시
request.setCharacterEncoding("UTF-8")
은 필수다!