티스토리 뷰

Web Development/Jsp

JSP 세션

dev ms 2015. 1. 10. 13:38
반응형

출처 : http://mytory.net/archives/323

 

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에서 세션 변수에 접근하는 방법은 세 가지(?)다.

  1. 그냥 ${sessionName}으로 접근한다.
  2. ${session.sessionName}으로 접근한다.
  3. scope=”session”으로 접근한다.



session.setMaxInactiveInterval() -- 세션 유효시간 설정
session.setAttribute(arg0, arg1) -- 세션에 값을 셋팅한다.
session.getAttribute(arg0) -- 세션에 값을 가져온다.
session.removeAttribute(arg0) -- 세션 값 제거
session.invalidate() -- 세션을 무효화 시킨다.(로그아웃 처리)
 
HttpSession session = request.getSession(); //세션 생성--


ex)HttpSession session = request.getSession(true); 

- (true) 세션이 없으면 새로 생성한다

세션이 있으면 기존 세션을 리턴한다.


ex) HttpSession session = request.getSession(false);

- (false) 세션이 없으면 null을 리턴한다.

세션이 있으면 기존 세션을 리턴한다.
오후 03:52


반응형