2011-01-15 2 views
0

Я занимаюсь многопользовательским приложением входа, где я использую сеанс для хранения пользовательского объекта.Проблема сеанса в приложении на основе Struts

HttpSession session = request.getSession(true); 
    session.setAttribute("user",user); 

На каждой странице я проверяю использование JSTL, присутствует ли пользовательский объект в сеансе.

<c:choose> 
    <c:when test="${not empty sessionScope.user}"> 
    //jsp code 
    </c:when> 
    <c:otherwise> 
    <logic:redirect forward="welcome"/> 
    </c:otherwise> 
</c:choose> 

Моя проблема заключается в том, что если пользователь нажимает на ссылку HREF в приложении пользователь изменяет к предыдущему пользователю в сеансе. то есть он загружает пользователя из кеша. Если я обновляю страницу, она загрузит нужного пользователя.

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

ответ

0

Прежде всего, сеанс хранится на сервере и не имеет ничего общего с кешем клиента.

Предыдущий пользователь не загружен из кеша (как вы говорите), страница загружается из кеша, так как ссылки идут на сервер в GET. Браузер может кэшировать результат GET, если URL-адрес не изменился с момента последнего запроса.

Чтобы исправить это, вам необходимо аннулировать кеш клиента. Вы можете сделать это, добавив HTTP cache header directives или by adding meta tags in the page.

Я бы предложил пойти с заголовками HTTP, поскольку прокси-серверы обычно не читают содержимое страницы, и вы можете получить кэш на прокси-сервере, даже если клиент не хранит эту страницу в кеше клиента.

Смежные вопросы