目前,我正在为在线购物车创建一个 Web 应用程序,我需要在每个 jsf 页面上维护会话。
我的问题是:
如何在托管 bean 中创建和销毁会话
-
如何访问存储在会话变量中的值?像这样?
FacesContext.getCurrentInstance().getExternalContext().getSessionMap.put("key",object);
如何销毁jsf中的会话
我还需要使用销毁会话session.invalidate()
但我失败了!
如何在托管 bean 中创建和销毁会话
您不需要自己创建它。 servlet 容器将根据需要自动为您执行此操作。换句话说,每当您(或 JSF)需要在会话范围内设置一个对象时,servlet 容器就会自动创建会话。在 JSF Web 应用程序中,当您
- 参考一
@SessionScoped
or @ViewScoped
第一次管理bean。
- 通过以下方式获取会话
ExternalContext#getSession()
, 通过true
首次。
- 将对象存储在会话映射中
ExternalContext#getSessionMap()
首次。
- 返回带有以下内容的页面
<h:form>
第一次,状态保存方法设置为“服务器”。
您可以通过以下方式销毁会话ExternalContext#invalidateSession()
. E.g.
public String logout() {
FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
return "login?faces-redirect=true";
}
请记住随后发送重定向,因为会话对象在当前请求的响应中仍然可用,但在下一个请求中不再可用。
如何访问存储在会话变量中的值?
只需将其设为 a 的属性即可@SessionScoped
托管 bean。或者,您也可以手动操作ExternalContext#getSessionMap()
, yes.
如何销毁jsf中的会话
这在第一个问题中已经得到了回答。
也可以看看:
- Servlet 如何工作?实例化、会话、共享变量和多线程 https://stackoverflow.com/questions/3106452/how-do-servlets-work-instantiation-session-variables-and-multithreading/3106909#3106909
- 在 jsf 中启动会话的基本步骤 https://stackoverflow.com/questions/6020994/basic-steps-for-starting-session-in-jsf
- 如何选择合适的bean范围? https://stackoverflow.com/questions/7031885/how-to-choose-the-right-bean-scope/7031941#7031941
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)