Как я могу получить HttpServletRequest когда в HttpSessionListener?

import webbrowser 
new = 2 # open in a new tab, if possible

# open a public URL, in this case, the webbrowser docs
url = "http://docs.python.org/library/webbrowser.html"
webbrowser.get(using='google-chrome').open(url,new=new)

Вы можете использовать любой другой браузер, изменив параметр 'using', как указано в ссылке

.

6
задан Nicholas Trandem 4 June 2009 в 23:10
поделиться

3 ответа

HttpSessionListener не имеет доступа к запросу, потому что он вызывается, когда запрос не был сделан - для уведомления об уничтожении сеанса.

Итак, ] Фильтр или Сервлет лучше всего подходят для проверки запроса и определения тайм-аута сеанса.

9
ответ дан 9 December 2019 в 20:48
поделиться
FacesContext ctx = FacesContext.getCurrentInstance();

Контексты JSF являются локальными для каждого запроса и для потока. Таким образом, этот вызов метода, вероятно, вернет null вне вызовов контроллера JSF (например, FacesServlet.service ) - так что, другие потоки и любые запросы, которые не проходят через отображение сервлета Faces.

Технически возможно установить этот тайм-аут с помощью механизма JSF - вы можете использовать прослушиватель фазы для проверки наличия сеанс после RENDER RESPONSE , хотя вам все равно придется привести к сервлету API , чтобы установить тайм-аут. Преимущество фазовых слушателей в том, что они могут быть зарегистрированы либо глобально в faces-config ( см. Spec ), либо для конкретных представлений . Слушатель глобальной фазы, определенный в JAR с помощью META-INF / faces-config.xml , может быть помещен в несколько WAR, что позволяет легко повторно использовать функциональность.

(Вы также можете переопределить способ предоставления сеанса для JSF , но объем работы является чрезмерным.)

Для одноразового использования

2
ответ дан 9 December 2019 в 20:48
поделиться

Вы не можете (см. API ). Запрос позволяет вам получить доступ к сеансу, но не наоборот.

У вас могут быть даже параллельные запросы для одного и того же сеанса, поэтому это невозможно.

1
ответ дан 9 December 2019 в 20:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: