D+29 (2) [세션]
10. 클라이언트와의 대화 2: 세션
세션 - 로그인 로직과 밀접한 관련
서버의 세션을 사용하면 쿠키와 비슷하게 클라이언트의 상태 값을 저장할 수 있다.
쿠키와의 차이점 : 세션은 웹 브라우저가 아니라, 서버에 값이 저장된다는 점
세션을 사용하면 서버는 클라이언트의 상태 값을 유지할 수 있기 때문에, 인증된 사용자 정보를 유지하기 위한 목적으로 세션을 많이 사용함
세션(session)이란
- 웹 컨테이너는 하나의 웹 브라우저에 하나의 세션을 생성한다.
- 웹 브라우저1이 JSP1과 JSP2를 실행하게 되면, 웹브라우저1과 관련된 세션1을 사용한다.
- 웹 브라우저2가 JSP1과 JSP2를 실행하게 되면, 웹브라우저2와 관련된 세션2를 사용한다.
- 같은 JSP 페이지라도 실행하는 웹 브라우저에 따라서 서로 다른 세션을 사용하는 것이다.
세션과 session 기본 객체: 세션은 setAttribute, getAttribute 사용하면 됨
* page 디렉티브의 session="true"값이 기본값임 : 세션이 없으면 새로 생성하고, 이미 있으면 그걸 사용하면 됨
* session 기본 객체를 이용해서 세션에 접근
* 속성을 이용해서 클라이언트 관련 정보 저장
<%
String name = (String)session.getAttribute("이름");
%>
회원명: <%= 이름 %>
세션 종료 / 타임 아웃
* session.invalidate()를 사용해서 세션 종료하기
- 세션이 종료되면 기존에 생성된 세션이 삭제
- 이후 접근 시 새로운 세션이 생성됨
* 마지막 세션 사용 이후 유효 시간이 지나면 자동으로 종료됨
1) web.xml 파일에서 지정하기
2) session기본 객체의 setMaxInactiveInterval() 메서드 이용해서 지정 : 초 단위 지정
<%
session.setMaxInactiveInterval(30); //30초 이후 자동 종료
%>
session 기본 객체에 저장될 값 타입
* 필요한 값을 개별 속성으로 저장하는 것 보다, 속성을 하나로 묶은 자바 클래스를 작성해서 저장하는 것이 좋음!
- 개별 속성 저장 : 유지 보수가 불편함 (신규 속성 추가시 변경할 코드 증가 등)
- 자바 클래스 작성 : 유지 보수 편리함
세션을 사용한 인증 정보 유지
세션에서 사용하는 로그인 로직이 진짜..!!
쿠키로 로그인 하는 방법보다, 세션 사용해서 로그인 로직 만드는 법을 사용함!
세션
(session-jsp에선 이렇게 사용)
(HttpSession-클래스에선 인터페이스로 이렇게 사용하기)
: 세션 저장하기 : session.setAttribute("이름", "값");
: 세션 가져오기 값이 리턴됨 : session.getAttribute("이름");
: 세션 전부 삭제 : session.invalidate();
: 유효 시간 설정 : session.setMaxInactiveInterval();
만든 것
: 쿠키와 세션으로 로그인
: 숙제 - 인터넷에 검색해보기
쿠키박스 가지고 만드는거 : 폼에도, 아이디에도 내용이 들어갈 수 있도록!
로그인(세션가지고 만들기) - 아이디저장 만들어보기 (쿠키 가지고)
아이디, 암호 옆에 아이디저장체크박스 로그인 이렇게 나오게
다음번에 아이디 할때, 로그인