сеанс, чтобы показать сообщение и кнопку «Назад»

у меня есть 3 JSP: -

  1. а.jsp
  2. b.jsp
  3. c.jsp

Из a.jsp я перехожу к b.jsp, чтобы показать какой-то результат. И когда пользователь обновляет одну из записей, я вызываю c.jsp, который фактически обновляет ее. Поэтому после обновления он перенаправляется на a.jsp с сообщением «Успешно обновлено». И я установил это сообщение в сеансе. А в a.jsp после показа этого сообщения. я аннулирую сеанс.

Проблема в том, что когда я нажимаю кнопку «Назад» в браузере, он все еще показывает сообщение. Как я могу это решить. Помогите пожалуйста мне. Спасибо


person Ravi Sharma    schedule 07.01.2012    source источник
comment
Не могли бы вы поделиться исходным кодом? Однако я подозреваю, что вы помещаете java-код в jsp, который является анти-шаблоном.   -  person Adrian Mitev    schedule 07.01.2012
comment
Может быть, [это] [1] поможет... [1]: stackoverflow.com/questions/8785682/   -  person Fahim Parkar    schedule 11.01.2012


Ответы (2)


Я бы предложил несколько шагов, чтобы сделать это...

Когда вы нажмете кнопку «Назад», браузер получит страницу из кеша... поэтому установите дату JSP-страницы Expires на какой-то предыдущий день/время, чтобы получить ее с сервера (происхождения) вместо кеша. Это можно сделать, написав пользовательский тег, и в этом случае установите заголовок Expires для объекта HttpServletRequest, и достаточно добавить этот тег на страницу JSP.

Чтобы сделать страницу недействительной и перенаправить на a.jsp при отсутствии действительного сеанса, напишите Filter для этого задания.

Тег можно написать так

public class ExpiryTag extends SimpleTagSupport{

    @Override
    public void doTag() throws JspException, IOException {

        PageContext pageContext = (PageContext) getJspContext(); 
        Calendar instance = Calendar.getInstance();
        instance.add(Calendar.DAY_OF_MONTH, -1);
        HttpServletResponse response = (HttpServletResponse) pageContext.getResponse();
        response.addHeader("Expires", instance.getTime().toString());

    }

}

Сопоставить тег в файле tld следующим образом

<tag>
            <name>expired</name>
            <tag-class>com.analysis.mvc.tags.ExpiryTag</tag-class>
            <body-content>empty</body-content>
        </tag>

Затем используйте тег в JSP, как это

<prefix:expired/>

Для обработки сеанса вы можете пройти через это для общего понимания.

person Pokuri    schedule 07.01.2012

Если a.jsp, b.jsp и c.jsp являются частью единого процесса, попробуйте разместить их на одной странице (скажем, abc.jsp). Теперь с помощью некоторых атрибутов отображается содержимое либо a.jsp/b.jsp/c.jsp, что-то вроде мастера.

person Apurv    schedule 11.01.2012