📕🐘 도로락 - 코끼리를 냉장고에 넣는 방법

# 세션 (10)

Servlet&Jsp 2019. 8. 1. 11:18

[서블릿/JSP] Tomcat 재시작시 세션 유지/제거 설정하기

톰캣(Tomcat) 재시작시 세션 유지/제거 설정하기세션은 브라우저 단위로 생성되는 클라이언트 상태 유지 객체입니다. 세션은 사용자의 브라우저가 종료되거나 HttpSession#invalidate()가 호출되었을 때 마지막으로 설정된 timeout에 의해 세션이 만료되었을 때 제거됩니다.그렇다면 톰캣 즉 서버가 종료된 경우에는 어떨까요? 톰캣의 경우 기본적으로 org.apache.catalina.session.StandardManager 라는 세션매니저를 통해서 세션이 관리됩니다. 그런데 이녀석은 톰캣이 종료될 때 살아있는 세션을 임시저장소(디스크)에 SESSIONS.ser 이라는 파일로 저장해두고 재시작될 때 이 파일을 읽어 세션을 다시 살려버립니다. 만약 톰캣이 종료될 때 가지고 있던 세션을 모두 제..

Servlet&Jsp 2019. 7. 18. 14:56

[서블릿/JSP] HttpSessionAttributeListener 리스너로 세션 Attribute 변경시 이벤트 처리하기

이전글[서블릿/JSP] 리스너(Listner)란? 이벤트 리스너의 개념 설명. 구현 및 등록하기[서블릿/JSP] HttpSessionListener 리스너로 세션 생성 및 종료시 이벤트 처리하기[서블릿/JSP] 세션(Session)이란? 세션 생성하는 방법 및 세션 객체 설명HttpSession의 attributeHttpSession 객체는 세션에 값을 저장하기 위한 용도로 attribute를 조작할 수 있는 두 가지 메서드를 가지고 있습니다.public void setAttribute(String name, Object value) //attribute 새로 추가 또는 변경public void removeAttribute(String name) //attribute 제거setAttribute()는 새로..

Servlet&Jsp 2019. 7. 17. 21:45

[서블릿/JSP] HttpSessionListener 리스너로 세션 생성 및 종료시 이벤트 처리하기

이전글[서블릿/JSP] 리스너(Listner)란? 이벤트 리스너의 개념 설명. 구현 및 등록하기[서블릿/JSP] 세션(Session)이란? 세션 생성하는 방법 및 세션 객체 설명HttpSessionListener 리스너JSP/Servlet 환경에서는 접속한 클라이언트에 대한 정보를 HttpSession 객체에 담아 표현합니다. HttpSession 객체는 HTTP 요청시 생성되었다가 응답시 사라지는 ServletRequest 객체와는 다르게 JSP나 Servlet에 의해 생성된 후 설정된 timeout에 따라서 제거됩니다.그리고 이 HttpSession 객체가 생성되고 제거될 때 발생되는 이벤트가 HttpSessionEvent이며, 이 이벤트를 처리하는 리스너가 HttpSessionListener 리스너..

Servlet&Jsp 2019. 7. 9. 20:30

[서블릿/JSP] 서버의 세션 수 제한하는 방법

서버의 세션 수 제한하는 방법만약 사용자가 로그인 했을때 서버에 세션 객체를 생성한다고 가정했을때 특정 사용자의 수 만큼만 접속을 제한하고 싶은 경우 어떻게 해야할까요? 가장 단순한 방법으로는 서블릿 컨테이너(서버)의 세션 객체의 최대 생성 수를 제한하면 됩니다. 물론 요즘은 인증, 인가와 관련된 수많은 프레임웍이 있기에 실무에서도 이러한 방식을 사용하는 경우가 있는지는 의문입니다. 아마 서버의 사양으로 인한 메모리 관리 용도로 사용하는 경우정도가 있지 않을까 싶습니다.설정 방법톰캣의 경우 [톰캣 설치 디렉터리]/conf/context.xml에 세션객체의 최대 수를 제한할 수 있는 maxActiveSessions 속성을 지원합니다. 태그 하위에 태그를 넣고 속성으로 maxActiveSessions 속성..

Servlet&Jsp 2019. 7. 9. 12:45

[서블릿/JSP] 세션 timeout 설정 방법들과 적용 우선순위

참고글[서블릿/JSP] 세션(session)의 마지막 접근시간 및 유효시간에 대해[서블릿/JSP] 세션(Session)이란? 세션 생성하는 방법 및 세션 객체 설명[서블릿/JSP] 세션(session)을 명시적으로 종료시키는 방법세션(Session)세션은 접속한 사용자의 상태를 담은 객체입니다. stateless인 HTTP의 특성상 브라우저는 웹서버와의 관계에서 접속중이라는 개념이 없고 매번 HTTP요청을 통해 잠깐 접근했다가 응답이 오면 접근을 끊어버리기 때문입니다.따라서 아파치 웹서버나 톰캣같은 서블릿 컨테이너는 웹환경에서 사용자가 접속중이다라는 개념이 없으므로 특별한 방식을 사용합니다. 그것은 세션 객체를 생성해두고 일정시간(TIMEOUT)내에 클라이언트가 HTTP 요청을 보낸경우 아직 사용자가 떠..

Servlet&Jsp 2019. 1. 3. 16:19

[서블릿/JSP] 웹어플리케이션(ServletContext)과 세션(Session)의 관계

