目前,我正在为在线购物车创建一个 Web 应用程序,我需要在每个 jsf 页面上维护会话。
我的问题是:
如何在托管 bean 中创建和销毁会话
如何访问存储在会话变量中的值?像这样?
FacesContext.getCurrentInstance().getExternalContext().getSessionMap.put("key",object);
如何在 jsf 中销毁会话
我还需要使用销毁会话,session.invalidate()
但我失败了!
目前,我正在为在线购物车创建一个 Web 应用程序,我需要在每个 jsf 页面上维护会话。
我的问题是:
如何在托管 bean 中创建和销毁会话
如何访问存储在会话变量中的值?像这样?
FacesContext.getCurrentInstance().getExternalContext().getSessionMap.put("key",object);
如何在 jsf 中销毁会话
我还需要使用销毁会话,session.invalidate()
但我失败了!
如何在托管 bean 中创建和销毁会话
您不需要自己创建它。servletcontainer 会根据需要自动为您完成。换句话说,每当您(或 JSF)需要在会话范围内设置对象时,servletcontainer 将自动创建会话。在 JSF Web 应用程序中,当您
@SessionScoped
或@ViewScoped
托管的 bean。ExternalContext#getSession()
,true
第一次通过。ExternalContext#getSessionMap()
中。<h:form>
状态保存方式设置为“server”时,第一次返回带有a的页面。您可以通过ExternalContext#invalidateSession()
. 例如
public String logout() {
FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
return "login?faces-redirect=true";
}
记得在之后发送重定向,因为会话对象在当前请求的响应中仍然可用,但在下一个请求中不再可用。
如何访问存储在会话变量中的值?
只需将其设为@SessionScoped
托管 bean 的属性即可。或者,您也可以手动操作ExternalContext#getSessionMap()
,是的。
如何在 jsf 中销毁会话
这已经在第一个问题中得到了回答。