gpt4 book ai didi

java - HttpSession - 如何获取 session.setAttribute?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:10:33 27 4
gpt4 key购买 nike

我正在以这种方式创建 HttpSession 容器:

@SessionScoped
@ManagedBean(name="userManager")
public class UserManager extends Tools
{
/* [private variables] */
...
public String login()
{
/* [find user] */
...
FacesContext context = FacesContext.getCurrentInstance();
session = (HttpSession) context.getExternalContext().getSession(true);
session.setAttribute("id", user.getID());
session.setAttribute("username", user.getName());
...
System.out.println("Session id: " + session.getId());

我有 SessionListener,它应该给我有关创建的 session 的信息:

@WebListener
public class SessionListener implements HttpSessionListener
{
@Override
public void sessionCreated(HttpSessionEvent event) {
HttpSession session = event.getSession();
System.out.println("Session id: " + session.getId());
System.out.println("New session: " + session.isNew());
...
}
}

如何获取用户名属性?

如果我尝试使用 System.out.println("User name: "+ session.getAttribute("username")) 它会抛出 java.lang.NullPointerException..

最佳答案

HttpSessionListener 接口(interface)用于监视 session 在应用程序服务器上的创建和销毁时间。 HttpSessionEvent.getSession() 返回一个新创建或销毁的 session (取决于它是否分别由 sessionCreated/sessionDestroyed 调用)。

如果您想要现有 session ,则必须从请求中获取 session 。

HttpSession session = request.getSession(true).
String username = (String)session.getAttribute("username");

关于java - HttpSession - 如何获取 session.setAttribute?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7644968/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com