신입 개발자가 되기 위해 공부했던 독학 자료들/에러 해결 모음

[STS/스프링] 개인 프로젝트 회원 정보 수정 기능 구현 중 만난 400 잘못된 요청 에러

Seojoo21 2022. 3. 18. 11:21

개인 프로젝트인 SJBoard의 게시판 회원 가입 기능을 만들고 회원 정보 수정 기능을 만들던 중 아래와 같은 에러를 만났다.

구체적인 에러 메세지도 없이 단순히 '400 잘못된 요청'이라고 하니 도대체 어디가 잘못된 것인지 알 길이 없었다. 

영속 계층 (mapper와 sql문) , 비즈니스 계층(service, serviceImpl), 프레젠테이션 계층(controller) 까지 코드 오류가 있나 샅샅이 뒤졌으나 오류가 전혀 없어 좌절하던 중... 예전 게시판 수정 페이지를 만들었을 때 똑같은 오류를 봤었던 생각이 나서 회원 정보 수정 페이지인 update.jsp를 다시 샅샅이 찾아보았다. 코드 오류는 없지만 데이터베이스에 값이 뭔가 잘못 넘어가는 것 같았다. 

 

역시... 알고보니 오류는 회원 정보 수정 페이지인 update.jsp에 있었다. 아래가 바로 문제의 update.jsp. 

겉보기에는 하나도 문제가 없지만 최근 사용자 정보 수정일을 가져와서 화면에 띄워주는 input 태그 내 name 속성을 걸어준 것이 문제였다. 

사용자 정보 수정일의 경우 처음 회원 정보 관리 데이터베이스를 만들었을 당시 시스템 시간인 sysdate가 자동으로 들어가도록 설정해놓았다.

 

그렇기 때문에 회원 정보 수정 페이지인 update.jsp 파일의 input 태그 내에 name 속성을 걸어두면, name 속성에 맞춰 xml 파일에 작성된 mybatis 를 타고 데이터베이스로 수정일이 들어가게 되고, 그럼 데이터베이스 내에서는 sysdate로 해둔 DB 설정과 클라이언트가 보낸 날짜가 충돌하여 400 잘못된 요청 에러가 발생하는 것이었다.  

 

그래서 문제의 name 속성을 없애고 다시 브라우저에서 테스트를 하니 원하는대로 회원 정보 수정 처리가 되었다! 

회원 정보 수정 완료 후 재로그인을 요청하는 alert 창이 나왔다! 
그리고 컨트롤단에서 입력해준대로 로그인 페이지로 이동! 

따라서 이번 에러에서와 같이 데이터베이스가 자동으로 업데이트 하는 정보의 경우에는 view 페이지 단에서 name 속성을 걸면 안된다는 사실을 다시금 몇 시간 동안의 삽질을 통해 깨닫게 되었다.  소중한 경험이라고 생각하자!