[Java Servlet] 회원가입 & 회원정보 삭제 기능 구현 + 404 오류 해결기

이정원·2025년 4월 22일
0

✨ 오늘 구현한 기능

오늘은 Java Servlet 기반 웹 프로젝트에서 다음 두 가지 기능을 새롭게 구현하고 테스트했다.

  • ✅ 회원가입 기능
  • ✅ 회원정보 삭제 기능

삭제 기능 구현 중 발생한 404 에러 문제도 직접 분석하고 해결했다.


👤 회원가입 기능

📁 관련 파일

  • UserLogin.java

⚙️ 기능 개요

  1. 회원가입 폼에서 사용자 정보 전송
  2. Member 객체로 변환 후 MemberService에 전달
  3. 서비스 → DAO → DB에 insert 수행
  4. 결과에 따라 성공/실패 메시지를 출력

🔑 주요 코드

String userId = request.getParameter("userId");
...
Member insMember = new Member();
insMember.setMemberId(userId);
insMember.setMemberPw(userPw);
insMember.setMemberName(userName);
insMember.setMemberPhone(userPhone);
insMember.setMemberAddr(userAddr);

int result = mService.joinMember(insMember);

🖥 결과 메시지

  • ✅ 회원가입 성공: “회원가입이 완료되었습니다.”

  • ⚠️ 아이디 중복: “입력하신 아이디와 중복되는 회원이 이미 존재합니다.”

  • ❌ 오류 발생: “회원 가입 중 오류가 발생하였습니다.”


🗑️ 회원정보 삭제 기능

📁 관련 파일

  • DeleteFormServlet.java

  • DeleteServlet.java

⚙️ 기능 개요

  • 회원 리스트를 테이블 형식으로 출력

  • 각 행에 삭제 링크 추가 → 회원 번호 기반 삭제 요청

  • DeleteServlet에서 memberNo 받아 DB에서 삭제 수행

🧨 발생한 문제: 404 Not Found

  • ❗ 문제 코드
    out.println("삭제");
  • 📌 원인 분석
    ${pageContext.request.contextPath}는 JSP에서만 동작하는 EL 문법

현재는 Servlet 내의 PrintWriter 출력이기 때문에 문자열 그대로 출력됨

따라서 링크가 실제 경로가 아닌 /server_02_servlet/${pageContext...}로 만들어져 404 발생

✅ 해결 방법

  • 🔧 수정 코드
    String contextPath = request.getContextPath();
    out.println("삭제");
  • 🎉 결과
    올바른 경로로 요청이 전송되어 삭제 기능이 정상 동작함

request.getContextPath()는 Servlet에서 context 경로를 동적으로 가져오는 정석적인 방법


📂 오늘 수정 및 작성한 파일 정리

파일명역할
UserLogin.java회원가입 처리 Servlet
DeleteFormServlet.java삭제 링크 포함 회원 목록 출력
DeleteServlet.java회원 삭제 수행 Servlet
MemberService.java비즈니스 로직 처리
MemberDao.javaDB 작업 수행

💬 오늘의 회고

  • EL 표현식은 JSP에서만 사용해야 하며, Servlet에서는 반드시 request.getContextPath() 같은 메서드를 통해 직접 경로를 구성해야 한다는 점을 명확히 배웠다.

  • URL 구성 실수 하나로 기능이 완전히 작동하지 않음을 경험하면서, URL 동적 구성의 중요성을 체감했다.

  • 기능 구현은 물론, 발생한 오류를 직접 디버깅하고 해결함으로써 자신감을 얻었다.

⚙️ 사용 기술 스택

  • Back-End: Java Servlet

  • Database: Oracle XE

  • JDBC Utility: 커스텀 JDBCTemplate 클래스

profile
Study.log

0개의 댓글