【问题标题】:Why session.getAttribute returns null?为什么 session.getAttribute 返回 null?
【发布时间】:2019-09-21 17:05:41
【问题描述】:

我已经使用 servlet 创建了一个基本的登录和注册页面。我的第一个 servlet 检查数据库是否存在用户名和密码,如果存在,则使用 session.setAttribute("user", username) 作为第二个 servlet。我的第二个 servlet 有 request.getAttribute("user") 代码。我的项目运行良好,但在第二个 servlet 中返回 "Welcome null" 用于输出。我怎样才能解决这个问题?谢谢...

Sv1.java

try {
    Connection Conn = DriverManager.getConnection("jdbc:mysql://localhost/?user=root");
    Statement s = Conn.createStatement();
    ResultSet rs = s.executeQuery("SELECT * FROM users.info");
    while (rs.next()) {
        if (username.equals(rs.getString("Username")) && password.equals(rs.getString("Password"))) {
            session.setAttribute("user", username);
            flag = true;
            response.sendRedirect("./Sv2");
        }
    }

    if (flag == false) {
        out.print("Invalid username or password");
    }
}

Sv2.java

PrintWriter out = response.getWriter();
HttpSession session = request.getSession(false);
if (session != null) {
    String name = (String) request.getAttribute("user");
    out.print("Welcome " + name);
}

【问题讨论】:

  • 在上面的示例中,您没有设置“用户名”的值。所以你可能在会话中放了一个空值。
  • String username = request.getParameter("username"); 我的 Sv1.java 实际上有这一行...谢谢。

标签: java session servlets null


【解决方案1】:

您正在将其设置为会话

session.setAttribute("user", username);

& 从请求中读取它

String name = (String)request.getAttribute("user"); 

【讨论】:

  • 试试session.getAttribute("user");
猜你喜欢
  • 2013-12-01
  • 2019-08-25
  • 1970-01-01
  • 1970-01-01
  • 2020-12-19
  • 2022-12-26
  • 2016-12-28
  • 2015-11-25
  • 2015-07-04
相关资源
最近更新 更多