세션(4) : 서블릿 컨텍스트와 세션

de_sj_awa·2021년 5월 21일
0

이 장의 예제를 실행하기 위해 톰캣 webapps 폴더에 chap10 폴더를 만들었을 것이다. 추가로 chap10_2 폴더를 만들자. 그리고 쿠키에서 작성한 viewCookies.jsp 코드를 chap10 폴더와 chap10_2 폴더에 복사한다. 이제 다음의 두 URL을 사용해서 viewCookies.jsp를 실행할 수 있다.

웹 브라우저를 모두 종료하고 다시 실행한 뒤에 각 URL을 두 번씩 실행해보자. 처음 실행할 때는 세션이 없으므로 세션을 생성하고, 세션 ID를 값으로 갖는 JSESSIONID 쿠키를 응답으로 전송한다. 같은 URL을 두 번째 실행하면 JSESSIONID 쿠키를 서버에 전송하므로 viewCookies.jsp의 실행결과로 JSESSIONID 쿠키 값이 출력되는 것을 확인할 수 있다. 한 브라우저에서 두 URL을 번갈아가면서 차례대로 실행해보면 /chap10과 /chap10_2 경로에 대해 아래 그림과 같이 서로 다른 JSESSIONID 값을 출력하는 것을 확인할 수 있다.

같은 서버에서 /chap10 경로와 /chap10_2 경로가 서로 다른 JSESSIONID 값을 사용하는 이유는 두 경로가 서로 다른 웹 어플리케이션이기 때문이다. 세션 ID를 보관할 때 사용할 JSESSIONID 쿠키의 경로로 웹 어플리케이션 컨텍스트 경로를 사용한다. 즉, 웹 어플리케이션의 컨텍스트 경로가 /chap10이면, 세션을 위한 JSESSIONID 쿠키의 경로도 /chap10이 된다. 경로가 /chap10인 쿠키는 URL이 /chap10 경로로 시작하는 경우에만 전송되므로, /chap10 웹 어플리케이션에서 생성한 JSESSIONID 쿠키는 /chap10 웹 어플리케이션에서만 사용한다. 비슷하게 /chap10_2 웹 어플리케이션에서 생성한 JSESSION_ID 쿠키는 /chap10_2 웹 어플리케이션에서만 사용한다.

서로 다른 두 웹 어플리케이션이 다른 세션 ID를 사용하고 다른 JSESSIONID 쿠키를 사용한다는 것은, 다시 말하면, 서로 다른 웹 어플리케이션이 세션을 공유하지 않음을 의미한다. 즉, 같은 웹 브라우저라 하더라도 /chap10 어플리케이션에서 사용하는 session 기본 객체와 /chap10_2 어플리케이션에서 사용하는 session 기본 객체가 다르다.

참고

  • 최범균의 JSP2.3 웹 프로그래밍
profile
이것저것 관심많은 개발자.

0개의 댓글