안녕하세요, 내 /logout
서블릿 세션 제한 시간을 계산하려고합니다. 내가 timeout
동적으로 세션 시간 초과를 계산하는 방법은 무엇입니까?
내 doPost 메소드 시간 종료 전에 일정 시간을 정의하는 것은 여기에 있습니다 :
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.core.MediaType;
import com.sun.jersey.api.client.ClientResponse.Status;
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
long timePassed = 0;
long timeout = 60;
timePassed = (System.currentTimeMillis() - request.getSession().getLastAccessedTime())/1000;
System.out.println(timePassed);
response.setStatus(Status.OK.getStatusCode());
response.getWriter().write("[{\"timePassed\": \""+ timePassed + "\", \"limit\": \""+ timeout + "\"}]");
response.setContentType(MediaType.APPLICATION_JSON);
if(timePassed >= timeout){
doGet(request, response);
}
}
나는이 방법 아약스 호출로 모든 초를 기록했다. 아약스 호출이 제대로 작동합니다. 프런트 엔드에서 데이터를 가져 오기 때문에 GUI가 제대로 작동합니다. 하지만 timePassed
은 0에 머물러 있습니다. 사용자가 유휴 상태로 머문 시간은 어떻게 계산합니까?
Ajax로 서버에 접속하면 세션 액세스로 간주됩니다. 그래서 그렇게하면 세션이 만료되는 것을 방지 할 수 있습니다. – developerwjk
@developerwjk 예 나는 내가 다른 방식으로 그것을하는 방법에 아직도 붙어있는 것을 깨달았다. – th3r1singking
유휴 상태 일 때 무엇을 의미합니까? 세션 생성 시간이 있지만 "유휴"가 아닌 세션이 생성 된 이후의 시간이 다를 수 있습니다. – stdunbar