2006. 3. 29. 11:24
제목 : 접속된 사용자 정보 지우기에 대해서.. 글쓴이: 곽태일(cocktail) 2001/02/09 11:02:06 조회수:71 줄수:12 |
안녕하세요. JSP로 서비스를 하려고 합니다. 사용자가 접속을 하면 서버에 정보를 저장을 하게 되는데요. 만약 사용자가 비정상적인 종료를 한다면, 예를들어 종료 버튼을 누르지 않고 브라우저를 닫는다거나 컴퓨터가 다운이 된다면 어떻게 그 사용자의 정보를 지워야 할지를 모르겠네요. 만약 session을 쓴다면 setMaxInactiveInterval()를 써서 그 사용자의 세션이 만료 되는 시점을 catch할 수 있는 방법이 있는지... 조그만 충고라도 저에게는 도움이 될 것 같네요. 어떤 방법을 써야 할지를 감만 잡히면 좋겠는데. |
제목 : Re: 접속된 사용자 정보 지우기에 대해서.. 글쓴이: 최유복(jnylove) 2001/02/10 14:34:31 조회수:1356 줄수:80 |
도움이 될지 모르겠습니다. 저는 다음과 같은 방법으로 브라우저를 죽이거나 컴퓨터가 다운되는등의 비정상적인 종료에 대해서 사용자의 세션을 관리했던 적이 있습니다. 우선 처음에 로그인을 하면서 세션을 만들 때, 세션에 리스너라고 하는걸 하나 넣어둡니다. 그 리스너가 하는 일은 리스너가 세션에 바인딩되거나 언바인딩 될경우 특정 메소드를 호출하도록 하였습니다. 그리고 비정상 종료에 대한 문제는 프레임을 이용해서 안보이도록 프레임을 나눠서 안보이는 곳에 jsp 파일을 뒀습니다. 이 페이지가 언로드 되면 세션의 값을 지우도록 했습니다. Blank.jsp와 LoginCount.java, LoginListener.java에 대한 내용은 다음과 같습니다. Blank.jsp : 로그인 하면서 리스너를 세션에 바인딩 시킴, 이 페이지가 언로드 될경우 해당 세션값 삭제 LoginCount.java : 접속자 증가/ 감소 LoginListener.java : 리스너 Blank.jsp =============================================================== <% session.setAttribute("login.listener", new LoginListener(getServletContext())); %> <script language="JavaScript"> <!-- function delSession() { window.open('invalidate.jsp','Logout','scrollbars=no,width=400,height=200'); } //--> </script> <body onUnLoad="delSession()"> <form name="logout"> <input type=hidden name="logflag" value=""> </form> </body> LoginCount.java ========================================================= public class LoginCount { public static Object lockObject = new Object(); public static int logCount = 0 ; public static synchronized void increaseCount() { synchronized (lockObject) { logCount++; } } public static synchronized void decreaseCount() { synchronized (lockObject) { logCount--; } } } LoginListener.java ====================================================== public class LoginListener implements HttpSessionBindingListener { ServletContext context; public LoginListener(ServletContext context) { this.context = context; } // listenter 가 session에 binding 될 때 호출 public void valueBound(HttpSessionBindingEvent event) { LoginCount.increaseCount(); } // listenter 가 session에 unbinding 될 때 호출 public void valueUnbound(HttpSessionBindingEvent event) { LoginCount.decreaseCount(); } } 미숙하나마 도움이 되었으면 좋겠습니다. |
'JAVA' 카테고리의 다른 글
자바 웹 프로젝트 개발 환경 갖추기 (0) | 2006.04.01 |
---|---|
파일비교 툴 (0) | 2006.03.31 |
Cookie, Session, application, pageContext, page, exception 객체 (0) | 2006.03.29 |
내장객체(request,response,pageContext,session,application,out....) (0) | 2006.03.29 |
Map(HashMap, TreeMap, Hashtable) (0) | 2006.03.29 |