2013-09-02 3 views
3

Как предупредить пользователя о завершении сеанса в Java?Как предупредить пользователя до истечения срока действия сеанса в Java?

В StackOverflow этот вопрос обсуждается так много раз. Но мой вопрос несколько иной. У меня есть требование изменить существующее приложение. Мое приложение очень большое. Сессия будет истекла через 30 минут, если от пользователя нет ответа. Я хочу отобразить предупреждение до истечения срока действия сеанса, скажем, на 25-й минуте, я хотел бы показать приглашение пользователю о завершении сеанса

В моем приложении используется более 2000 jsp и не используются общие js. Поэтому я не могу изменить весь файл jsp, чтобы включить код javascript для проверки таймаута сеанса.

Как с этим справиться?

+1

Возможно, было бы лучше сделать это на стороне клиента в Javascript, а не в Java. –

+0

@ Stephen C: Спасибо за ваш ответ. Мое приложение имеет более 2000 файлов. Я не могу создать код javascript на всех страницах 2000 года. – Elayaa

+1

@Elayaa: вы можете оставить один файл javascript на сервере и называть его на каждой странице. –

ответ

3

Создайте iframe и поместите туда страницы jsp.

На верхней странице, где находится iframe, есть javascript-монитор для изменения страницы jsp (https://stackoverflow.com/a/1930942/67566).

Если страница jsp не изменилась за 25 минут, вы можете предупредить пользователя.

Если вы используете вызовы ajax внутри ваших jsp-страниц, это будет более проблематичным, но тот факт, что у вас так много страниц jsp, приводит меня к выводу, что вы этого не делаете.

+0

Спасибо. Означает ли это, что я хочу изменить все страницы jsp 2000? Это сложно – Elayaa

+0

@Elayaa - Вам не нужно изменять какие-либо страницы jsp, так как javascript выполнит проверку. –

-1

Использование SessionListeners.

Внедряя HttpSessionListener, вы можете предупредить пользователя перед тем, как сессия истекла.

Have a look at this sample example

EDIT:

Ниже приведены два способа, которые можно переопределить, sessionCreated(HttpSessionEvent se) и sessionDestroyed(HttpSessionEvent se) Они называются, когда сеанс создается и когда сеанс уничтожается соответственно. Вот пример фрагмента.

 public void sessionCreated(HttpSessionEvent se) 
{ 
    HttpSession session = se.getSession(); 
    System.out.print(getTime() + " (session) Created:"); 
    System.out.println("ID=" + session.getId() + " MaxInactiveInterval="+ 
    session.getMaxInactiveInterval()); 
    } 
public void sessionDestroyed(HttpSessionEvent se) 
{ 
    HttpSession session = se.getSession(); 
    // session has been invalidated and all session data 
    //(except Id)is no longer available 

    System.out.println(getTime() + " (session) Destroyed:ID=" 
    + session.getId()); 
} 
private String getTime() 
{ 
    return new Date(System.currentTimeMillis()).toString(); 
} 

Вы можете написать свою логику в этих методах.

+0

HttpSessionListener вызывается, как только сеанс будет создан или уничтожен. Но я хочу показать сообщение до истечения срока действия сеанса. Как это сделать? – Elayaa

+0

@Elayaa Я отредактировал ответ, который может вам помочь – MaheshVarma

+0

@MaheshVarma Ваш ответ неправильный. он хочет показать какое-то всплывающее окно на стороне клиента. До истечения срока sessio! .. –