GWT: response.setHeader - как?

Привет, у меня есть проект Google Web Toolkit. Я бы хотел использовать

response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");

Но я понятия не имею, как установить заголовок в GWT. Имею вот такое "стартовое" приложение:

public class Starter extends HttpServlet {

    @Override
    public void init() throws ServletException {
      //do something    
    }
}

Но как получить доступ к «ответу»? Мне нужен «HttpServletResponse». Но как и где его поставить? Я видел этот запрос: Кеширование на стороне клиента в GWT, это что-то вроде моего, но его не помогает.

Спасибо


person Lissy    schedule 08.06.2011    source источник
comment
HttpServletResponse доступен как параметр в методах doGet () / doPost (). Метод init () - это не тот метод, который выполняет фактическую работу в сервлете!   -  person Chris Lercher    schedule 09.06.2011


Ответы (3)


Я написал ответ здесь, в котором объясняется, как устанавливать заголовки с помощью фильтра (мой примерный код должен работать во всех контейнерах сервлетов, таких как Tomcat, Jetty, ...)

Это можно применить как к статическим файлам (если вы обслуживаете их из контейнера сервлета), так и к вашим сервлетам (просто убедитесь, что фильтр применяется к тому же пути, что и ваш сервлет - тогда ваш фильтр "обернет" сервлет. Это более удобно, чем помещать код заголовка непосредственно в ваши сервлеты, что также возможно в ваших doGet() или doPost() методах.)

Другой вариант - установить перед веб-сервером обратный прокси-сервер и позволить ему добавить заголовки кеширования на основе URI запроса (или, возможно, для всех запросов POST и т. д.)

При использовании GWT очень важно убедиться, что для разных ресурсов установлены правильные заголовки кеширования - см. Мой вопрос здесь. В случае сомнений всегда выбирайте не кешировать, а затем вводите кеширование шаг за шагом!

person Chris Lercher    schedule 08.06.2011

Вы используете GWT AJAX (AsyncCallBack и т. Д.)?

если вы просто встраиваете свой модуль GWT в существующий JSP и вызываете методы на стороне сервера через AJAX, тогда у вас нет доступа к объекту ответа. Платформа GWT заботится об отправке запроса в виде XmlHttpRequest, его получении и перерисовке DOM браузера. У вас нет точного контроля над ответом.

person Basanth Roy    schedule 08.06.2011
comment
Да, я использую gwt ajax, но я понятия не имею, что вы имеете в виду под остальным в вашем тексте :) - person Lissy; 08.06.2011

Один из вариантов, на который стоит обратить внимание, - это настроить фильтр, чтобы ваши запросы проходили через него. Там вы можете изменить заголовки ответов.

person Alex Gitelman    schedule 08.06.2011