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', как указано в ссылке
.
HttpSessionListener
не имеет доступа к запросу, потому что он вызывается, когда запрос не был сделан - для уведомления об уничтожении сеанса.
Итак, ] Фильтр
или Сервлет
лучше всего подходят для проверки запроса и определения тайм-аута сеанса.
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 , но объем работы является чрезмерным.)
Для одноразового использования
Вы не можете (см. API ). Запрос позволяет вам получить доступ к сеансу, но не наоборот.
У вас могут быть даже параллельные запросы для одного и того же сеанса, поэтому это невозможно.