Нет действительно надежного способа обнаружить это.Вы могли бы поиграть с каким-либо токеном на основе сеанса в качестве параметра запроса во всех ссылках / формах и проверить его в фильтре, но это полностью поддельное и не очень оптимизированное для SEO.
Лучшее, что вы можете сделать, это добавить <meta http-equiv="refresh">
тег <head>
основного шаблона, который перенаправляет страницу на страницу ошибки тайм-аута сеанса автоматически по истечении сеанса.Поскольку вы используете страницу с общей ошибкой, вы можете передать условие в качестве параметра запроса:
<meta http-equiv="refresh" content="${pageContext.session.maxInactiveInterval};url=error.jsp?type=timeout" />
и проверить его в error.jsp
следующим образом:
<c:choose>
<c:when test="${param.type == 'timeout'}">
<p>Your session has been timed out.</p>
</c:when>
<c:otherwise>
<!-- Handle default case here. -->
</c:otherwise>
</c:choose>
Oh, да, ${pageContext.session}
законно действителен.${pageContext.request.session}
- просто ненужный обход.Проверьте PageContext
javadoc для всех доступных геттеров.