JSTL을 사용하면 <% %>
, <%= %>
따위의 문자를 사용하지 않아도 되므로 코드가 덜 어지럽다.
그런데 최근 코딩중 곤란한 일이 생겼다. 세션에 저장한 객체에 접근이 안 되는 것이었다.
JSTL로 세션에 접근하는 기본적인 방법은, 그냥 ${sessionName}
이다. 즉, 서블릿에서
session.setAttribute("sessionName", sessionInfo);
이렇게 저장을 했다면 JSTL 페이지에서 그냥 ${sessionName}
으로 호출하면 된다.
그런데 그렇게 접근이 안 되는 것이었다. 그래서 한참 고생하던 차에 원인을 알게 됐다. 서블릿을 작성한 사람이 코드를 이렇게 써놨었다.
session.setAttribute("session", sessionInfo);
자, 이렇게 썼을 때 어떤 문제가 생겼는지 보자.
jsp 페이지에 ${session}
이라서 써서 화면에 출력시키고 나서야 문제점을 알게 됐다.
${session}
은 전체 세션 목록을 의미했던 것이다. 즉, ${session}
이라고 쓰자 이런 메세지를 출력했다.
{falg=true, flag2=true,
session=com.login.SessionInfo@a79c31}
그래서 이렇게 접근하니까 그제서야 내가 의도한대로 작동을 했다.
${session.session}
이렇게 정리할 수 있겠다.
JSTL에서 세션 변수에 접근하는 방법은 세 가지(?)다.
- 그냥
${sessionName}
으로 접근한다. ${session.sessionName}
으로 접근한다.scope="session"
으로 접근한다.
댓글 남기기