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