HttpSession с использованием сервлетов

Я пытаюсь создать http-сессию продолжительностью 5 секунд. Вот код

protected void doPost(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
    // TODO Auto-generated method stub
    HttpSession sess=req.getSession(true);;
    String fname=req.getParameter("fname");
    String lname=req.getParameter("lname");
    PrintWriter pw=resp.getWriter();
    pw.println("Hello"+" "+fname+" "+lname);
    long stime=sess.getCreationTime();
    long ltime=sess.getLastAccessedTime();
    if((ltime-stime)>5000)
    {
        pw.println("Session Expires");
        sess.invalidate();
    }
    pw.close();
}

Проблема в том, что когда я перезагружаю страницу в первый раз через 5 секунд, срок действия сеанса не истекает, но после перезагрузки страницы во второй раз сеанс истекает. Подскажите плиз....


person user3480006    schedule 31.03.2014    source источник
comment
проверьте значение ltime-stime, ltime и stime.   -  person Divya    schedule 31.03.2014
comment
Поскольку вы всегда создаете новый сеанс, вы всегда получаете новый сеанс.   -  person user207421    schedule 31.03.2014


Ответы (1)


Вы можете установить время истечения сеанса:

// set 5 seconds
// default is 1800 seconds (30 minutes)
sess.setMaxInactiveInterval(5);

И по истечении этого времени сеанс автоматически истечет.

person GingerHead    schedule 31.03.2014
comment
Вы не можете специально играть со временем между сервером и клиентом, они считают время по-разному, и всякий раз, когда лимит превышен, его больше нельзя считать, пока вы снова не обновите страницу. Но таким образом, как и в моем ответе, вы гарантируете, что сервер ведет учет времени и соблюдает его. - person GingerHead; 31.03.2014