Language/JSP

D+29 (2) [세션]

구일일구 2022. 9. 1. 20:05
반응형

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();

 

만든 것

: 쿠키와 세션으로 로그인

: 숙제 - 인터넷에 검색해보기

쿠키박스 가지고 만드는거 : 폼에도, 아이디에도 내용이 들어갈 수 있도록!

로그인(세션가지고 만들기) - 아이디저장 만들어보기 (쿠키 가지고)

아이디, 암호 옆에 아이디저장체크박스 로그인 이렇게 나오게

다음번에 아이디 할때, 로그인 

 

 

 

 

 

반응형