2013-01-08 1 views
0

버튼이있는 서블릿을 클릭하면 세션 메모리 외부에 영구적 인 Date() 객체가 생성됩니다. 즉, 브라우저를 닫고 페이지에 액세스 한 후 변수 값을 검색 할 수 있습니다.
여기에 가장 좋은 접근 방법이 무엇인지 궁금하십니까?
데이터베이스를 고려하거나 파일에 기록했습니다.

버튼을 클릭하면 서버에 타임 스탬프가 생성되고 레이블에는 버튼이 클릭 된 이후의 시간이 표시됩니다.
본질적으로 기간이지만 모든 사용자/세션에서 동일한 값을 볼 수 있습니다.
요청에 의해 #timeStarted이로드되면 지속 시간을 setInterval()으로 업데이트 할 수있는 자바 스크립트가 일부있을 것입니다.이 부분은 문제가되지 않습니다.세션 외부에서 객체 값을 저장하는 방법

Date timeStarted = new Date(); 
+0

사용 사례가 무엇인지 구체적으로 설명 할 수 있습니까? – Woot4Moo

답변

0

, 버튼을 클릭 한 후
은 서블릿에 xmlhttprequest을 발사했다.
그런 다음 서블릿은 Date() 오브젝트 값 즉 long을 저장하는 파일을 작성했습니다.

페이지가로드되면 파일에서 Date 값을 검색하여 화면에 표시합니다.

0

당신은 getServletContext() 메소드를 사용하여 거기에 저장하여 ApplicationContext의 레벨을 저장할 수 SomeServlet에서

"<label id=\"timeStarted\"> + getTimeStarted() + "</label>" 

<form method="post" action="SomeServlet"> 
    <input type="submit" value="Go"/> 
</form> 

변수/영구 객체 선언. 이렇게하면 응용 프로그램 수준에서 시간을 유지할 수 있습니다.

로드 밸런서가있는 여러 서버에서 응용 프로그램을 실행하는 경우을 기억하면이 기능을 수행하지 못할 수도 있습니다. 그런 다음 DB 기반 솔루션을 찾아야합니다. 그렇지 않으면 응용 프로그램 컨텍스트에 저장하고 모든 사용자를 검색 할 수 있습니다. 당신의 doGet/doPost 메소드에서

, 여기에 몇 가지 AJAX를 사용하기로 결정

ServletContext context = request.getServletContext(); 
context.setAttribute("clicktime", new Timestamp(System.currentTimeMillis())); 
+0

응용 프로그램 컨텍스트와 관련하여 일단 변수가 저장되고 브라우저가 닫히면 (세션이 닫힌 상태) 서버 메모리 내에 계속 남아있게됩니까? – bobbyrne01

+0

@ bobbyrne01 서버에있는 전역 메모리와 저장할 때 사용하는 키가 같기 때문에 동일한 키를 사용하여 검색 할 수 있습니다. 샘플에 대한 답을 편집하십시오 – muruga

관련 문제