개주 훈련일지/🔥 히노카미 코구라(오류 수정)

오류내역) java.lang.NullPointerException: Cannot invoke "java.sql.PreparedStatement.executeQuery()" because "pstmt" is null

lshfood2 2025. 12. 3. 15:22

[에러 발생 상황]

쿠키 생성 및 자동 로그인 로직을 만든 후

쿠키를 통한 자동 로그인 진행 시 에러 발생

에러페이지 설정을 통한 500에러와 에러 원인 파악

 

기존에 잘 작동되던 로그인 로직이 쿠키로 실행 시

갑자기 오류가 발생하는 것을 보아

 

쿠키를 통한 로그인 조건에서 로그인 쿼리문을 호출 시

널포인트 익셉션이 발생하는것으로 추정되어 해당 로직을 검토하였다.

  

▼ 쿠키를 통한 로그인 로직 (오류 발생)

if(c.getName().equals("autoLogin")) { // 자동 로그인 쿠키 발견
String autoMid = c.getValue();

MemberDAO mdao = new MemberDAO();
MemberDTO mdto = new MemberDTO();
mdto.setCondition("CHECK_ID");
mdto.setMid(autoMid);

MemberDTO data = mdao.selectOne(mdto);

[오류 원인 파악]

쿠키를 통한 자동 로그인 로직을 살펴보면

setCondition 이 CHECK_ID로 되어있는데

기존 DAO 쿼리문에 컨디션은 LOGIN과 JOIN

이렇게 두 가지밖에 없었다.

 

LOGIN은 ID와 PW 2종을 모두 비교하는 쿼리문이고

JOIN은 ID 일치 여부만 확인하는 쿼리문이므로

쿠기를 통한 비교는 ID만 비교하면 되는

조인쿼리문으로 컨디션 값을 수정하였다.

 

▼ 오류 해결 완료 코드

if(c.getName().equals("autoLogin")) { // 자동 로그인 쿠키 발견
String autoMid = c.getValue();

MemberDAO mdao = new MemberDAO();
MemberDTO mdto = new MemberDTO();
mdto.setCondition("JOIN");
mdto.setMid(autoMid);

MemberDTO data = mdao.selectOne(mdto);

DAO 메서드에서 컨디션에 걸리지 않으면

pstmt가 null이 되어 널포인트익셉션이 발생하므로

쿼리문을 꼭 확인해가면서 코드를 수정하자!