[JSP] session.getAttribute().toString()

nove1080·2023년 4월 26일
0

JSP

목록 보기
1/2
String sessionId = session.getAttribute("UserId").toString();

JSP로 소스코드를 작성 중 문득 위 코드가 어떻게 "ClassName@HashCode" 형식으로 반환되지 않는지 몰라서 잠깐 헤매게 되었다.

의문

우선 session.getAttribute() 메소드의 리턴은 Object 타입이므로 sessionId에 대입되기 위해서는 String 타입으로 형 변환이 되어야한다.
그래서 toString()을 이용하게 되면 의도한 대로 User의 Id 값만 받아올 수 있다. 왜 "ClassName@HashCode" 이런 형식이 아니라 User의 Id값만 가져올 수 있을까?

설명

원인은 session에 "UserId" 속성을 저장할 때 코드가 다음과 같았다.

session.setAttribute("UserId", memberDTO.getId());

위 DTO 객체의 getId() 메소드의 리턴형식이 String 이었기 때문에 UserId의 데이터 타입은 String이 된다. 그 후 session에서 UserId 속성을 가져오게 되면 원래의 데이터 타입이 String 이었으나 메소드의 리턴 타입으로 인해 Object로 형 변환된 것이다.

따라서 UserId 속성을 리턴 받은 후에 toString() 메소드는 Object의 toString() 메소드가 아닌 String의 toString() 메소드를 실행하게 되어 기대하는 값이 나오게 되는 것이었다.

profile
안녕

0개의 댓글