[Java Servlet] 회원가입 기능 구현(Eclipse + JSP/Servlet + Oracle)

이정원·2025년 4월 30일
0

📌 구현한 기능

오늘은 회원가입 페이지를 구현했고, 사용자가 입력한 회원 정보를 DB에 저장하는 로직까지 완성했다. 전체 흐름은 다음과 같다:

📁 주요 파일 구성

파일명역할
join.jsp사용자 입력 폼
JoinServlet.java회원가입 처리 서블릿
MemberDao.javaDB 연동
MemberService.java비즈니스 로직 처리

❗ 발생한 문제: 한글 데이터가 DB에서 깨짐

현상

  • 회원가입 폼에 홍길동, 서울시 강남구 등 한글 데이터를 입력하면,
  • DB에는 ??? 또는 깨진 문자로 저장됨
  • DB 조회 시 한글이 제대로 보이지 않음

🔍 원인 분석

한글이 깨지는 가장 큰 이유는 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")은 필수다!

profile
Study.log

0개의 댓글