본문 바로가기

[JSP]

[JSP] 10월 29일 세션(session)

세션 종료 / 타임 아웃

*session.invalidate() 을 이용해서 세션 종료

-세션이 종료되면 기존에 생성된 세션이 삭제

-이후 접근 시 새로운 세션 생성 됨.


*마지막 세션 사용 이후 유효 시간이 지나면 자동 종료

-session 기본 객체의 setMaxInactiveInterval() 메소드 이용해서 지정.


session 기본 객체에 저장될 값 타입

*필요한 값을 개별 속성으로 저장하는 것 보다는

-유지보수 불편함

*속성을 하나로 묶은 자바 클래스를 작성해서 저장하는 것이 좋음

-유지 보수 편리함


예를들자면 id/pw/name 따로 저장하지말고, id/pw/name을 멤버로 갖는 Member 구조체로 쓰라는말이다.


session관련 기본 테스트를 해볼 jsp파일을 만들어서 테스트 해보자.


*세션 정보를 볼 sessionInfo.jsp

시간을 이쁘게 출력하기 위해서 SimpleDateFormat을 사용하였다.

<body>

<%

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

%>


세션 ID : <%= session.getId() %>

<br>

세션 생성 시간 : <%= sdf.format(new Date(session.getCreationTime())) %>

<br>

세션 최종 시간 : <%= sdf.format(new Date(session.getLastAccessedTime())) %>

</body>


*세션 유지되는 시간을 지정할 수 있는 setSessionTime.jsp


<body>

<%

session.setMaxInactiveInterval(10);

%>

</body>




기본적으로 세션 유지시간은 지정해주지 않으면 30분이다. 괄호 안에 숫자를 넣어주면 세션 유지시간 조정가능(초단위).


*로그인이 성공했다고생각하고 로그인 된 정보를 세션에 담아보자. setMemberInfo.jsp

구조체로 담는다!!

<body>

<%

session.setAttribute("isLogin", true);

Member member = new Member();

member.setName("홍길동");

member.setId("gil");

session.setAttribute("member", member);

%>


*로그인이 정보를 볼 getMemberInfo.jsp


<body>

<%


if(session.getAttribute("isLogin") != null)

{

Member member = (Member) session.getAttribute("member");

out.println("아이디 : " + member.getId());

out.println("<br>");

out.println("이름 : " + member.getName());

}

else

{

out.println("로그인 되있지 않습니다.");

}

%>

</body>



*세션을 죽이는 페이지 sessionClose.jsp


<body>

<% session.invalidate(); %>

</body>



**테스트 해보는법!

이렇게 작성하시고, getMemberInfo 실행해서 로그인 안된거 확인하시고, setMemberInfo한번 실행 후 다시

getMemberInfo에서 세션에 저장된 회원정보가 출력되는 것을 확인해본다.

세션에 저장된 회원정보가 출력되는 것을 확인해보고, setSessionTime 한번 실행 후 10초 후 getMemberInfo 확인해보자!

setMemberInfo → getMemberInfo 확인

sessionClose → getMemberInfo 세션 삭제된 것 까지 확인해보자!