[JSP] 2020.11.16 개발일지

초보개발자
Nov 16, 2020

--

*개인적인 개발 경험담을 다룬 글이라 반말인 점 미리양해 부탁드립니다.

Case 1: response cannot be resolved (implicit object & declaration tag)

사진1

게시판 만들기 프로젝트 중 ‘사진1’의 경우처럼 빨간 화살표가 가리키는 부분이 중복된 코드라 생각해서 22번줄 코드처럼 declaration tag를 작성했다. 그리고 이와 관련된 에러 문구가 ‘사진2’

사진2

‘response cannot be resolved’라고 나온다. 그리고 이와 관련하여 구글링을 해보았지만 관련 정보가 나오지 않아 그냥 내가 직접 stack over flow에 질문을 올리게 되었고 그 결과 사진3과 같은 답변을 받았다.

사진3- image형식말고 code(text)형식으로 코드를 첨부하라는 조언도 받을 수 있었다

즉 JSP에서는 암묵적 객체(미리 준비된 객체)가 존재하며 그 중 하나가 response이고 암묵적 객체는 declaration tag에서 사용할 수 없다는 것이 질문에 대한 답변이었다. 나는 바로 22번 줄 코드를 지웠다. 또한 servlet에서는 import가 필요했던 response가 왜 JSP에서는 필요 없었는지에 대한 궁금증까지도 해결할 수 있었다.

Case 2: MysqlDataTruncation: Data truncation: Data too long for column

Case 2는 회원가입 기능을 구현하기 위해 강의를 따라하던 중 발생했다. 경위와 과정은 다음과 같다.

과정1- email form에 값이 다 안들어감(‘com’을 쓰고 싶었는데)
과정2- 입력 form을 확인해보니 maxlength가 20인걸 확인했고
40으로 확장시킴
과정3- ‘.com’까지 입력이 가능해졌고 회원가입 버튼을 눌렀더니
과정4- 이런 팝업창이 떴다
과정5- 해당 함수에서 -1이 리턴되면 발생되는 팝업창이었다. DB엔 동일 아이디가 없기 때문에 무슨 문제가 발생한건지 원인을 파악하기 위해 catch를 통해 ‘끼욧’+입력받은 userID값을 콘솔창에 출력해보았다.
과정6- 콘솔창의 출력문
과정7- user table의 데이터들

과정6, 7을 비교했을 때 westone034626은 user table에 존재하지 않는 userID인데 왜 catch가 동작하는지 답답했다. 그러다 콘솔창의 에러메시지를 주의깊게 보다 아까 미처 살피지 못한 에러문을 확인했다.

과정8- ‘Data too long for column ‘userEmail’ at row1
과정9- 그리고 ‘desc user;’로 확인해본 user table, userEmail의 Type이 VARCHAR(20)인 것이 눈에 들어온다.
과정10- 즉시 아까 40으로 바꿨던 email input form의 maxlength 속성 값을
과정11- 다시 20으로 되돌려 놓았고
과정12- 그냥 짧은대로 이메일 형식에 맞춰 입력하니
과정13- 제대로 동작하게 되었다.

처음엔 팝업 창의 메시지인 ‘이미 존재하는 아이디입니다’ 에 초점을 두고 문제해결을 시도했다. 생각해보니 저 팝업 메시지는 내가 작성한 것이고 그렇다면 원인 키워드를 ‘이미 존재하는 아이디’로 둘 필요가 없던 것이다. (앞으론 문제 발생 시 바로 console error부터 찾아봐야겠다)

사진4

즉 ‘사진4’ 에서 pstmt.executeUpdate()가 -1을 반환한 이유는 아이디 중복에 의한 것이 아니었고 이메일 값이 길어서였다.

*error name: ‘MysqlDataTruncation: Data truncation: Data too long for column’

* userEmail type이 VARCHAR(20)인데 form max length를 40으로 늘려놓았기 때문에 발생

참고 사이트:

https://stackoverflow.com/questions/64851809/i-cant-use-response-getwriter-for-initialize-about-printwriter-object-in-jsp?noredirect=1#comment114659550_64851809

--

--

No responses yet