참고글[서블릿/JSP] JSP 기본 객체별 생명 주기(scope)[서블릿/JSP] JSP application 기본 객체란? web.xml 초기 설정 값 가져오기웹어플리케이션(ServletContext)과 세션(Session)의 관계서블릿 컨테이너는(예를 들어 톰캣) 여러개의 웹어플리케이션을 배포할 수 있습니다. 웹어플리케이션은 서블릿 컨테이너의 webapps 디렉터리 하위에 배포되는데 webapps/ROOT/ 경로로 배포되면 컨텍스트 경로는 localhost/ 와 같이 / 경로로 배포되며, webapps/jspStudy 와 같이 배포되면 컨텍스트 경로는 localhost/jspStudy/가 됩니다.즉 webapps 하위의 배포 디렉터리별로 웹어플리케이션의 단위가 결정되는것입니다. 그리고 각각의 웹 어플..

Servlet&Jsp 2018. 12. 18. 05:00

[서블릿/JSP] 세션(session)의 마지막 접근시간 및 유효시간에 대해

참고글[서블릿/JSP] 세션(Session)이란? 세션 생성하는 방법 및 세션 객체 설명[서블릿/JSP] 세션(session)을 명시적으로 종료시키는 방법세션의 자동 종료세션은 지정한 유효시간만큼 접근하지 않게 되면 웹컨테이너에 의해 자동으로 종료됩니다. 즉 컴퓨터의 화면보호기와 같인 일정시간 이상 세션에 대해 아무런 행동을 취하지 않게 되면 자동으로 종료되는 것입니다. 세션이 종료되는 시점에 세션에 저장되어 있는 값들 또한 함께 제거됩니다. 만약 세션이 종료된 이후 세션에 접근하려 하면 새로운 세션이 생성됩니다.세션의 마지막 접근 시간세션 객체는 브라우저(클라이언트)측에서 가장 최근에 접근한 시간값을 가지고 있습니다. 세션의 유효시간은 가장 최근에 접근한 시간으로부터 최대 어느정도의 시간까지 세션을 살..

Servlet&Jsp 2018. 12. 18. 00:35

[서블릿/JSP] 세션(session)을 명시적으로 종료시키는 방법

참고글[서블릿/JSP] 세션(Session)이란? 세션 생성하는 방법 및 세션 객체 설명[서블릿/JSP] 세션(session)의 마지막 접근시간 및 유효시간에 대해세션의 제거세션을 제거하는 방법에는 두 가지가 있습니다. 첫번째는 명시적으로 세션을 종료시켜 제거하는 방법이며 두번째는 유효시간을 지정해 유효시간이 지난 세션이 자동으로 종료되게 하는 방법입니다. 여기서는 세션을 명시적으로 종료시키는 방법에 대해 설명하며, 두번째 방법에 대해서는 참고글을 읽어주시기 바랍니다.세션을 종료할때에는 세션 객체의 invalidate() 메서드를 사용하면 됩니다. invalidate() 메서드를 호출할 경우 세션은 종료되며, 그에 따라서 세션에 저장되어 있는 여러가지 값들 또한 사라지게 됩니다. JSP에서는 sessio..

Servlet&Jsp 2018. 10. 16. 09:46

[서블릿/JSP] 세션(Session)이란? 세션 생성하는 방법 및 세션 객체 설명

이전글[서블릿/JSP] 쿠키(Cookie)의 path 속성으로 전송 URL 지정하기[HTTP] HTTP 쿠키란(Cookie)? 쿠키 등장 배경 그리고 쿠키와 세션의 차이점.세션(Session)이란?세션은 HTTP 프로토콜을 이용하는 웹 환경에서 상태를 유지하기 위한 기술입니다. HTTP는 요청과 응답으로 이루어지며, 새로고침이나 특정 URL을 요청할때마다 새로운 HTTP 요청이 생성되기때문에 이들간에 상태를 유지할 수 있는 방법이 없습니다. 예를들어 /login.do 라는 URL에서 로그인을 했다고 하더라도 /boards 페이지로 이동하게 되면 새로운 HTTP 요청이므로 로그인을 했다는 정보를 어딘가에 확인할 수 없습니다. DB를 통해 로그인시에 login이라는 상태를 저장 후 logout시에 logou..

웹[Web] 2018. 9. 11. 00:21

[HTTP] HTTP 쿠키란(Cookie)? 쿠키 등장 배경 그리고 쿠키와 세션의 차이점.

쿠키란(Cookie)? 쿠키 등장 배경쿠키는 HTTP 환경(웹환경)에서 상태를 유지하기 위한 기술입니다. HTTP의 특성상 매번 발생하는 HTTP 트랜잭션은 별개의 요청으로 판단하기 때문에 상태를 가질수 없습니다. 예를 들어 www.exam.com/page1 요청 후 www.exam.com/page2 를 요청하는 경우 이 둘의 요청은 서로 연관성을 가지지 않고 독립적이며, page1에서 만들어진 데이터는 page2를 요청할때 유지되지 않는 것입니다.이러한 사실때문에 상태를 가지지 않는다고 하여 HTTP를 stateless protocol(무상태 프로토콜)이라고 합니다. 그러나 웹 서비스를 개발하다 보면 필연적으로 여러 요청(또는 여러 페이지)에 걸쳐 상태를 유지해야 하는 경우가 있습니다.최초 페이지에서 ..